@atlasauth/angular 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @atlasauth/angular changelog
2
2
 
3
+ ## 0.7.0
4
+ - **Referral attribution.** The prebuilt forms send the referral the visitor arrived with on sign-in and sign-up (through `@atlasauth/js` 0.13.0) when the instance has referrals on, and show the captcha for a referred sign-up when the instance requires it. New `AtlasOptions`: `referral?: false` and `referralConsent?`.
5
+
6
+ ## 0.6.1
7
+ - **`<atlas-user-profile>` can verify an address.** Each unverified email address now has a **Verify** button: it emails a code (`POST /v1/client/me/email_addresses/{id}/prepare_verification`) and shows a field to enter it (`attempt_verification`), then reloads the user. This includes the sign-up address on an app that does not require email verification, which now reads unverified until it is proven. New catalog keys: `userProfile.verify`, `userProfile.verifyConfirm`, `userProfile.verifyCodePlaceholder`, `userProfile.verifySendFailed`, `userProfile.verifyCodeRejected`.
8
+
3
9
  ## 0.6.0
4
10
  - **New `provideAtlas({ onSignOut })`, `AtlasService.signOut$` and `AtlasService.onSignOut(listener)`**: `onSignOut({ reason, sessionId })` fired once each time a signed-in user becomes signed out, on every
5
11
  path: `reason` is `user` (this tab), `other_tab`, `session_expired`, `revoked` (the session was ended elsewhere,
@@ -5,4 +5,4 @@ import { InjectionToken } from '@angular/core';
5
5
  * and read by {@link AtlasService}. Applications rarely inject this directly.
6
6
  */
7
7
  export const ATLAS_OPTIONS = new InjectionToken('ATLAS_OPTIONS');
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRsYXMuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdGxhcy5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXVDL0M7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBZSxlQUFlLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2lnbk91dEV2ZW50IH0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBBcHBlYXJhbmNlIH0gZnJvbSAnLi9hcHBlYXJhbmNlJztcbmltcG9ydCB0eXBlIHsgQ2F0YWxvZyB9IGZyb20gJy4vaTE4bic7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIEF0bGFzIEFuZ3VsYXIgU0RLIOKAlCB0aGUgQW5ndWxhciBhbmFsb2d1ZSBvZiB0aGUgcHJvcHNcbiAqIHBhc3NlZCB0byBSZWFjdCdzIGA8QXRsYXNQcm92aWRlcj5gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0bGFzT3B0aW9ucyB7XG4gIC8qKiBUaGUgaW5zdGFuY2UncyBwdWJsaXNoYWJsZSBrZXkgKGBwa1/igKZgKS4gUmVxdWlyZWQuICovXG4gIHB1Ymxpc2hhYmxlS2V5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaW5zdGFuY2UncyBGcm9udGVuZCBBUEk6IGFuIGFic29sdXRlIFVSTCBzdWNoIGFzXG4gICAqIGBcImh0dHBzOi8vYXV0aC5leGFtcGxlLmNvbVwiYCwgb3IgYFwic2FtZS1vcmlnaW5cImAgLyBhIHBhdGggc3VjaCBhcyBgXCIvYXRsYXNcImBcbiAgICogYmVoaW5kIGEgcmV2ZXJzZSBwcm94eSBvbiB0aGUgYXBwJ3Mgb3duIG9yaWdpbiAocmVxdWVzdHMgdGhlbiBnbyB0b1xuICAgKiBgL3YxLy4uLmAgb24gdGhlIGFwcCdzIGhvc3QpLiBSZXF1aXJlZCBhdCBydW50aW1lIOKAlCBgQXRsYXNTZXJ2aWNlYCB0aHJvd3MgYW5cbiAgICogYEF0bGFzQ29uZmlnRXJyb3JgIChgRlJPTlRFTkRfQVBJX1JFUVVJUkVEYCAvIGBGUk9OVEVORF9BUElfSU5WQUxJRGApIHdoZW5cbiAgICogaXQgaXMgbWlzc2luZyBvciBtYWxmb3JtZWQuIE9wdGlvbmFsIGluIHRoZSB0eXBlIG9ubHkgc28gZXhpc3RpbmcgY2FsbCBzaXRlc1xuICAgKiBrZWVwIGNvbXBpbGluZy5cbiAgICovXG4gIGZyb250ZW5kQXBpPzogc3RyaW5nO1xuICAvKiogRGVzaWduIHRva2VucyArIHBlci1lbGVtZW50IGNsYXNzIG92ZXJyaWRlcy4gU2VlIHtAbGluayBBcHBlYXJhbmNlfS4gKi9cbiAgYXBwZWFyYW5jZT86IEFwcGVhcmFuY2U7XG4gIC8qKiBBIGxvY2FsaXphdGlvbiBjYXRhbG9nIG1lcmdlZCBvdmVyIGBlbi1VU2AuICovXG4gIGxvY2FsaXphdGlvbj86IENhdGFsb2c7XG4gIC8qKlxuICAgKiBBIGBmZXRjaGAgaW1wbGVtZW50YXRpb24gdG8gdXNlIGluc3RlYWQgb2YgdGhlIGdsb2JhbCBvbmUg4oCUIGhhbmR5IGZvciBTU1JcbiAgICogb3IgdGVzdHMuIERlZmF1bHRzIHRvIGBnbG9iYWxUaGlzLmZldGNoYC5cbiAgICovXG4gIGZldGNoSW1wbD86IHR5cGVvZiBmZXRjaDtcbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIGVhY2ggdGltZSBhIHNpZ25lZC1pbiB1c2VyIGJlY29tZXMgc2lnbmVkIG91dCwgb24gZXZlcnkgcGF0aDpcbiAgICogYHJlYXNvbmAgaXMgYHVzZXJgLCBgb3RoZXJfdGFiYCwgYHNlc3Npb25fZXhwaXJlZGAsIGByZXZva2VkYCAoZW5kZWRcbiAgICogZWxzZXdoZXJlLCBzZWVuIG9uIHRoZSBuZXh0IHJlZnJlc2gpIG9yIGB1bmtub3duYC4gU2VlIGFsc29cbiAgICogYEF0bGFzU2VydmljZS5zaWduT3V0JGAuXG4gICAqL1xuICBvblNpZ25PdXQ/OiAoZXZlbnQ6IFNpZ25PdXRFdmVudCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBESSB0b2tlbiBjYXJyeWluZyB0aGUgcmVzb2x2ZWQge0BsaW5rIEF0bGFzT3B0aW9uc30uIFBvcHVsYXRlZCBieVxuICoge0BsaW5rIHByb3ZpZGVBdGxhc30gKHN0YW5kYWxvbmUpIG9yIHtAbGluayBBdGxhc01vZHVsZS5mb3JSb290fSAoTmdNb2R1bGUpXG4gKiBhbmQgcmVhZCBieSB7QGxpbmsgQXRsYXNTZXJ2aWNlfS4gQXBwbGljYXRpb25zIHJhcmVseSBpbmplY3QgdGhpcyBkaXJlY3RseS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFUTEFTX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXRsYXNPcHRpb25zPignQVRMQVNfT1BUSU9OUycpO1xuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRsYXMuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdGxhcy5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQW1EL0M7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBZSxlQUFlLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUmVmZXJyYWxDb25zZW50LCBTaWduT3V0RXZlbnQgfSBmcm9tICdAYXRsYXNhdXRoL2pzJztcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEFwcGVhcmFuY2UgfSBmcm9tICcuL2FwcGVhcmFuY2UnO1xuaW1wb3J0IHR5cGUgeyBDYXRhbG9nIH0gZnJvbSAnLi9pMThuJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgQXRsYXMgQW5ndWxhciBTREsg4oCUIHRoZSBBbmd1bGFyIGFuYWxvZ3VlIG9mIHRoZSBwcm9wc1xuICogcGFzc2VkIHRvIFJlYWN0J3MgYDxBdGxhc1Byb3ZpZGVyPmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRsYXNPcHRpb25zIHtcbiAgLyoqIFRoZSBpbnN0YW5jZSdzIHB1Ymxpc2hhYmxlIGtleSAoYHBrX+KApmApLiBSZXF1aXJlZC4gKi9cbiAgcHVibGlzaGFibGVLZXk6IHN0cmluZztcbiAgLyoqXG4gICAqIFJlZmVycmFsIGF0dHJpYnV0aW9uOiB0aGUgcHJlYnVpbHQgZm9ybXMgc2VuZCB0aGUgcmVmZXJyYWwgdGhlIHZpc2l0b3JcbiAgICogYXJyaXZlZCB3aXRoIG9uIHNpZ24taW4gLyBzaWduLXVwIHdoZW4gdGhlIGluc3RhbmNlIGhhcyByZWZlcnJhbHMgb24uXG4gICAqIGBmYWxzZWAgdHVybnMgdGhhdCBvZmYuXG4gICAqL1xuICByZWZlcnJhbD86IGZhbHNlO1xuICAvKipcbiAgICogVGhlIGFwcCdzIG93biBjb25zZW50IGRlY2lzaW9uIGZvciB0aGUgcmVmZXJyYWwgdHJhY2tpbmcgY29va2llLCB1c2VkIG9ubHlcbiAgICogd2hlbiBDb29raWUgTXVuY2ggaXMgbm90IG9uIHRoZSBwYWdlOiBgJ2dyYW50ZWQnYCAob3IgYSBmdW5jdGlvbiByZXR1cm5pbmdcbiAgICogaXQpIGxldHMgdGhlIGZvcm1zIHJlYWQgdGhlIGNvb2tpZS4gRGVmYXVsdDogdGhlIGNvb2tpZSBpcyBub3QgcmVhZC5cbiAgICovXG4gIHJlZmVycmFsQ29uc2VudD86IFJlZmVycmFsQ29uc2VudDtcbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSdzIEZyb250ZW5kIEFQSTogYW4gYWJzb2x1dGUgVVJMIHN1Y2ggYXNcbiAgICogYFwiaHR0cHM6Ly9hdXRoLmV4YW1wbGUuY29tXCJgLCBvciBgXCJzYW1lLW9yaWdpblwiYCAvIGEgcGF0aCBzdWNoIGFzIGBcIi9hdGxhc1wiYFxuICAgKiBiZWhpbmQgYSByZXZlcnNlIHByb3h5IG9uIHRoZSBhcHAncyBvd24gb3JpZ2luIChyZXF1ZXN0cyB0aGVuIGdvIHRvXG4gICAqIGAvdjEvLi4uYCBvbiB0aGUgYXBwJ3MgaG9zdCkuIFJlcXVpcmVkIGF0IHJ1bnRpbWUg4oCUIGBBdGxhc1NlcnZpY2VgIHRocm93cyBhblxuICAgKiBgQXRsYXNDb25maWdFcnJvcmAgKGBGUk9OVEVORF9BUElfUkVRVUlSRURgIC8gYEZST05URU5EX0FQSV9JTlZBTElEYCkgd2hlblxuICAgKiBpdCBpcyBtaXNzaW5nIG9yIG1hbGZvcm1lZC4gT3B0aW9uYWwgaW4gdGhlIHR5cGUgb25seSBzbyBleGlzdGluZyBjYWxsIHNpdGVzXG4gICAqIGtlZXAgY29tcGlsaW5nLlxuICAgKi9cbiAgZnJvbnRlbmRBcGk/OiBzdHJpbmc7XG4gIC8qKiBEZXNpZ24gdG9rZW5zICsgcGVyLWVsZW1lbnQgY2xhc3Mgb3ZlcnJpZGVzLiBTZWUge0BsaW5rIEFwcGVhcmFuY2V9LiAqL1xuICBhcHBlYXJhbmNlPzogQXBwZWFyYW5jZTtcbiAgLyoqIEEgbG9jYWxpemF0aW9uIGNhdGFsb2cgbWVyZ2VkIG92ZXIgYGVuLVVTYC4gKi9cbiAgbG9jYWxpemF0aW9uPzogQ2F0YWxvZztcbiAgLyoqXG4gICAqIEEgYGZldGNoYCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgaW5zdGVhZCBvZiB0aGUgZ2xvYmFsIG9uZSDigJQgaGFuZHkgZm9yIFNTUlxuICAgKiBvciB0ZXN0cy4gRGVmYXVsdHMgdG8gYGdsb2JhbFRoaXMuZmV0Y2hgLlxuICAgKi9cbiAgZmV0Y2hJbXBsPzogdHlwZW9mIGZldGNoO1xuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgZWFjaCB0aW1lIGEgc2lnbmVkLWluIHVzZXIgYmVjb21lcyBzaWduZWQgb3V0LCBvbiBldmVyeSBwYXRoOlxuICAgKiBgcmVhc29uYCBpcyBgdXNlcmAsIGBvdGhlcl90YWJgLCBgc2Vzc2lvbl9leHBpcmVkYCwgYHJldm9rZWRgIChlbmRlZFxuICAgKiBlbHNld2hlcmUsIHNlZW4gb24gdGhlIG5leHQgcmVmcmVzaCkgb3IgYHVua25vd25gLiBTZWUgYWxzb1xuICAgKiBgQXRsYXNTZXJ2aWNlLnNpZ25PdXQkYC5cbiAgICovXG4gIG9uU2lnbk91dD86IChldmVudDogU2lnbk91dEV2ZW50KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIERJIHRva2VuIGNhcnJ5aW5nIHRoZSByZXNvbHZlZCB7QGxpbmsgQXRsYXNPcHRpb25zfS4gUG9wdWxhdGVkIGJ5XG4gKiB7QGxpbmsgcHJvdmlkZUF0bGFzfSAoc3RhbmRhbG9uZSkgb3Ige0BsaW5rIEF0bGFzTW9kdWxlLmZvclJvb3R9IChOZ01vZHVsZSlcbiAqIGFuZCByZWFkIGJ5IHtAbGluayBBdGxhc1NlcnZpY2V9LiBBcHBsaWNhdGlvbnMgcmFyZWx5IGluamVjdCB0aGlzIGRpcmVjdGx5LlxuICovXG5leHBvcnQgY29uc3QgQVRMQVNfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBdGxhc09wdGlvbnM+KCdBVExBU19PUFRJT05TJyk7XG4iXX0=
@@ -3,7 +3,7 @@ import { isPlatformBrowser } from '@angular/common';
3
3
  import { toSignal } from '@angular/core/rxjs-interop';
4
4
  import { BehaviorSubject, Subject, combineLatest } from 'rxjs';
5
5
  import { distinctUntilChanged, map } from 'rxjs/operators';
6
- import { FapiClient, SignOutGuard, catalogLocale, localizedErrorMessage, TokenCache, closeOAuthPopupAfterSignIn, completeOAuthPopupLanding, getProviderToken as fetchProviderToken, mapOAuthPopupPayload, msUntilRefresh, readExpiry, readRedirectResult, resolveFrontendApi, stripRedirectParams, SDK_HEADER, SignOutNotifier, getTemplateToken, reportSdkAdvisory, sdkHeaderValue, signOutReasonFromClient, } from '@atlasauth/js';
6
+ import { FapiClient, SignOutGuard, catalogLocale, localizedErrorMessage, TokenCache, closeOAuthPopupAfterSignIn, completeOAuthPopupLanding, getProviderToken as fetchProviderToken, mapOAuthPopupPayload, msUntilRefresh, readExpiry, readRedirectResult, resolveFrontendApi, stripRedirectParams, SDK_HEADER, SignOutNotifier, getTemplateToken, reportSdkAdvisory, sdkHeaderValue, signOutReasonFromClient, configureReferralCapture, } from '@atlasauth/js';
7
7
  import { evaluate } from '@atlasauth/authz';
8
8
  import { ATLAS_OPTIONS } from './atlas.config';
9
9
  import { cssVariables, instanceDesignFrom, renderAppearance, resolveTokens, } from './appearance';
@@ -118,6 +118,8 @@ export class AtlasService {
118
118
  this.catalog = options.localization ? withFallback(options.localization) : EN_US;
119
119
  this.errorCatalog = options.localization ?? EN_US;
120
120
  this.requestLocale = catalogLocale(options.localization);
121
+ // Referral attribution: app-wide options every FAPI client on the page falls back to.
122
+ configureReferralCapture({ referral: options.referral, referralConsent: options.referralConsent });
121
123
  this.fapiClient = new FapiClient({
122
124
  publishableKey: this.publishableKey,
123
125
  baseUrl: this.baseUrl,
@@ -484,4 +486,4 @@ function decodeClaims(jwt) {
484
486
  return null;
485
487
  }
486
488
  }
487
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRsYXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYXRsYXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUVWLFdBQVcsRUFFWCxRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFDTCxVQUFVLEVBQ1YsWUFBWSxFQUNaLGFBQWEsRUFDYixxQkFBcUIsRUFFckIsVUFBVSxFQUNWLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsZ0JBQWdCLElBQUksa0JBQWtCLEVBQ3RDLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBS25CLFVBQVUsRUFDVixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsdUJBQXVCLEdBSXhCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQXlCLE1BQU0sa0JBQWtCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixhQUFhLEdBSWQsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQWdCLE1BQU0sUUFBUSxDQUFDO0FBUTNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFFOUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBRUgsTUFBTSxPQUFPLFlBQVk7SUFDTixPQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsU0FBUyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUvQyxPQUFPLENBQVM7SUFDaEIsY0FBYyxDQUFTO0lBQ3ZCLE9BQU8sQ0FBZTtJQUV0QixLQUFLLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUN6QixVQUFVLENBQWE7SUFDaEMsWUFBWSxHQUF5QyxJQUFJLENBQUM7SUFFbEU7Ozs7O09BS0c7SUFDYyxLQUFLLENBQWU7SUFDN0IsbUJBQW1CLEdBQXdCLElBQUksQ0FBQztJQUV2QyxPQUFPLENBQVU7SUFDbEMsNEZBQTRGO0lBQzNFLFlBQVksQ0FBVTtJQUN2QywrRkFBK0Y7SUFDOUUsYUFBYSxDQUFxQjtJQUVuRDs7Ozs7T0FLRztJQUNNLGNBQWMsQ0FBd0M7SUFFL0QsK0VBQStFO0lBRTlELE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBYSxTQUFTLENBQUMsQ0FBQztJQUNyRCxLQUFLLEdBQUcsSUFBSSxlQUFlLENBQW1CLElBQUksQ0FBQyxDQUFDO0lBQ3BELFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBc0IsSUFBSSxDQUFDLENBQUM7SUFDMUQsT0FBTyxHQUFHLElBQUksZUFBZSxDQUF1QixJQUFJLENBQUMsQ0FBQztJQUMxRCxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQWdDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLDJDQUEyQztJQUMxQixRQUFRLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUNqQyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7SUFDeEQ7Ozs7O09BS0c7SUFDTSxRQUFRLEdBQTZCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFM0UsOEVBQThFO0lBQ3JFLE9BQU8sR0FBMkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5RCxLQUFLLEdBQWlDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEUsUUFBUSxHQUFvQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pFLE9BQU8sR0FBcUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4RSxZQUFZLEdBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFbkM7Ozs7T0FJRztJQUNNLFNBQVMsR0FBd0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxFQUMzQixvQkFBb0IsRUFBRSxDQUN2QixDQUFDO0lBRU8sV0FBVyxHQUF3QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDM0QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssV0FBVyxDQUFDLEVBQzdCLG9CQUFvQixFQUFFLENBQ3ZCLENBQUM7SUFFRixtRkFBbUY7SUFDMUUsYUFBYSxHQUFtRCxhQUFhLENBQUM7UUFDckYsSUFBSSxDQUFDLFlBQVk7UUFDakIsSUFBSSxDQUFDLE9BQU87S0FDYixDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FDRCxDQUFDLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FDeEIsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FDeEUsQ0FDRixDQUFDO0lBRUYsK0VBQStFO0lBRXRFLE1BQU0sR0FBdUIsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNqRixJQUFJLEdBQTZCLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUUsT0FBTyxHQUFnQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLE1BQU0sR0FBaUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RixXQUFXLEdBQTBDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1FBQ3hGLFlBQVksRUFBRSxFQUFtQztLQUNsRCxDQUFDLENBQUM7SUFDTSxRQUFRLEdBQW9CLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDeEUsVUFBVSxHQUFvQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLFdBQVcsQ0FBQyxDQUFDO0lBQzVFLFlBQVksR0FBK0MsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNoRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzdFLENBQUMsQ0FBQyxDQUFDO0lBRUg7UUFDRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUM3Qyw4RUFBOEU7UUFDOUUsZ0VBQWdFO1FBQ2hFLElBQUksQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUNyRCxTQUFTLEVBQUUsd0NBQXdDO1NBQ3BELENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUE4QixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRTVGLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUM7UUFDbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXpELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUM7WUFDL0IsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDdkIsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQzFCLEdBQUcsRUFBRSxpQkFBaUI7U0FDdkIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxPQUFPLENBQUMsU0FBUztZQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVsRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksWUFBWSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztZQUM5QyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDMUIsQ0FBQyxDQUFDO1FBRUgsOEVBQThFO1FBQzlFLCtFQUErRTtRQUMvRSx5REFBeUQ7UUFDekQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXhFLDBFQUEwRTtRQUMxRSw4RUFBOEU7UUFDOUUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsMkVBQTJFO1lBQzNFLHVFQUF1RTtZQUN2RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQ3pDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFDN0QsR0FBRyxFQUFFO2dCQUNILElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNuQixLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyQixDQUFDLENBQ0YsQ0FBQztZQUNGLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCwrRUFBK0U7SUFFL0UsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELHdHQUF3RztJQUN4RyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsS0FBNEM7UUFDcEQsT0FBTyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELDBFQUEwRTtJQUMxRSxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELHNFQUFzRTtJQUN0RSxtQkFBbUI7UUFDakIsT0FBTyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsQ0FBQyxjQUFzQztRQUNyRCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLGNBQWMsSUFBSSxJQUFJLEVBQUU7WUFDdkUsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGtCQUFrQjtRQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLGNBQWMsS0FBSyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDbkUsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDbkQsT0FBTyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDeEUsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxxRUFBcUU7SUFDckUsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLFVBQVUsQ0FBQztZQUNwQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYTtZQUMxQixHQUFHLEVBQUUsaUJBQWlCO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwrRUFBK0U7SUFFL0U7OztPQUdHO0lBQ0gsaUdBQWlHO0lBQ2pHLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBK0I7UUFDNUMsSUFBSSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQztZQUNsRixPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEgsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksTUFBTTtZQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUU5QixNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHlGQUF5RjtJQUN6RixTQUFTLENBQUMsUUFBeUI7UUFDakMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDL0IsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCwyRUFBMkU7SUFDM0UsR0FBRyxDQUFDLFNBQTJCO1FBQzdCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQTBCLEVBQUU7UUFDeEMsaUVBQWlFO1FBQ2pFLDZEQUE2RDtRQUM3RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDO1FBQ2xGLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFBRSxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxjQUE2QjtRQUN2RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUVyQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLE9BQU8sQ0FBQyxTQUFTLFFBQVEsRUFBRTtZQUNqRixNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLENBQUM7U0FDakUsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQUUsT0FBTztRQUV6QixNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFvQixDQUFDO1FBQ3hELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELDJFQUEyRTtJQUMzRSxLQUFLLENBQUMsTUFBTTtRQUNWLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUVqRCxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUtsQyxDQUFDO1lBRUYsb0VBQW9FO1lBQ3BFLG1FQUFtRTtZQUNuRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN0RSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDakYsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRXRCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzVELElBQUksSUFBSSxDQUFDLEdBQUc7Z0JBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCx3RUFBd0U7WUFDeEUscUVBQXFFO1lBQ3JFLGlFQUFpRTtZQUNqRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLFNBQVM7Z0JBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEUsQ0FBQztJQUNILENBQUM7SUFFRCwrRUFBK0U7SUFFL0U7Ozs7OztPQU1HO0lBQ0ssS0FBSyxDQUFDLElBQUk7UUFDaEIsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRCxJQUFJLE1BQU0sR0FBMEIsT0FBTyxDQUFDO1FBRTVDLDJFQUEyRTtRQUMzRSx5RUFBeUU7UUFDekUsMEVBQTBFO1FBQzFFLDJFQUEyRTtRQUMzRSxjQUFjO1FBQ2QsTUFBTSxPQUFPLEdBQUcsTUFBTSx5QkFBeUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQyxNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsSUFBSSxPQUFPLEVBQUUsTUFBTSxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwRSxDQUFDO2lCQUFNLElBQUksT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDO2dCQUNwQyw2RUFBNkU7Z0JBQzdFLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDakQsT0FBTztZQUNULENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ25CLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtnQkFDOUQsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQzlFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUIsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzdGLENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQiw0RUFBNEU7UUFDNUUsK0RBQStEO1FBQy9ELElBQUksU0FBUztZQUFFLEtBQUssMEJBQTBCLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUQsT0FBTyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDckMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakQsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUM7SUFFTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQVksRUFBRSxJQUFrQjtRQUNqRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxFQUFFO1lBQzVELEdBQUcsSUFBSTtZQUNQLHlFQUF5RTtZQUN6RSx5QkFBeUI7WUFDekIsV0FBVyxFQUFFLFNBQVM7WUFDdEIsT0FBTyxFQUFFO2dCQUNQLG1CQUFtQixFQUFFLElBQUksQ0FBQyxjQUFjO2dCQUN4QywwRUFBMEU7Z0JBQzFFLENBQUMsVUFBVSxDQUFDLEVBQUUsY0FBYyxDQUFDLGlCQUFpQixDQUFDO2dCQUMvQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM3RCxHQUFHLElBQUksRUFBRSxPQUFPO2FBQ2pCO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsaUJBQWlCLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDL0MsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUFXLEVBQUUsU0FBaUI7UUFDL0MsMEVBQTBFO1FBQzFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO1lBQUUsT0FBTztRQUM5QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBRXZCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxLQUFLLENBQUMsT0FBTztRQUNuQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUVyQixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLE9BQU8sQ0FBQyxTQUFTLFNBQVMsRUFBRTtnQkFDbEYsTUFBTSxFQUFFLE1BQU07YUFDZixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRXBELE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQXdDLENBQUM7WUFDNUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGdFQUFnRTtZQUNoRSxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGVBQWUsQ0FBQyxNQUFzQjtRQUM1Qyx3RUFBd0U7UUFDeEUsTUFBTSxLQUFLLEdBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUssV0FBVztZQUNoQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDO1lBQ25FLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQixJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDOztZQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCwrRUFBK0U7SUFDdkUsZUFBZTtRQUNyQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLFdBQVc7WUFBRSxPQUFPO1FBRS9DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBRW5CLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7d0dBamZVLFlBQVk7NEdBQVosWUFBWSxjQURDLE1BQU07OzRGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUFxZmxDLDZFQUE2RTtBQUM3RSxTQUFTLFlBQVksQ0FBQyxHQUFXO0lBQy9CLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNwQyxJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FDckMsQ0FBQztJQUNyQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIE9uRGVzdHJveSxcbiAgUExBVEZPUk1fSUQsXG4gIFNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEZhcGlDbGllbnQsXG4gIFNpZ25PdXRHdWFyZCxcbiAgY2F0YWxvZ0xvY2FsZSxcbiAgbG9jYWxpemVkRXJyb3JNZXNzYWdlLFxuICB0eXBlIEVycm9yTGlrZSxcbiAgVG9rZW5DYWNoZSxcbiAgY2xvc2VPQXV0aFBvcHVwQWZ0ZXJTaWduSW4sXG4gIGNvbXBsZXRlT0F1dGhQb3B1cExhbmRpbmcsXG4gIGdldFByb3ZpZGVyVG9rZW4gYXMgZmV0Y2hQcm92aWRlclRva2VuLFxuICBtYXBPQXV0aFBvcHVwUGF5bG9hZCxcbiAgbXNVbnRpbFJlZnJlc2gsXG4gIHJlYWRFeHBpcnksXG4gIHJlYWRSZWRpcmVjdFJlc3VsdCxcbiAgcmVzb2x2ZUZyb250ZW5kQXBpLFxuICBzdHJpcFJlZGlyZWN0UGFyYW1zLFxuICB0eXBlIFByb3ZpZGVyVG9rZW4sXG4gIHR5cGUgUmVkaXJlY3RSZXN1bHQsXG4gIHR5cGUgU2lnbk91dE9wdGlvbnMsXG4gIHR5cGUgU2lnbk91dFJlc3VsdCxcbiAgU0RLX0hFQURFUixcbiAgU2lnbk91dE5vdGlmaWVyLFxuICBnZXRUZW1wbGF0ZVRva2VuLFxuICByZXBvcnRTZGtBZHZpc29yeSxcbiAgc2RrSGVhZGVyVmFsdWUsXG4gIHNpZ25PdXRSZWFzb25Gcm9tQ2xpZW50LFxuICB0eXBlIFNpZ25PdXRFdmVudCxcbiAgdHlwZSBTaWduT3V0TGlzdGVuZXIsXG4gIHR5cGUgU2lnbk91dFJlYXNvbixcbn0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5pbXBvcnQgeyBldmFsdWF0ZSwgdHlwZSBQcm90ZWN0Q29uZGl0aW9uIH0gZnJvbSAnQGF0bGFzYXV0aC9hdXRoeic7XG5pbXBvcnQgeyBBVExBU19PUFRJT05TIH0gZnJvbSAnLi9hdGxhcy5jb25maWcnO1xuaW1wb3J0IHtcbiAgY3NzVmFyaWFibGVzLFxuICBpbnN0YW5jZURlc2lnbkZyb20sXG4gIHJlbmRlckFwcGVhcmFuY2UsXG4gIHJlc29sdmVUb2tlbnMsXG4gIHR5cGUgQXBwZWFyYW5jZSxcbiAgdHlwZSBBcHBlYXJhbmNlUmVuZGVyLFxuICB0eXBlIEluc3RhbmNlRGVzaWduLFxufSBmcm9tICcuL2FwcGVhcmFuY2UnO1xuaW1wb3J0IHsgRU5fVVMsIHdpdGhGYWxsYmFjaywgdHlwZSBDYXRhbG9nIH0gZnJvbSAnLi9pMThuJztcbmltcG9ydCB0eXBlIHtcbiAgQXRsYXNPcmdhbml6YXRpb25NZW1iZXJzaGlwLFxuICBBdGxhc1Nlc3Npb24sXG4gIEF0bGFzVXNlcixcbiAgQXV0aFN0YXR1cyxcbiAgU2Vzc2lvbkNsYWltcyxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBBVExBU19BTkdVTEFSX1NESyB9IGZyb20gJy4vdmVyc2lvbic7XG5cbi8qKlxuICogYEF0bGFzU2VydmljZWAg4oCUIHRoZSBBbmd1bGFyIHBlZXIgb2YgUmVhY3QncyBgPEF0bGFzUHJvdmlkZXI+YCArIGhvb2tzLlxuICpcbiAqIEl0IGhvbGRzIGV4YWN0bHkgb25lIHRoaW5nIHRoYXQgbWF0dGVycyBpbiBtZW1vcnk6IHRoZSBzaG9ydC1saXZlZCBKV1QsIGluIGFcbiAqIHtAbGluayBUb2tlbkNhY2hlfS4gTm90IGxvY2FsU3RvcmFnZSwgbm90IGEgY29va2llIHRoaXMgY29kZSB3cml0ZXMg4oCUIHRoZVxuICogcmVmcmVzaCB0b2tlbiBpcyBIdHRwT25seSBzbyBicm93c2VyIHNjcmlwdCBuZXZlciB0b3VjaGVzIGl0LCBhbmQgdGhlIEpXVFxuICogbGl2ZXMgb25seSBhcyBsb25nIGFzIHRoZSB0YWIuIEFueXRoaW5nIHBlcnNpc3RlZCB3b3VsZCBzdXJ2aXZlIHRoZSB0YWIgYW5kXG4gKiBiZWNvbWUgdGhlIGZpcnN0IHRoaW5nIGFuIFhTUyByZWFkcy5cbiAqXG4gKiBSZWFjdGl2ZSBhdXRoIHN0YXRlIGlzIGV4cG9zZWQgdHdvIHdheXMgc28gY2FsbGVycyBjYW4gcGljayB0aGVpciBpZGlvbTpcbiAqICAtIFJ4SlMgb2JzZXJ2YWJsZXMgKGB1c2VyJGAsIGBzZXNzaW9uJGAsIGBpc1NpZ25lZEluJGAsIOKApikg4oCUIHRoZSBwcmltYXJ5IEFQSSxcbiAqICAgIHRoZSBhbmFsb2d1ZSBvZiB0aGUgUmVhY3QgaG9va3MnIHJldHVybiB2YWx1ZXMuXG4gKiAgLSBBbmd1bGFyIHNpZ25hbHMgKGB1c2VyYCwgYHNlc3Npb25gLCBgaXNTaWduZWRJbmAsIOKApikg4oCUIHRoZSBzYW1lIHZhbHVlcyBhc1xuICogICAgYFNpZ25hbDxUPmAsIGZvciB0ZW1wbGF0ZXMgYW5kIGBjb21wdXRlZCgpYC5cbiAqXG4gKiBUaGUgaW1wZXJhdGl2ZSBtZXRob2RzIChgc2lnbk91dGAsIGBnZXRUb2tlbmAsIGBnZXRQcm92aWRlclRva2VuYCxcbiAqIGBzZXRBY3RpdmVPcmdhbml6YXRpb25gLCBgcmVsb2FkYCkgbWlycm9yIHRoZSBhY3Rpb25zIHRoZSBob29rcyByZXR1cm4uXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXRsYXNTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KEFUTEFTX09QVElPTlMpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHVibGlzaGFibGVLZXk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBkb0ZldGNoOiB0eXBlb2YgZmV0Y2g7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjYWNoZSA9IG5ldyBUb2tlbkNhY2hlKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmFwaUNsaWVudDogRmFwaUNsaWVudDtcbiAgcHJpdmF0ZSByZWZyZXNoVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXNzaW9ucyB0aGlzIGJyb3dzZXIgc2lnbmVkIG91dCBvZiAodG9tYnN0b25lcyBpbiBsb2NhbFN0b3JhZ2UsIHBlclxuICAgKiBGcm9udGVuZCBBUEkgb3JpZ2luKSwgdGhlIHJldm9rZSBhbmQgaXRzIGJhY2tncm91bmQgcmUtdHJpZXMuIEV2ZXJ5IHJlbG9hZCAvXG4gICAqIHJlZnJlc2ggYXNrcyBpdCBiZWZvcmUgYWRvcHRpbmcgYSBzZXNzaW9uLCBzbyBhIHNpZ24tb3V0IHRoZSBzZXJ2ZXIgbmV2ZXJcbiAgICogY29uZmlybWVkIGlzIG5vdCB1bmRvbmUgYnkgdGhlIHN0aWxsLXZhbGlkIHJlZnJlc2ggY29va2llLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBndWFyZDogU2lnbk91dEd1YXJkO1xuICBwcml2YXRlIHN0b3BXYXRjaGluZ1NpZ25PdXQ6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2F0YWxvZzogQ2F0YWxvZztcbiAgLyoqIFRoZSBsYW5ndWFnZSBsYXllciBvZiBgY2F0YWxvZ2AgKHRoZSBgbG9jYWxpemF0aW9uYCBidW5kbGUgYWxvbmU7IGBFTl9VU2Agd2hlbiBub25lKS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvckNhdGFsb2c6IENhdGFsb2c7XG4gIC8qKiBTZW50IHRvIHRoZSBGcm9udGVuZCBBUEkgYXMgYEFjY2VwdC1MYW5ndWFnZWA6IHRoZSBgbG9jYWxpemF0aW9uYCBidW5kbGUncyBgbG9jYWxlYCB0YWcuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdExvY2FsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIHNpZ24taW4gYXR0ZW1wdCBoYW5kZWQgYmFjayBieSBhbiBPQXV0aCByZWRpcmVjdCB0aGF0IHN0aWxsIG5lZWRzIGEgc2Vjb25kXG4gICAqIGZhY3RvciAobm8gc2Vzc2lvbiB3YXMgaXNzdWVkKS4gTnVsbCBpbiB0aGUgb3JkaW5hcnkgY2FzZTsgdGhlIGA8YXRsYXMtc2lnbi1pbj5gXG4gICAqIGZsb3cgc2VlZHMgaXRzZWxmIGZyb20gdGhpcyBzbyB0aGUgdXNlciByZXN1bWVzIGF0IHRoZSAyRkEgc3RlcC4gQ2FwdHVyZWRcbiAgICogb25jZSwgc3luY2hyb25vdXNseSwgYXQgY29uc3RydWN0aW9uIOKAlCBiZWZvcmUgYW55IGZsb3cgY29tcG9uZW50IHJlYWRzIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGVuZGluZ0F0dGVtcHQ6IHsgaWQ6IHN0cmluZzsgc3RhdHVzOiBzdHJpbmcgfSB8IG51bGw7XG5cbiAgLy8gLS0tIFJlYWN0aXZlIHN0YXRlIChzb3VyY2Ugb2YgdHJ1dGgpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXR1cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFN0YXR1cz4oJ2xvYWRpbmcnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXNlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXRsYXNVc2VyIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF0bGFzU2Vzc2lvbiB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jbGFpbXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlc3Npb25DbGFpbXMgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWVtYmVyc2hpcHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF0bGFzT3JnYW5pemF0aW9uTWVtYmVyc2hpcFtdPihbXSk7XG4gIC8vIEFUTC1TLTMwIHNpZ24tb3V0IGV2ZW50cywgb24gZXZlcnkgcGF0aC5cbiAgcHJpdmF0ZSByZWFkb25seSBub3RpZmllciA9IG5ldyBTaWduT3V0Tm90aWZpZXIoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2lnbk91dCA9IG5ldyBTdWJqZWN0PFNpZ25PdXRFdmVudD4oKTtcbiAgLyoqXG4gICAqIEVtaXRzIG9uY2UgZWFjaCB0aW1lIGEgc2lnbmVkLWluIHVzZXIgYmVjb21lcyBzaWduZWQgb3V0OiBgcmVhc29uYCBpc1xuICAgKiBgdXNlcmAsIGBvdGhlcl90YWJgLCBgc2Vzc2lvbl9leHBpcmVkYCwgYHJldm9rZWRgIChlbmRlZCBlbHNld2hlcmUsIHNlZW4gb25cbiAgICogdGhlIG5leHQgdG9rZW4gcmVmcmVzaCkgb3IgYHVua25vd25gLiBUaGUgcGxhY2UgdG8gcmVzZXQgYW4gZW1iZWRkZWRcbiAgICogdGhpcmQgcGFydHkgKGEgY2hhdCB3aWRnZXQpLiBBbHNvIGRpc3BhdGNoZWQgYXMgYGF0bGFzOnNpZ25vdXRgIG9uIGB3aW5kb3dgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2lnbk91dCQ6IE9ic2VydmFibGU8U2lnbk91dEV2ZW50PiA9IHRoaXMuX3NpZ25PdXQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqIFRoZSB0aHJlZS1zdGF0ZSBhdXRoIGxpZmVjeWNsZTogYGxvYWRpbmdgIOKGkiBgc2lnbmVkX2luYCB8IGBzaWduZWRfb3V0YC4gKi9cbiAgcmVhZG9ubHkgc3RhdHVzJDogT2JzZXJ2YWJsZTxBdXRoU3RhdHVzPiA9IHRoaXMuX3N0YXR1cy5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgdXNlciQ6IE9ic2VydmFibGU8QXRsYXNVc2VyIHwgbnVsbD4gPSB0aGlzLl91c2VyLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBzZXNzaW9uJDogT2JzZXJ2YWJsZTxBdGxhc1Nlc3Npb24gfCBudWxsPiA9IHRoaXMuX3Nlc3Npb24uYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IGNsYWltcyQ6IE9ic2VydmFibGU8U2Vzc2lvbkNsYWltcyB8IG51bGw+ID0gdGhpcy5fY2xhaW1zLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBtZW1iZXJzaGlwcyQ6IE9ic2VydmFibGU8QXRsYXNPcmdhbml6YXRpb25NZW1iZXJzaGlwW10+ID1cbiAgICB0aGlzLl9tZW1iZXJzaGlwcy5hc09ic2VydmFibGUoKTtcblxuICAvKipcbiAgICogVHJ1ZSBvbmNlIHRoZSBTREsgaGFzIGZpbmlzaGVkIGl0cyBmaXJzdCBib290LiBEaXN0aW5ndWlzaGluZyBcInN0aWxsIGxvYWRpbmdcIlxuICAgKiBmcm9tIFwic2lnbmVkIG91dFwiIGlzIHdoYXQgbGV0cyBhIHRlbXBsYXRlIGF2b2lkIHRoZSBmbGFzaCBvZiBhIHNpZ24taW4gZm9ybVxuICAgKiBvbiBldmVyeSBwYWdlIGxvYWQuXG4gICAqL1xuICByZWFkb25seSBpc0xvYWRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnN0YXR1cyQucGlwZShcbiAgICBtYXAoKHMpID0+IHMgIT09ICdsb2FkaW5nJyksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgKTtcblxuICByZWFkb25seSBpc1NpZ25lZEluJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuc3RhdHVzJC5waXBlKFxuICAgIG1hcCgocykgPT4gcyA9PT0gJ3NpZ25lZF9pbicpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICk7XG5cbiAgLyoqIFRoZSBhY3RpdmUgb3JnYW5pemF0aW9uIG1lbWJlcnNoaXAsIGRlcml2ZWQgZnJvbSB0aGUgdG9rZW4ncyBgb3JnX2lkYCBjbGFpbS4gKi9cbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uJDogT2JzZXJ2YWJsZTxBdGxhc09yZ2FuaXphdGlvbk1lbWJlcnNoaXAgfCBudWxsPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX21lbWJlcnNoaXBzLFxuICAgIHRoaXMuX2NsYWltcyxcbiAgXSkucGlwZShcbiAgICBtYXAoXG4gICAgICAoW21lbWJlcnNoaXBzLCBjbGFpbXNdKSA9PlxuICAgICAgICBtZW1iZXJzaGlwcy5maW5kKChtKSA9PiBtLm9yZ2FuaXphdGlvbi5pZCA9PT0gY2xhaW1zPy5vcmdfaWQpID8/IG51bGwsXG4gICAgKSxcbiAgKTtcblxuICAvLyAtLS0gU2lnbmFsIG1pcnJvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcmVhZG9ubHkgc3RhdHVzOiBTaWduYWw8QXV0aFN0YXR1cz4gPSB0b1NpZ25hbCh0aGlzLnN0YXR1cyQsIHsgaW5pdGlhbFZhbHVlOiAnbG9hZGluZycgfSk7XG4gIHJlYWRvbmx5IHVzZXI6IFNpZ25hbDxBdGxhc1VzZXIgfCBudWxsPiA9IHRvU2lnbmFsKHRoaXMudXNlciQsIHsgaW5pdGlhbFZhbHVlOiBudWxsIH0pO1xuICByZWFkb25seSBzZXNzaW9uOiBTaWduYWw8QXRsYXNTZXNzaW9uIHwgbnVsbD4gPSB0b1NpZ25hbCh0aGlzLnNlc3Npb24kLCB7IGluaXRpYWxWYWx1ZTogbnVsbCB9KTtcbiAgcmVhZG9ubHkgY2xhaW1zOiBTaWduYWw8U2Vzc2lvbkNsYWltcyB8IG51bGw+ID0gdG9TaWduYWwodGhpcy5jbGFpbXMkLCB7IGluaXRpYWxWYWx1ZTogbnVsbCB9KTtcbiAgcmVhZG9ubHkgbWVtYmVyc2hpcHM6IFNpZ25hbDxBdGxhc09yZ2FuaXphdGlvbk1lbWJlcnNoaXBbXT4gPSB0b1NpZ25hbCh0aGlzLm1lbWJlcnNoaXBzJCwge1xuICAgIGluaXRpYWxWYWx1ZTogW10gYXMgQXRsYXNPcmdhbml6YXRpb25NZW1iZXJzaGlwW10sXG4gIH0pO1xuICByZWFkb25seSBpc0xvYWRlZDogU2lnbmFsPGJvb2xlYW4+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0dXMoKSAhPT0gJ2xvYWRpbmcnKTtcbiAgcmVhZG9ubHkgaXNTaWduZWRJbjogU2lnbmFsPGJvb2xlYW4+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0dXMoKSA9PT0gJ3NpZ25lZF9pbicpO1xuICByZWFkb25seSBvcmdhbml6YXRpb246IFNpZ25hbDxBdGxhc09yZ2FuaXphdGlvbk1lbWJlcnNoaXAgfCBudWxsPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMuY2xhaW1zKCk/Lm9yZ19pZDtcbiAgICByZXR1cm4gdGhpcy5tZW1iZXJzaGlwcygpLmZpbmQoKG0pID0+IG0ub3JnYW5pemF0aW9uLmlkID09PSBvcmdJZCkgPz8gbnVsbDtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICB0aGlzLnB1Ymxpc2hhYmxlS2V5ID0gb3B0aW9ucy5wdWJsaXNoYWJsZUtleTtcbiAgICAvLyBUaHJvd3MgYW4gYEF0bGFzQ29uZmlnRXJyb3JgIG9uIGEgbWlzc2luZy9pbnZhbGlkIHZhbHVlIHJhdGhlciB0aGFuIHF1aWV0bHlcbiAgICAvLyBzZW5kaW5nIGV2ZXJ5IHJlcXVlc3QgdG8gYSByZWxhdGl2ZSBwYXRoIG9uIHRoZSBhcHAncyBvcmlnaW4uXG4gICAgdGhpcy5iYXNlVXJsID0gcmVzb2x2ZUZyb250ZW5kQXBpKG9wdGlvbnMuZnJvbnRlbmRBcGksIHtcbiAgICAgIGNvbXBvbmVudDogJ3Byb3ZpZGVBdGxhcygpIC8gQXRsYXNNb2R1bGUuZm9yUm9vdCgpJyxcbiAgICB9KTtcbiAgICB0aGlzLmRvRmV0Y2ggPSBvcHRpb25zLmZldGNoSW1wbCA/PyAoKC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIGZldGNoPikgPT4gZmV0Y2goLi4uYXJncykpO1xuXG4gICAgdGhpcy5jYXRhbG9nID0gb3B0aW9ucy5sb2NhbGl6YXRpb24gPyB3aXRoRmFsbGJhY2sob3B0aW9ucy5sb2NhbGl6YXRpb24pIDogRU5fVVM7XG4gICAgdGhpcy5lcnJvckNhdGFsb2cgPSBvcHRpb25zLmxvY2FsaXphdGlvbiA/PyBFTl9VUztcbiAgICB0aGlzLnJlcXVlc3RMb2NhbGUgPSBjYXRhbG9nTG9jYWxlKG9wdGlvbnMubG9jYWxpemF0aW9uKTtcblxuICAgIHRoaXMuZmFwaUNsaWVudCA9IG5ldyBGYXBpQ2xpZW50KHtcbiAgICAgIHB1Ymxpc2hhYmxlS2V5OiB0aGlzLnB1Ymxpc2hhYmxlS2V5LFxuICAgICAgYmFzZVVybDogdGhpcy5iYXNlVXJsLFxuICAgICAgZmV0Y2hJbXBsOiB0aGlzLmRvRmV0Y2gsXG4gICAgICBsb2NhbGU6IHRoaXMucmVxdWVzdExvY2FsZSxcbiAgICAgIHNkazogQVRMQVNfQU5HVUxBUl9TREssXG4gICAgfSk7XG5cbiAgICB0aGlzLm5vdGlmaWVyLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuX3NpZ25PdXQubmV4dChldmVudCkpO1xuICAgIGlmIChvcHRpb25zLm9uU2lnbk91dCkgdGhpcy5ub3RpZmllci5zdWJzY3JpYmUob3B0aW9ucy5vblNpZ25PdXQpO1xuXG4gICAgdGhpcy5ndWFyZCA9IG5ldyBTaWduT3V0R3VhcmQoe1xuICAgICAgcmVxdWVzdDogKHBhdGgsIGluaXQpID0+IHRoaXMuY2FsbChwYXRoLCBpbml0KSxcbiAgICAgIGZyb250ZW5kQXBpOiB0aGlzLmJhc2VVcmwsXG4gICAgfSk7XG5cbiAgICAvLyBDYXB0dXJlZCBzeW5jaHJvbm91c2x5IChub3QgaW4gYW4gYXN5bmMgaW5pdCkgc28gaXQgaXMgYXZhaWxhYmxlIGJlZm9yZSBhbnlcbiAgICAvLyBmbG93IGNvbXBvbmVudCByZWFkcyBpdDogYSBuZWVkc19zZWNvbmRfZmFjdG9yIHJlZGlyZWN0IGNhcnJpZXMgYSBzdGF0dXMgYnV0XG4gICAgLy8gbm8gdGlja2V0LCBhbmQgdGhhdCBpcyB3aGF0IHRoZSAyRkEgcmVzdW1lIHNlZWRzIGZyb20uXG4gICAgdGhpcy5wZW5kaW5nQXR0ZW1wdCA9IHRoaXMuaXNCcm93c2VyID8gdGhpcy5yZWFkUGVuZGluZ0F0dGVtcHQoKSA6IG51bGw7XG5cbiAgICAvLyBCb290IG9uY2UsIGJyb3dzZXIgb25seS4gT24gdGhlIHNlcnZlciB0aGVyZSBpcyBubyBjb29raWUgamFyIHRvIHJlYWQgYVxuICAgIC8vIHNlc3Npb24gZnJvbSwgc28gd2UgbGVhdmUgdGhlIHN0YXRlIGF0IGBsb2FkaW5nYCBhbmQgbGV0IGh5ZHJhdGlvbiBib290IGl0LlxuICAgIGlmICh0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgLy8gQW5vdGhlciB0YWIgc2lnbmVkIG91dCBvZiBUSElTIHNlc3Npb24gKGl0cyB0b21ic3RvbmUgcmVhY2hlZCB0aGUgc2hhcmVkXG4gICAgICAvLyBzdG9yZSk6IGRyb3AgdGhlIHRva2VuIGFuZCByZS1jaGVjaywgd2hpY2ggdGhlbiByZWZ1c2VzIHRoZSBzZXNzaW9uLlxuICAgICAgdGhpcy5zdG9wV2F0Y2hpbmdTaWduT3V0ID0gdGhpcy5ndWFyZC53YXRjaChcbiAgICAgICAgKCkgPT4gdGhpcy5jYWNoZS5wZWVrKCk/LnNlc3Npb25JZCA/PyB0aGlzLl9zZXNzaW9uLnZhbHVlPy5pZCxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMubm90aWZpZXIuZXhwZWN0KCdvdGhlcl90YWInKTtcbiAgICAgICAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgICAgICAgdm9pZCB0aGlzLnJlbG9hZCgpO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIHZvaWQgdGhpcy5ib290KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wV2F0Y2hpbmdTaWduT3V0Py4oKTtcbiAgICB0aGlzLnN0b3BXYXRjaGluZ1NpZ25PdXQgPSBudWxsO1xuICAgIHRoaXMuZ3VhcmQuZGlzcG9zZSgpO1xuICAgIHRoaXMuY2xlYXJSZWZyZXNoVGltZXIoKTtcbiAgICB0aGlzLl9zdGF0dXMuY29tcGxldGUoKTtcbiAgICB0aGlzLl91c2VyLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2Vzc2lvbi5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2NsYWltcy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX21lbWJlcnNoaXBzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2lnbk91dC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLy8gLS0tIENvbmZpZ3VyYXRpb24gYWNjZXNzb3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGdldCBhcHBlYXJhbmNlKCk6IEFwcGVhcmFuY2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXBwZWFyYW5jZTtcbiAgfVxuXG4gIGdldCBsb2NhbGl6YXRpb24oKTogQ2F0YWxvZyB7XG4gICAgcmV0dXJuIHRoaXMuY2F0YWxvZztcbiAgfVxuXG4gIGdldCBmcm9udGVuZEFwaSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJhc2VVcmw7XG4gIH1cblxuICAvKiogVGhlIGBBY2NlcHQtTGFuZ3VhZ2VgIHNlbnQgdG8gdGhlIEZyb250ZW5kIEFQSTogdGhlIGBsb2NhbGl6YXRpb25gIGJ1bmRsZSdzIGBsb2NhbGVgIHRhZywgaWYgYW55LiAqL1xuICBnZXQgbG9jYWxlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdExvY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBzaG93IGZvciBhIHNlcnZlciBlcnJvciwgaW4gdGhlIGFwcCdzIGxhbmd1YWdlOiB0aGUgY2F0YWxvZydzXG4gICAqIGBlcnJvci48cmVhc29uPmAgKGxvb2tlZCB1cCBpbiB0aGUgYGxvY2FsaXphdGlvbmAgYnVuZGxlLCBvciBgRU5fVVNgIHdoZW5cbiAgICogbm9uZSBpcyBzZXQpLCBlbHNlIHRoZSBzZXJ2ZXIncyBtZXNzYWdlLCBlbHNlIGBlcnJvci5nZW5lcmljYC5cbiAgICovXG4gIGVycm9yVGV4dChlcnJvcjogRXJyb3JMaWtlIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxvY2FsaXplZEVycm9yTWVzc2FnZShlcnJvciwgdGhpcy5lcnJvckNhdGFsb2csIHRoaXMuY2F0YWxvZyk7XG4gIH1cblxuICAvKiogVGhlIGNhdGFsb2cgc2VydmVyIGVycm9ycyBhcmUgbG9va2VkIHVwIGluIChzZWUge0BsaW5rIGVycm9yVGV4dH0pLiAqL1xuICBnZXQgZXJyb3JMb2NhbGl6YXRpb24oKTogQ2F0YWxvZyB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JDYXRhbG9nO1xuICB9XG5cbiAgLyoqIFRva2VucyBhcyBDU1MgY3VzdG9tIHByb3BlcnRpZXMsIGZvciBhIGhvc3QgZWxlbWVudCB0byBpbmhlcml0LiAqL1xuICBhcHBlYXJhbmNlVmFyaWFibGVzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIHJldHVybiBjc3NWYXJpYWJsZXMocmVzb2x2ZVRva2Vucyh0aGlzLm9wdGlvbnMuYXBwZWFyYW5jZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmdWxsIGFwcGVhcmFuY2UgcmVuZGVyIGZvciBhIHJvb3QgZWxlbWVudDogaW5saW5lIHZhcmlhYmxlcywgdGhlXG4gICAqIGBkYXRhLWF0bGFzLSpgIGF0dHJpYnV0ZXMgYW5kIHRoZSBkZXNpZ24gc3R5bGVzaGVldC4gUGFzcyB0aGUgZGFzaGJvYXJkXG4gICAqIGRlc2lnbiAoZnJvbSB7QGxpbmsgbG9hZEluc3RhbmNlRGVzaWdufSkgdG8gbGF5ZXIgY29kZSBvdmVycmlkZXMgb24gaXQg4oCUXG4gICAqIHRoZSBzYW1lIHNlbWFudGljcyBhcyBgQGF0bGFzYXV0aC9yZWFjdGAuXG4gICAqL1xuICBhcHBlYXJhbmNlUmVuZGVyKGluc3RhbmNlRGVzaWduPzogSW5zdGFuY2VEZXNpZ24gfCBudWxsKTogQXBwZWFyYW5jZVJlbmRlciB7XG4gICAgcmV0dXJuIHJlbmRlckFwcGVhcmFuY2UodGhpcy5vcHRpb25zLmFwcGVhcmFuY2UsIGluc3RhbmNlRGVzaWduID8/IG51bGwsIHtcbiAgICAgIGZyb250ZW5kQXBpOiB0aGlzLmJhc2VVcmwsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRlc2lnbiBjb25maWd1cmVkIGluIHRoZSBBdGxhcyBkYXNoYm9hcmQgKGBHRVQgL3YxL2FwcGVhcmFuY2VgKSwgb3IgbnVsbFxuICAgKiB3aGVuIHRoZXJlIGlzIG5vbmUsIGl0IGNhbm5vdCBiZSByZWFkLCBvciB0aGUgYXBwIG9wdGVkIG91dCB3aXRoXG4gICAqIGBhcHBlYXJhbmNlLmluc3RhbmNlRGVzaWduOiBmYWxzZWAuXG4gICAqL1xuICBhc3luYyBsb2FkSW5zdGFuY2VEZXNpZ24oKTogUHJvbWlzZTxJbnN0YW5jZURlc2lnbiB8IG51bGw+IHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmFwcGVhcmFuY2U/Lmluc3RhbmNlRGVzaWduID09PSBmYWxzZSkgcmV0dXJuIG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jYWxsKCcvdjEvYXBwZWFyYW5jZScpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLm9rID8gaW5zdGFuY2VEZXNpZ25Gcm9tKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgOiBudWxsO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqIEEgZnJlc2gge0BsaW5rIEZhcGlDbGllbnR9IGZvciBkcml2aW5nIGEgc2lnbi1pbi9zaWduLXVwIGZsb3cuICovXG4gIGNyZWF0ZUZhcGlDbGllbnQoKTogRmFwaUNsaWVudCB7XG4gICAgcmV0dXJuIG5ldyBGYXBpQ2xpZW50KHtcbiAgICAgIHB1Ymxpc2hhYmxlS2V5OiB0aGlzLnB1Ymxpc2hhYmxlS2V5LFxuICAgICAgYmFzZVVybDogdGhpcy5iYXNlVXJsLFxuICAgICAgbG9jYWxlOiB0aGlzLnJlcXVlc3RMb2NhbGUsXG4gICAgICBzZGs6IEFUTEFTX0FOR1VMQVJfU0RLLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tIEltcGVyYXRpdmUgQVBJIChtaXJyb3JzIHRoZSBSZWFjdCBob29rcycgYWN0aW9ucykgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBzZXNzaW9uJ3MgSldULCBhbHdheXMgZnJlc2g6IGlmIHRoZSBjYWNoZWQgdG9rZW4gaXMgd2l0aGluIDVzIG9mXG4gICAqIGV4cGlyeSBpdCBpcyByZWZyZXNoZWQgZmlyc3QgcmF0aGVyIHRoYW4gaGFuZGVkIG92ZXIuIE51bGwgd2hlbiBzaWduZWQgb3V0LlxuICAgKi9cbiAgLyoqIFRoZSBzZXNzaW9uIEpXVDsgd2l0aCBgeyB0ZW1wbGF0ZSB9YCBhIHNob3J0LWxpdmVkIG5hbWVkLXRlbXBsYXRlIHRva2VuIChlLmcuIGAnY2hhdGx5J2ApLiAqL1xuICBhc3luYyBnZXRUb2tlbihvcHRpb25zPzogeyB0ZW1wbGF0ZT86IHN0cmluZyB9KTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgaWYgKG9wdGlvbnM/LnRlbXBsYXRlKSB7XG4gICAgICBjb25zdCBzZXNzaW9uSWQgPSB0aGlzLmNhY2hlLnBlZWsoKT8uc2Vzc2lvbklkID8/IHRoaXMuX3Nlc3Npb24udmFsdWU/LmlkID8/IG51bGw7XG4gICAgICByZXR1cm4gc2Vzc2lvbklkID8gKChhd2FpdCBnZXRUZW1wbGF0ZVRva2VuKHRoaXMuZmFwaUNsaWVudCwgc2Vzc2lvbklkLCBvcHRpb25zLnRlbXBsYXRlKSk/Lmp3dCA/PyBudWxsKSA6IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHVzYWJsZSA9IHRoaXMuY2FjaGUuZ2V0KDVfMDAwKTtcbiAgICBpZiAodXNhYmxlKSByZXR1cm4gdXNhYmxlLmp3dDtcblxuICAgIGF3YWl0IHRoaXMucmVmcmVzaCgpO1xuICAgIHJldHVybiB0aGlzLmNhY2hlLmdldCg1XzAwMCk/Lmp3dCA/PyBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzaWduZWQtaW4gdXNlcidzIE9XTiBsaXZlIGFjY2VzcyB0b2tlbiBhdCBhIGNvbm5lY3RlZCBwcm92aWRlciAoR29vZ2xlLFxuICAgKiBHaXRIdWIsIOKApiksIHNvIHRoZSBhcHAgY2FuIGNhbGwgdGhhdCBwcm92aWRlcidzIEFQSSBmcm9tIHRoZSBicm93c2VyLiBOdWxsXG4gICAqIHdoZW4gdGhlcmUgaXMgbm8gdXNhYmxlIHRva2VuIOKAlCBubyBsaW5rZWQgYWNjb3VudCwgb3IgdGhlIHByb3ZpZGVyIGdyYW50ZWQgL1xuICAgKiBrZXB0IG5vbmUuIFRoZSBzZXJ2ZXIgcmVmcmVzaGVzIGEgc3RhbGUgdG9rZW4gb24gcmVhZDsgdGhlIHJlZnJlc2ggdG9rZW4gaXNcbiAgICogbmV2ZXIgZXhwb3NlZC5cbiAgICovXG4gIC8qKiBMaXN0ZW4gZm9yIHNpZ24tb3V0IG9uIGV2ZXJ5IHBhdGggKHNlZSB7QGxpbmsgc2lnbk91dCR9KTsgcmV0dXJucyB0aGUgdW5zdWJzY3JpYmUuICovXG4gIG9uU2lnbk91dChsaXN0ZW5lcjogU2lnbk91dExpc3RlbmVyKTogKCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMubm90aWZpZXIuc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgfVxuXG4gIGdldFByb3ZpZGVyVG9rZW4ocHJvdmlkZXI6IHN0cmluZyk6IFByb21pc2U8UHJvdmlkZXJUb2tlbiB8IG51bGw+IHtcbiAgICByZXR1cm4gZmV0Y2hQcm92aWRlclRva2VuKHRoaXMuZmFwaUNsaWVudCwgcHJvdmlkZXIpO1xuICB9XG5cbiAgLyoqIEltcGVyYXRpdmUgYGhhcygpYCDigJQgdGhlIHNhbWUgZXZhbHVhdGlvbiBgKmF0bGFzUHJvdGVjdGAgcmVuZGVycyBvbi4gKi9cbiAgaGFzKGNvbmRpdGlvbjogUHJvdGVjdENvbmRpdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBldmFsdWF0ZSh0aGlzLl9jbGFpbXMudmFsdWUsIGNvbmRpdGlvbikuYWxsb3dlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZva2UgdGhlIGN1cnJlbnQgc2Vzc2lvbiBzZXJ2ZXItc2lkZSBhbmQgZHJvcCBhbGwgbG9jYWwgYXV0aCBzdGF0ZS5cbiAgICpcbiAgICogVGhlIHNlc3Npb24gaWQgaXMgcmVtZW1iZXJlZCBiZWZvcmUgdGhlIHJldm9rZSAoYSB0b21ic3RvbmUgc2hhcmVkIGJ5IGV2ZXJ5XG4gICAqIHRhYiksIHNvIGEgcmVsb2FkLCBhIHRva2VuIHJlZnJlc2gsIGEgc2libGluZyB0YWIgb3IgYSB0YWIgb3BlbmVkIGxhdGVyIG5ldmVyXG4gICAqIHJlLWFkb3B0cyBpdCDigJQgZXZlbiB3aGVuIHRoZSByZXZva2UgZmFpbGVkIChpdCBpcyByZXRyaWVkIG9uY2UsIHRoZW4gYWdhaW4gaW5cbiAgICogdGhlIGJhY2tncm91bmQpIGFuZCB0aGUgcmVmcmVzaCBjb29raWUgaXMgc3RpbGwgdmFsaWQuIFJlc29sdmVzXG4gICAqIGB7IHJldm9rZWQsIGFjdGl2ZVNlc3Npb25JZD8gfWA7IHdpdGggYHsgc3RyaWN0OiB0cnVlIH1gIGFuIHVuY29uZmlybWVkIHJldm9rZVxuICAgKiByZWplY3RzIHdpdGggYSBgU2lnbk91dEVycm9yYCBpbnN0ZWFkIChhZnRlciB0aGUgbG9jYWwgc2lnbi1vdXQpLiBBIHBhcmtlZFxuICAgKiBzZXNzaW9uIHRoZSBzZXJ2ZXIgcHJvbW90ZWQgb24gcmV2b2tlIGlzIGFkb3B0ZWQuIEZyb250LWNoYW5uZWwgbG9nb3V0IHJ1bnNcbiAgICogdW5sZXNzIGB7IGZyb250Y2hhbm5lbDogZmFsc2UgfWAuXG4gICAqL1xuICBhc3luYyBzaWduT3V0KG9wdGlvbnM6IFNpZ25PdXRPcHRpb25zID0ge30pOiBQcm9taXNlPFNpZ25PdXRSZXN1bHQ+IHtcbiAgICAvLyBXaXRoIG5vIGNhY2hlZCB0b2tlbiB0aGUgZ3VhcmQgZmluZHMgdGhlIGNvb2tpZSBzZXNzaW9uIGl0c2VsZlxuICAgIC8vIChHRVQgL3YxL2NsaWVudCksIHNvIGEgbWlzc2luZyBKV1QgbmV2ZXIgc2tpcHMgdGhlIHJldm9rZS5cbiAgICBjb25zdCBzZXNzaW9uSWQgPSB0aGlzLmNhY2hlLnBlZWsoKT8uc2Vzc2lvbklkID8/IHRoaXMuX3Nlc3Npb24udmFsdWU/LmlkID8/IG51bGw7XG4gICAgdGhpcy5ub3RpZmllci5leHBlY3QoJ3VzZXInKTtcbiAgICBjb25zdCBhdHRlbXB0ID0gYXdhaXQgdGhpcy5ndWFyZC5yZXZva2Uoc2Vzc2lvbklkLCBvcHRpb25zKTtcbiAgICB0aGlzLmNsZWFyTG9jYWxTdGF0ZSgndXNlcicpO1xuICAgIGlmICh0aGlzLmd1YXJkLnByb21vdGVkKGF0dGVtcHQpKSBhd2FpdCB0aGlzLnJlbG9hZCgpO1xuICAgIHJldHVybiB0aGlzLmd1YXJkLnNldHRsZShhdHRlbXB0LCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTd2l0Y2ggdGhlIGFjdGl2ZSBvcmdhbml6YXRpb24gKG9yIGBudWxsYCBmb3IgdGhlIHBlcnNvbmFsIGFjY291bnQpLiBUaGVcbiAgICogbmV3IHRva2VuIGNhcnJpZXMgdGhlIG5ldyBvcmcgY2xhaW1zLCBzbyB0aGUgYXBwJ3MgcGVybWlzc2lvbiBjaGVja3MgdXBkYXRlXG4gICAqIHdpdGhvdXQgYSByZS1sb2dpbi5cbiAgICovXG4gIGFzeW5jIHNldEFjdGl2ZU9yZ2FuaXphdGlvbihvcmdhbml6YXRpb25JZDogc3RyaW5nIHwgbnVsbCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmNhY2hlLnBlZWsoKTtcbiAgICBpZiAoIWN1cnJlbnQpIHJldHVybjtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jYWxsKGAvdjEvY2xpZW50L3Nlc3Npb25zLyR7Y3VycmVudC5zZXNzaW9uSWR9L3RvdWNoYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGFjdGl2ZV9vcmdhbml6YXRpb25faWQ6IG9yZ2FuaXphdGlvbklkIH0pLFxuICAgIH0pO1xuICAgIGlmICghcmVzcG9uc2Uub2spIHJldHVybjtcblxuICAgIGNvbnN0IGJvZHkgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyB7IGp3dDogc3RyaW5nIH07XG4gICAgdGhpcy5hcHBseVRva2VuKGJvZHkuand0LCBjdXJyZW50LnNlc3Npb25JZCk7XG4gICAgYXdhaXQgdGhpcy5yZWxvYWQoKTtcbiAgfVxuXG4gIC8qKiBSZS1yZWFkIGAvdjEvY2xpZW50YDogcmVmcmVzaCB1c2VyLCBzZXNzaW9uLCBtZW1iZXJzaGlwcyBhbmQgc3RhdHVzLiAqL1xuICBhc3luYyByZWxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jYWxsKCcvdjEvY2xpZW50Jyk7XG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoJ2Jvb3QgZmFpbGVkJyk7XG5cbiAgICAgIGNvbnN0IGJvZHkgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyB7XG4gICAgICAgIHNlc3Npb246IEF0bGFzU2Vzc2lvbiB8IG51bGw7XG4gICAgICAgIHVzZXI6IEF0bGFzVXNlciB8IG51bGw7XG4gICAgICAgIGp3dD86IHN0cmluZztcbiAgICAgICAgb3JnYW5pemF0aW9uX21lbWJlcnNoaXBzPzogQXRsYXNPcmdhbml6YXRpb25NZW1iZXJzaGlwW107XG4gICAgICB9O1xuXG4gICAgICAvLyBBIHNlc3Npb24gdGhpcyBicm93c2VyIHNpZ25lZCBvdXQgb2YgaXMgbmV2ZXIgcmUtYWRvcHRlZCBmcm9tIHRoZVxuICAgICAgLy8gcmVmcmVzaCBjb29raWU7IHRoZSBndWFyZCByZS10cmllcyBpdHMgcmV2b2tlIGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgICAgaWYgKCFib2R5LnNlc3Npb24gfHwgIWJvZHkudXNlciB8fCB0aGlzLmd1YXJkLnJlZnVzZShib2R5LnNlc3Npb24uaWQpKSB7XG4gICAgICAgIHRoaXMuY2xlYXJMb2NhbFN0YXRlKGJvZHkuc2Vzc2lvbiA/ICdvdGhlcl90YWInIDogc2lnbk91dFJlYXNvbkZyb21DbGllbnQoYm9keSkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLm5vdGlmaWVyLmNsZWFyKCk7XG5cbiAgICAgIHRoaXMuX3VzZXIubmV4dChib2R5LnVzZXIpO1xuICAgICAgdGhpcy5fc2Vzc2lvbi5uZXh0KGJvZHkuc2Vzc2lvbik7XG4gICAgICB0aGlzLl9tZW1iZXJzaGlwcy5uZXh0KGJvZHkub3JnYW5pemF0aW9uX21lbWJlcnNoaXBzID8/IFtdKTtcbiAgICAgIGlmIChib2R5Lmp3dCkgdGhpcy5hcHBseVRva2VuKGJvZHkuand0LCBib2R5LnNlc3Npb24uaWQpO1xuICAgICAgdGhpcy5fc3RhdHVzLm5leHQoJ3NpZ25lZF9pbicpO1xuICAgICAgdGhpcy5zY2hlZHVsZVJlZnJlc2goKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEEgZmFpbGVkIGJvb3QgaXMgTk9UIHNpZ25lZC1vdXQuIFJlbmRlcmluZyBhIHNpZ24taW4gZm9ybSBiZWNhdXNlIHRoZVxuICAgICAgLy8gbmV0d29yayBoaWNjdXBlZCB0aHJvd3MgYXdheSBhIHBlcmZlY3RseSBnb29kIHNlc3Npb24gYW5kIGZvcmNlcyBhXG4gICAgICAvLyBuZWVkbGVzcyByZS1hdXRoZW50aWNhdGlvbi4gT25seSBwcm9tb3RlIGxvYWRpbmcg4oaSIHNpZ25lZF9vdXQuXG4gICAgICBpZiAodGhpcy5fc3RhdHVzLnZhbHVlID09PSAnbG9hZGluZycpIHRoaXMuX3N0YXR1cy5uZXh0KCdzaWduZWRfb3V0Jyk7XG4gICAgfVxuICB9XG5cbiAgLy8gLS0tIEludGVybmFscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiDCpzYuMyBzdGVwIDM6IGNvbXBsZXRlIGEgcmVkaXJlY3QtYmFzZWQgc2lnbi1pbiwgdGhlbiBib290LiBBbiBPQXV0aCBvclxuICAgKiBob3N0ZWQtcGFnZSBmbG93IGxhbmRzIGJhY2sgd2l0aCBhIG9uZS10aW1lIHRpY2tldCBpbiB0aGUgVVJMOyBleGNoYW5nZSBpdFxuICAgKiBmb3IgY29va2llcywgc2NydWIgdGhlIFVSTCBzbyBhIHJlbG9hZCBjYW5ub3QgcmVwbGF5IGl0LCBUSEVOIHJlYWQgdGhlXG4gICAqIHNlc3Npb24uIEEgcmVkaXJlY3QgY2Fycnlpbmcgb25seSBhIHN0YXR1cyAoYSBzZWNvbmQgZmFjdG9yIGlzIHN0aWxsIG93ZWQpXG4gICAqIGhhcyBubyB0aWNrZXQsIHNvIG5vdGhpbmcgaXMgZXhjaGFuZ2VkIGFuZCB0aGUgYXBwIGJvb3RzIHNpZ25lZC1vdXQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGJvb3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZnJvbVVybCA9IHJlYWRSZWRpcmVjdFJlc3VsdCh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBsZXQgcmVzdWx0OiBSZWRpcmVjdFJlc3VsdCB8IG51bGwgPSBmcm9tVXJsO1xuXG4gICAgLy8gwqdvYXV0aCBwb3B1cCBtb2RlOiB0aGlzIHBhZ2UgbWF5IGJlIHRoZSBsYW5kaW5nIG9mIGEgc2lnbi1pbiBwb3B1cCB3aG9zZVxuICAgIC8vIG9wZW5lciBhIENyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IHNldmVyZWQgKGAjYXRsYXNfcG9wdXBfcmVzdWx0PeKApmApLlxuICAgIC8vIFRoZSByZXN1bHQgaXMgcmVsYXllZCB0byB0aGUgb3BlbmVyLCB3aGljaCByZWRlZW1zIHRoZSB0aWNrZXQsIGFuZCB0aGlzXG4gICAgLy8gd2luZG93IGNsb3Nlcy4gSWYgbm8gb3BlbmVyIHRha2VzIGl0IChpdHMgdGFiIGlzIGdvbmUpLCBmaW5pc2ggaGVyZSBsaWtlXG4gICAgLy8gYSByZWRpcmVjdC5cbiAgICBjb25zdCBsYW5kaW5nID0gYXdhaXQgY29tcGxldGVPQXV0aFBvcHVwTGFuZGluZygpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgIGlmIChsYW5kaW5nICYmICFsYW5kaW5nLmRlbGl2ZXJlZCkge1xuICAgICAgY29uc3Qgb3V0Y29tZSA9IG1hcE9BdXRoUG9wdXBQYXlsb2FkKGxhbmRpbmcucGF5bG9hZCk7XG4gICAgICBpZiAob3V0Y29tZT8udGlja2V0ICYmIG91dGNvbWUuYXR0ZW1wdElkKSB7XG4gICAgICAgIHJlc3VsdCA9IHsgYXR0ZW1wdElkOiBvdXRjb21lLmF0dGVtcHRJZCwgdGlja2V0OiBvdXRjb21lLnRpY2tldCB9O1xuICAgICAgfSBlbHNlIGlmIChvdXRjb21lPy5jb250aW51YXRpb25VcmwpIHtcbiAgICAgICAgLy8gQSBzZWNvbmQgZmFjdG9yIC8gY29ubmVjdCBzdGVwIC8gcHJvdmlkZXIgZXJyb3I6IHRoZSByZWRpcmVjdCBmbG93J3MgcGFnZS5cbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2Uob3V0Y29tZS5jb250aW51YXRpb25VcmwpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGV4Y2hhbmdlZCA9IGZhbHNlO1xuICAgIGlmIChyZXN1bHQ/LnRpY2tldCkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNhbGwoJy92MS9jbGllbnQvdGlja2V0cy9leGNoYW5nZScsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgYXR0ZW1wdF9pZDogcmVzdWx0LmF0dGVtcHRJZCwgdGlja2V0OiByZXN1bHQudGlja2V0IH0pLFxuICAgICAgfSkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgIGV4Y2hhbmdlZCA9ICEhcmVzcG9uc2U/Lm9rO1xuICAgIH1cbiAgICBpZiAoZnJvbVVybCkge1xuICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCBkb2N1bWVudC50aXRsZSwgc3RyaXBSZWRpcmVjdFBhcmFtcyh3aW5kb3cubG9jYXRpb24uaHJlZikpO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnJlbG9hZCgpO1xuICAgIC8vIFNpZ25lZCBpbiBpbnNpZGUgdGhlIEF0bGFzIHBvcHVwICh0aGUgcmVkaXJlY3QgZmxvdyByYW4gaW4gaXQpOiBoYW5kIGJhY2tcbiAgICAvLyB0byB0aGUgd2FpdGluZyBvcGVuZXIgYW5kIGNsb3NlLiBBIG5vLW9wIGluIGFuIG9yZGluYXJ5IHRhYi5cbiAgICBpZiAoZXhjaGFuZ2VkKSB2b2lkIGNsb3NlT0F1dGhQb3B1cEFmdGVyU2lnbkluKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRQZW5kaW5nQXR0ZW1wdCgpOiB7IGlkOiBzdHJpbmc7IHN0YXR1czogc3RyaW5nIH0gfCBudWxsIHtcbiAgICBjb25zdCByZXN1bHQgPSByZWFkUmVkaXJlY3RSZXN1bHQod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgcmV0dXJuIHJlc3VsdD8uc3RhdHVzICYmICFyZXN1bHQudGlja2V0XG4gICAgICA/IHsgaWQ6IHJlc3VsdC5hdHRlbXB0SWQsIHN0YXR1czogcmVzdWx0LnN0YXR1cyB9XG4gICAgICA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNhbGwocGF0aDogc3RyaW5nLCBpbml0PzogUmVxdWVzdEluaXQpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmRvRmV0Y2goYCR7dGhpcy5iYXNlVXJsfSR7cGF0aH1gLCB7XG4gICAgICAuLi5pbml0LFxuICAgICAgLy8gQ29va2llcyBjYXJyeSB0aGUgc2Vzc2lvbjsgYSByZXF1ZXN0IHdpdGhvdXQgdGhpcyBpcyBpbmRpc3Rpbmd1aXNoYWJsZVxuICAgICAgLy8gZnJvbSBiZWluZyBzaWduZWQgb3V0LlxuICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ3gtcHVibGlzaGFibGUta2V5JzogdGhpcy5wdWJsaXNoYWJsZUtleSxcbiAgICAgICAgLy8gTmFtZXMgdGhpcyBTREsgc28gdGhlIEZyb250ZW5kIEFQSSBjYW4gZmxhZyBhIHZlcnNpb24gd2l0aCBhIGtub3duIGJ1Zy5cbiAgICAgICAgW1NES19IRUFERVJdOiBzZGtIZWFkZXJWYWx1ZShBVExBU19BTkdVTEFSX1NESyksXG4gICAgICAgIC4uLihpbml0Py5ib2R5ID8geyAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0gOiB7fSksXG4gICAgICAgIC4uLmluaXQ/LmhlYWRlcnMsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHJlcG9ydFNka0Fkdmlzb3J5KHJlc3BvbnNlLCBBVExBU19BTkdVTEFSX1NESyk7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVRva2VuKGp3dDogc3RyaW5nLCBzZXNzaW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIEFuIGluLWZsaWdodCByZWZyZXNoIG11c3Qgbm90IHJlc3VycmVjdCBhIHNlc3Npb24gc2lnbmVkIG91dCBtZWFud2hpbGUuXG4gICAgaWYgKHRoaXMuZ3VhcmQuaXNTaWduZWRPdXQoc2Vzc2lvbklkKSkgcmV0dXJuO1xuICAgIGNvbnN0IGV4cGlyZXNBdCA9IHJlYWRFeHBpcnkoand0KTtcbiAgICBpZiAoIWV4cGlyZXNBdCkgcmV0dXJuO1xuXG4gICAgdGhpcy5jYWNoZS5zZXQoeyBqd3QsIGV4cGlyZXNBdCwgc2Vzc2lvbklkIH0pO1xuICAgIHRoaXMuX2NsYWltcy5uZXh0KGRlY29kZUNsYWltcyhqd3QpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5jYWNoZS5wZWVrKCk7XG4gICAgaWYgKCFjdXJyZW50KSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNhbGwoYC92MS9jbGllbnQvc2Vzc2lvbnMvJHtjdXJyZW50LnNlc3Npb25JZH0vdG9rZW5zYCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIH0pO1xuICAgICAgaWYgKCFyZXNwb25zZS5vaykgdGhyb3cgbmV3IEVycm9yKCdyZWZyZXNoIGZhaWxlZCcpO1xuXG4gICAgICBjb25zdCBib2R5ID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMgeyBqd3Q6IHN0cmluZzsgc2Vzc2lvbl9pZDogc3RyaW5nIH07XG4gICAgICB0aGlzLmFwcGx5VG9rZW4oYm9keS5qd3QsIGJvZHkuc2Vzc2lvbl9pZCk7XG4gICAgICB0aGlzLnNjaGVkdWxlUmVmcmVzaCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gVGhlIHNlc3Npb24gbWF5IGdlbnVpbmVseSBiZSBnb25lLiBSZS1ib290IHJhdGhlciB0aGFuIGd1ZXNzLlxuICAgICAgYXdhaXQgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFyTG9jYWxTdGF0ZShyZWFzb24/OiBTaWduT3V0UmVhc29uKTogdm9pZCB7XG4gICAgLy8gQSBzaWduZWQtaW4g4oaSIHNpZ25lZC1vdXQgdHJhbnNpdGlvbiB0ZWxscyB0aGUgc2lnbi1vdXQgbGlzdGVuZXJzIHdoeS5cbiAgICBjb25zdCBlbmRlZCA9XG4gICAgICB0aGlzLl9zdGF0dXMudmFsdWUgPT09ICdzaWduZWRfaW4nXG4gICAgICAgID8gKHRoaXMuX3Nlc3Npb24udmFsdWU/LmlkID8/IHRoaXMuY2FjaGUucGVlaygpPy5zZXNzaW9uSWQgPz8gbnVsbClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5jbGVhclJlZnJlc2hUaW1lcigpO1xuICAgIHRoaXMuY2FjaGUuY2xlYXIoKTtcbiAgICB0aGlzLl9zdGF0dXMubmV4dCgnc2lnbmVkX291dCcpO1xuICAgIHRoaXMuX3VzZXIubmV4dChudWxsKTtcbiAgICB0aGlzLl9zZXNzaW9uLm5leHQobnVsbCk7XG4gICAgdGhpcy5fY2xhaW1zLm5leHQobnVsbCk7XG4gICAgdGhpcy5fbWVtYmVyc2hpcHMubmV4dChbXSk7XG4gICAgaWYgKGVuZGVkICE9PSB1bmRlZmluZWQpIHRoaXMubm90aWZpZXIuc2lnbmVkT3V0KGVuZGVkLCByZWFzb24pO1xuICAgIGVsc2UgdGhpcy5ub3RpZmllci5jbGVhcigpO1xuICB9XG5cbiAgLyoqIMKnNy40OiBwcm9hY3RpdmUsIGppdHRlcmVkIHJlZnJlc2ggc2NoZWR1bGVkIGZyb20gdGhlIHRva2VuJ3Mgb3duIGV4cGlyeS4gKi9cbiAgcHJpdmF0ZSBzY2hlZHVsZVJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclJlZnJlc2hUaW1lcigpO1xuICAgIGlmICh0aGlzLl9zdGF0dXMudmFsdWUgIT09ICdzaWduZWRfaW4nKSByZXR1cm47XG5cbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuY2FjaGUucGVlaygpO1xuICAgIGlmICghdG9rZW4pIHJldHVybjtcblxuICAgIGNvbnN0IGRlbGF5ID0gbXNVbnRpbFJlZnJlc2goeyB0b2tlbiwgbm93OiBEYXRlLm5vdygpIH0pO1xuICAgIHRoaXMucmVmcmVzaFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMucmVmcmVzaCgpLCBkZWxheSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyUmVmcmVzaFRpbWVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlZnJlc2hUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVmcmVzaFRpbWVyKTtcbiAgICAgIHRoaXMucmVmcmVzaFRpbWVyID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuLyoqIERlY29kZSBhIEpXVCBwYXlsb2FkIHdpdGhvdXQgdmVyaWZ5aW5nIGl0IOKAlCBhIHNjaGVkdWxpbmcvVUkgaGludCBvbmx5LiAqL1xuZnVuY3Rpb24gZGVjb2RlQ2xhaW1zKGp3dDogc3RyaW5nKTogU2Vzc2lvbkNsYWltcyB8IG51bGwge1xuICBjb25zdCBwYXJ0cyA9IGp3dC5zcGxpdCgnLicpO1xuICBpZiAocGFydHMubGVuZ3RoICE9PSAzKSByZXR1cm4gbnVsbDtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShcbiAgICAgIGF0b2IocGFydHNbMV0hLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJykpLFxuICAgICkgYXMgU2Vzc2lvbkNsYWltcztcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
489
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRsYXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYXRsYXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUVWLFdBQVcsRUFFWCxRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFDTCxVQUFVLEVBQ1YsWUFBWSxFQUNaLGFBQWEsRUFDYixxQkFBcUIsRUFFckIsVUFBVSxFQUNWLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsZ0JBQWdCLElBQUksa0JBQWtCLEVBQ3RDLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBS25CLFVBQVUsRUFDVixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsdUJBQXVCLEVBSXZCLHdCQUF3QixHQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUF5QixNQUFNLGtCQUFrQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsYUFBYSxHQUlkLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFnQixNQUFNLFFBQVEs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QUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQzt3R0FuZlUsWUFBWTs0R0FBWixZQUFZLGNBREMsTUFBTTs7NEZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQXVmbEMsNkVBQTZFO0FBQzdFLFNBQVMsWUFBWSxDQUFDLEdBQVc7SUFDL0IsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3BDLElBQUksQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FDZixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUNyQyxDQUFDO0lBQ3JCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgT25EZXN0cm95LFxuICBQTEFURk9STV9JRCxcbiAgU2lnbmFsLFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRmFwaUNsaWVudCxcbiAgU2lnbk91dEd1YXJkLFxuICBjYXRhbG9nTG9jYWxlLFxuICBsb2NhbGl6ZWRFcnJvck1lc3NhZ2UsXG4gIHR5cGUgRXJyb3JMaWtlLFxuICBUb2tlbkNhY2hlLFxuICBjbG9zZU9BdXRoUG9wdXBBZnRlclNpZ25JbixcbiAgY29tcGxldGVPQXV0aFBvcHVwTGFuZGluZyxcbiAgZ2V0UHJvdmlkZXJUb2tlbiBhcyBmZXRjaFByb3ZpZGVyVG9rZW4sXG4gIG1hcE9BdXRoUG9wdXBQYXlsb2FkLFxuICBtc1VudGlsUmVmcmVzaCxcbiAgcmVhZEV4cGlyeSxcbiAgcmVhZFJlZGlyZWN0UmVzdWx0LFxuICByZXNvbHZlRnJvbnRlbmRBcGksXG4gIHN0cmlwUmVkaXJlY3RQYXJhbXMsXG4gIHR5cGUgUHJvdmlkZXJUb2tlbixcbiAgdHlwZSBSZWRpcmVjdFJlc3VsdCxcbiAgdHlwZSBTaWduT3V0T3B0aW9ucyxcbiAgdHlwZSBTaWduT3V0UmVzdWx0LFxuICBTREtfSEVBREVSLFxuICBTaWduT3V0Tm90aWZpZXIsXG4gIGdldFRlbXBsYXRlVG9rZW4sXG4gIHJlcG9ydFNka0Fkdmlzb3J5LFxuICBzZGtIZWFkZXJWYWx1ZSxcbiAgc2lnbk91dFJlYXNvbkZyb21DbGllbnQsXG4gIHR5cGUgU2lnbk91dEV2ZW50LFxuICB0eXBlIFNpZ25PdXRMaXN0ZW5lcixcbiAgdHlwZSBTaWduT3V0UmVhc29uLFxuICBjb25maWd1cmVSZWZlcnJhbENhcHR1cmUsXG59IGZyb20gJ0BhdGxhc2F1dGgvanMnO1xuaW1wb3J0IHsgZXZhbHVhdGUsIHR5cGUgUHJvdGVjdENvbmRpdGlvbiB9IGZyb20gJ0BhdGxhc2F1dGgvYXV0aHonO1xuaW1wb3J0IHsgQVRMQVNfT1BUSU9OUyB9IGZyb20gJy4vYXRsYXMuY29uZmlnJztcbmltcG9ydCB7XG4gIGNzc1ZhcmlhYmxlcyxcbiAgaW5zdGFuY2VEZXNpZ25Gcm9tLFxuICByZW5kZXJBcHBlYXJhbmNlLFxuICByZXNvbHZlVG9rZW5zLFxuICB0eXBlIEFwcGVhcmFuY2UsXG4gIHR5cGUgQXBwZWFyYW5jZVJlbmRlcixcbiAgdHlwZSBJbnN0YW5jZURlc2lnbixcbn0gZnJvbSAnLi9hcHBlYXJhbmNlJztcbmltcG9ydCB7IEVOX1VTLCB3aXRoRmFsbGJhY2ssIHR5cGUgQ2F0YWxvZyB9IGZyb20gJy4vaTE4bic7XG5pbXBvcnQgdHlwZSB7XG4gIEF0bGFzT3JnYW5pemF0aW9uTWVtYmVyc2hpcCxcbiAgQXRsYXNTZXNzaW9uLFxuICBBdGxhc1VzZXIsXG4gIEF1dGhTdGF0dXMsXG4gIFNlc3Npb25DbGFpbXMsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQVRMQVNfQU5HVUxBUl9TREsgfSBmcm9tICcuL3ZlcnNpb24nO1xuXG4vKipcbiAqIGBBdGxhc1NlcnZpY2VgIOKAlCB0aGUgQW5ndWxhciBwZWVyIG9mIFJlYWN0J3MgYDxBdGxhc1Byb3ZpZGVyPmAgKyBob29rcy5cbiAqXG4gKiBJdCBob2xkcyBleGFjdGx5IG9uZSB0aGluZyB0aGF0IG1hdHRlcnMgaW4gbWVtb3J5OiB0aGUgc2hvcnQtbGl2ZWQgSldULCBpbiBhXG4gKiB7QGxpbmsgVG9rZW5DYWNoZX0uIE5vdCBsb2NhbFN0b3JhZ2UsIG5vdCBhIGNvb2tpZSB0aGlzIGNvZGUgd3JpdGVzIOKAlCB0aGVcbiAqIHJlZnJlc2ggdG9rZW4gaXMgSHR0cE9ubHkgc28gYnJvd3NlciBzY3JpcHQgbmV2ZXIgdG91Y2hlcyBpdCwgYW5kIHRoZSBKV1RcbiAqIGxpdmVzIG9ubHkgYXMgbG9uZyBhcyB0aGUgdGFiLiBBbnl0aGluZyBwZXJzaXN0ZWQgd291bGQgc3Vydml2ZSB0aGUgdGFiIGFuZFxuICogYmVjb21lIHRoZSBmaXJzdCB0aGluZyBhbiBYU1MgcmVhZHMuXG4gKlxuICogUmVhY3RpdmUgYXV0aCBzdGF0ZSBpcyBleHBvc2VkIHR3byB3YXlzIHNvIGNhbGxlcnMgY2FuIHBpY2sgdGhlaXIgaWRpb206XG4gKiAgLSBSeEpTIG9ic2VydmFibGVzIChgdXNlciRgLCBgc2Vzc2lvbiRgLCBgaXNTaWduZWRJbiRgLCDigKYpIOKAlCB0aGUgcHJpbWFyeSBBUEksXG4gKiAgICB0aGUgYW5hbG9ndWUgb2YgdGhlIFJlYWN0IGhvb2tzJyByZXR1cm4gdmFsdWVzLlxuICogIC0gQW5ndWxhciBzaWduYWxzIChgdXNlcmAsIGBzZXNzaW9uYCwgYGlzU2lnbmVkSW5gLCDigKYpIOKAlCB0aGUgc2FtZSB2YWx1ZXMgYXNcbiAqICAgIGBTaWduYWw8VD5gLCBmb3IgdGVtcGxhdGVzIGFuZCBgY29tcHV0ZWQoKWAuXG4gKlxuICogVGhlIGltcGVyYXRpdmUgbWV0aG9kcyAoYHNpZ25PdXRgLCBgZ2V0VG9rZW5gLCBgZ2V0UHJvdmlkZXJUb2tlbmAsXG4gKiBgc2V0QWN0aXZlT3JnYW5pemF0aW9uYCwgYHJlbG9hZGApIG1pcnJvciB0aGUgYWN0aW9ucyB0aGUgaG9va3MgcmV0dXJuLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF0bGFzU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucyA9IGluamVjdChBVExBU19PUFRJT05TKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc0Jyb3dzZXIgPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHB1Ymxpc2hhYmxlS2V5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9GZXRjaDogdHlwZW9mIGZldGNoO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGUgPSBuZXcgVG9rZW5DYWNoZSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IGZhcGlDbGllbnQ6IEZhcGlDbGllbnQ7XG4gIHByaXZhdGUgcmVmcmVzaFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Vzc2lvbnMgdGhpcyBicm93c2VyIHNpZ25lZCBvdXQgb2YgKHRvbWJzdG9uZXMgaW4gbG9jYWxTdG9yYWdlLCBwZXJcbiAgICogRnJvbnRlbmQgQVBJIG9yaWdpbiksIHRoZSByZXZva2UgYW5kIGl0cyBiYWNrZ3JvdW5kIHJlLXRyaWVzLiBFdmVyeSByZWxvYWQgL1xuICAgKiByZWZyZXNoIGFza3MgaXQgYmVmb3JlIGFkb3B0aW5nIGEgc2Vzc2lvbiwgc28gYSBzaWduLW91dCB0aGUgc2VydmVyIG5ldmVyXG4gICAqIGNvbmZpcm1lZCBpcyBub3QgdW5kb25lIGJ5IHRoZSBzdGlsbC12YWxpZCByZWZyZXNoIGNvb2tpZS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZ3VhcmQ6IFNpZ25PdXRHdWFyZDtcbiAgcHJpdmF0ZSBzdG9wV2F0Y2hpbmdTaWduT3V0OiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNhdGFsb2c6IENhdGFsb2c7XG4gIC8qKiBUaGUgbGFuZ3VhZ2UgbGF5ZXIgb2YgYGNhdGFsb2dgICh0aGUgYGxvY2FsaXphdGlvbmAgYnVuZGxlIGFsb25lOyBgRU5fVVNgIHdoZW4gbm9uZSkuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JDYXRhbG9nOiBDYXRhbG9nO1xuICAvKiogU2VudCB0byB0aGUgRnJvbnRlbmQgQVBJIGFzIGBBY2NlcHQtTGFuZ3VhZ2VgOiB0aGUgYGxvY2FsaXphdGlvbmAgYnVuZGxlJ3MgYGxvY2FsZWAgdGFnLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3RMb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBzaWduLWluIGF0dGVtcHQgaGFuZGVkIGJhY2sgYnkgYW4gT0F1dGggcmVkaXJlY3QgdGhhdCBzdGlsbCBuZWVkcyBhIHNlY29uZFxuICAgKiBmYWN0b3IgKG5vIHNlc3Npb24gd2FzIGlzc3VlZCkuIE51bGwgaW4gdGhlIG9yZGluYXJ5IGNhc2U7IHRoZSBgPGF0bGFzLXNpZ24taW4+YFxuICAgKiBmbG93IHNlZWRzIGl0c2VsZiBmcm9tIHRoaXMgc28gdGhlIHVzZXIgcmVzdW1lcyBhdCB0aGUgMkZBIHN0ZXAuIENhcHR1cmVkXG4gICAqIG9uY2UsIHN5bmNocm9ub3VzbHksIGF0IGNvbnN0cnVjdGlvbiDigJQgYmVmb3JlIGFueSBmbG93IGNvbXBvbmVudCByZWFkcyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IHBlbmRpbmdBdHRlbXB0OiB7IGlkOiBzdHJpbmc7IHN0YXR1czogc3RyaW5nIH0gfCBudWxsO1xuXG4gIC8vIC0tLSBSZWFjdGl2ZSBzdGF0ZSAoc291cmNlIG9mIHRydXRoKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0dXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dGhTdGF0dXM+KCdsb2FkaW5nJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VzZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF0bGFzVXNlciB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdGxhc1Nlc3Npb24gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2xhaW1zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZXNzaW9uQ2xhaW1zIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21lbWJlcnNoaXBzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdGxhc09yZ2FuaXphdGlvbk1lbWJlcnNoaXBbXT4oW10pO1xuICAvLyBBVEwtUy0zMCBzaWduLW91dCBldmVudHMsIG9uIGV2ZXJ5IHBhdGguXG4gIHByaXZhdGUgcmVhZG9ubHkgbm90aWZpZXIgPSBuZXcgU2lnbk91dE5vdGlmaWVyKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NpZ25PdXQgPSBuZXcgU3ViamVjdDxTaWduT3V0RXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBFbWl0cyBvbmNlIGVhY2ggdGltZSBhIHNpZ25lZC1pbiB1c2VyIGJlY29tZXMgc2lnbmVkIG91dDogYHJlYXNvbmAgaXNcbiAgICogYHVzZXJgLCBgb3RoZXJfdGFiYCwgYHNlc3Npb25fZXhwaXJlZGAsIGByZXZva2VkYCAoZW5kZWQgZWxzZXdoZXJlLCBzZWVuIG9uXG4gICAqIHRoZSBuZXh0IHRva2VuIHJlZnJlc2gpIG9yIGB1bmtub3duYC4gVGhlIHBsYWNlIHRvIHJlc2V0IGFuIGVtYmVkZGVkXG4gICAqIHRoaXJkIHBhcnR5IChhIGNoYXQgd2lkZ2V0KS4gQWxzbyBkaXNwYXRjaGVkIGFzIGBhdGxhczpzaWdub3V0YCBvbiBgd2luZG93YC5cbiAgICovXG4gIHJlYWRvbmx5IHNpZ25PdXQkOiBPYnNlcnZhYmxlPFNpZ25PdXRFdmVudD4gPSB0aGlzLl9zaWduT3V0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8qKiBUaGUgdGhyZWUtc3RhdGUgYXV0aCBsaWZlY3ljbGU6IGBsb2FkaW5nYCDihpIgYHNpZ25lZF9pbmAgfCBgc2lnbmVkX291dGAuICovXG4gIHJlYWRvbmx5IHN0YXR1cyQ6IE9ic2VydmFibGU8QXV0aFN0YXR1cz4gPSB0aGlzLl9zdGF0dXMuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IHVzZXIkOiBPYnNlcnZhYmxlPEF0bGFzVXNlciB8IG51bGw+ID0gdGhpcy5fdXNlci5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgc2Vzc2lvbiQ6IE9ic2VydmFibGU8QXRsYXNTZXNzaW9uIHwgbnVsbD4gPSB0aGlzLl9zZXNzaW9uLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBjbGFpbXMkOiBPYnNlcnZhYmxlPFNlc3Npb25DbGFpbXMgfCBudWxsPiA9IHRoaXMuX2NsYWltcy5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgbWVtYmVyc2hpcHMkOiBPYnNlcnZhYmxlPEF0bGFzT3JnYW5pemF0aW9uTWVtYmVyc2hpcFtdPiA9XG4gICAgdGhpcy5fbWVtYmVyc2hpcHMuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqXG4gICAqIFRydWUgb25jZSB0aGUgU0RLIGhhcyBmaW5pc2hlZCBpdHMgZmlyc3QgYm9vdC4gRGlzdGluZ3Vpc2hpbmcgXCJzdGlsbCBsb2FkaW5nXCJcbiAgICogZnJvbSBcInNpZ25lZCBvdXRcIiBpcyB3aGF0IGxldHMgYSB0ZW1wbGF0ZSBhdm9pZCB0aGUgZmxhc2ggb2YgYSBzaWduLWluIGZvcm1cbiAgICogb24gZXZlcnkgcGFnZSBsb2FkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNMb2FkZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5zdGF0dXMkLnBpcGUoXG4gICAgbWFwKChzKSA9PiBzICE9PSAnbG9hZGluZycpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICk7XG5cbiAgcmVhZG9ubHkgaXNTaWduZWRJbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnN0YXR1cyQucGlwZShcbiAgICBtYXAoKHMpID0+IHMgPT09ICdzaWduZWRfaW4nKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICApO1xuXG4gIC8qKiBUaGUgYWN0aXZlIG9yZ2FuaXphdGlvbiBtZW1iZXJzaGlwLCBkZXJpdmVkIGZyb20gdGhlIHRva2VuJ3MgYG9yZ19pZGAgY2xhaW0uICovXG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbiQ6IE9ic2VydmFibGU8QXRsYXNPcmdhbml6YXRpb25NZW1iZXJzaGlwIHwgbnVsbD4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9tZW1iZXJzaGlwcyxcbiAgICB0aGlzLl9jbGFpbXMsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFttZW1iZXJzaGlwcywgY2xhaW1zXSkgPT5cbiAgICAgICAgbWVtYmVyc2hpcHMuZmluZCgobSkgPT4gbS5vcmdhbml6YXRpb24uaWQgPT09IGNsYWltcz8ub3JnX2lkKSA/PyBudWxsLFxuICAgICksXG4gICk7XG5cbiAgLy8gLS0tIFNpZ25hbCBtaXJyb3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHJlYWRvbmx5IHN0YXR1czogU2lnbmFsPEF1dGhTdGF0dXM+ID0gdG9TaWduYWwodGhpcy5zdGF0dXMkLCB7IGluaXRpYWxWYWx1ZTogJ2xvYWRpbmcnIH0pO1xuICByZWFkb25seSB1c2VyOiBTaWduYWw8QXRsYXNVc2VyIHwgbnVsbD4gPSB0b1NpZ25hbCh0aGlzLnVzZXIkLCB7IGluaXRpYWxWYWx1ZTogbnVsbCB9KTtcbiAgcmVhZG9ubHkgc2Vzc2lvbjogU2lnbmFsPEF0bGFzU2Vzc2lvbiB8IG51bGw+ID0gdG9TaWduYWwodGhpcy5zZXNzaW9uJCwgeyBpbml0aWFsVmFsdWU6IG51bGwgfSk7XG4gIHJlYWRvbmx5IGNsYWltczogU2lnbmFsPFNlc3Npb25DbGFpbXMgfCBudWxsPiA9IHRvU2lnbmFsKHRoaXMuY2xhaW1zJCwgeyBpbml0aWFsVmFsdWU6IG51bGwgfSk7XG4gIHJlYWRvbmx5IG1lbWJlcnNoaXBzOiBTaWduYWw8QXRsYXNPcmdhbml6YXRpb25NZW1iZXJzaGlwW10+ID0gdG9TaWduYWwodGhpcy5tZW1iZXJzaGlwcyQsIHtcbiAgICBpbml0aWFsVmFsdWU6IFtdIGFzIEF0bGFzT3JnYW5pemF0aW9uTWVtYmVyc2hpcFtdLFxuICB9KTtcbiAgcmVhZG9ubHkgaXNMb2FkZWQ6IFNpZ25hbDxib29sZWFuPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdHVzKCkgIT09ICdsb2FkaW5nJyk7XG4gIHJlYWRvbmx5IGlzU2lnbmVkSW46IFNpZ25hbDxib29sZWFuPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdHVzKCkgPT09ICdzaWduZWRfaW4nKTtcbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uOiBTaWduYWw8QXRsYXNPcmdhbml6YXRpb25NZW1iZXJzaGlwIHwgbnVsbD4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLmNsYWltcygpPy5vcmdfaWQ7XG4gICAgcmV0dXJuIHRoaXMubWVtYmVyc2hpcHMoKS5maW5kKChtKSA9PiBtLm9yZ2FuaXphdGlvbi5pZCA9PT0gb3JnSWQpID8/IG51bGw7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgdGhpcy5wdWJsaXNoYWJsZUtleSA9IG9wdGlvbnMucHVibGlzaGFibGVLZXk7XG4gICAgLy8gVGhyb3dzIGFuIGBBdGxhc0NvbmZpZ0Vycm9yYCBvbiBhIG1pc3NpbmcvaW52YWxpZCB2YWx1ZSByYXRoZXIgdGhhbiBxdWlldGx5XG4gICAgLy8gc2VuZGluZyBldmVyeSByZXF1ZXN0IHRvIGEgcmVsYXRpdmUgcGF0aCBvbiB0aGUgYXBwJ3Mgb3JpZ2luLlxuICAgIHRoaXMuYmFzZVVybCA9IHJlc29sdmVGcm9udGVuZEFwaShvcHRpb25zLmZyb250ZW5kQXBpLCB7XG4gICAgICBjb21wb25lbnQ6ICdwcm92aWRlQXRsYXMoKSAvIEF0bGFzTW9kdWxlLmZvclJvb3QoKScsXG4gICAgfSk7XG4gICAgdGhpcy5kb0ZldGNoID0gb3B0aW9ucy5mZXRjaEltcGwgPz8gKCguLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBmZXRjaD4pID0+IGZldGNoKC4uLmFyZ3MpKTtcblxuICAgIHRoaXMuY2F0YWxvZyA9IG9wdGlvbnMubG9jYWxpemF0aW9uID8gd2l0aEZhbGxiYWNrKG9wdGlvbnMubG9jYWxpemF0aW9uKSA6IEVOX1VTO1xuICAgIHRoaXMuZXJyb3JDYXRhbG9nID0gb3B0aW9ucy5sb2NhbGl6YXRpb24gPz8gRU5fVVM7XG4gICAgdGhpcy5yZXF1ZXN0TG9jYWxlID0gY2F0YWxvZ0xvY2FsZShvcHRpb25zLmxvY2FsaXphdGlvbik7XG5cbiAgICAvLyBSZWZlcnJhbCBhdHRyaWJ1dGlvbjogYXBwLXdpZGUgb3B0aW9ucyBldmVyeSBGQVBJIGNsaWVudCBvbiB0aGUgcGFnZSBmYWxscyBiYWNrIHRvLlxuICAgIGNvbmZpZ3VyZVJlZmVycmFsQ2FwdHVyZSh7IHJlZmVycmFsOiBvcHRpb25zLnJlZmVycmFsLCByZWZlcnJhbENvbnNlbnQ6IG9wdGlvbnMucmVmZXJyYWxDb25zZW50IH0pO1xuICAgIHRoaXMuZmFwaUNsaWVudCA9IG5ldyBGYXBpQ2xpZW50KHtcbiAgICAgIHB1Ymxpc2hhYmxlS2V5OiB0aGlzLnB1Ymxpc2hhYmxlS2V5LFxuICAgICAgYmFzZVVybDogdGhpcy5iYXNlVXJsLFxuICAgICAgZmV0Y2hJbXBsOiB0aGlzLmRvRmV0Y2gsXG4gICAgICBsb2NhbGU6IHRoaXMucmVxdWVzdExvY2FsZSxcbiAgICAgIHNkazogQVRMQVNfQU5HVUxBUl9TREssXG4gICAgfSk7XG5cbiAgICB0aGlzLm5vdGlmaWVyLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuX3NpZ25PdXQubmV4dChldmVudCkpO1xuICAgIGlmIChvcHRpb25zLm9uU2lnbk91dCkgdGhpcy5ub3RpZmllci5zdWJzY3JpYmUob3B0aW9ucy5vblNpZ25PdXQpO1xuXG4gICAgdGhpcy5ndWFyZCA9IG5ldyBTaWduT3V0R3VhcmQoe1xuICAgICAgcmVxdWVzdDogKHBhdGgsIGluaXQpID0+IHRoaXMuY2FsbChwYXRoLCBpbml0KSxcbiAgICAgIGZyb250ZW5kQXBpOiB0aGlzLmJhc2VVcmwsXG4gICAgfSk7XG5cbiAgICAvLyBDYXB0dXJlZCBzeW5jaHJvbm91c2x5IChub3QgaW4gYW4gYXN5bmMgaW5pdCkgc28gaXQgaXMgYXZhaWxhYmxlIGJlZm9yZSBhbnlcbiAgICAvLyBmbG93IGNvbXBvbmVudCByZWFkcyBpdDogYSBuZWVkc19zZWNvbmRfZmFjdG9yIHJlZGlyZWN0IGNhcnJpZXMgYSBzdGF0dXMgYnV0XG4gICAgLy8gbm8gdGlja2V0LCBhbmQgdGhhdCBpcyB3aGF0IHRoZSAyRkEgcmVzdW1lIHNlZWRzIGZyb20uXG4gICAgdGhpcy5wZW5kaW5nQXR0ZW1wdCA9IHRoaXMuaXNCcm93c2VyID8gdGhpcy5yZWFkUGVuZGluZ0F0dGVtcHQoKSA6IG51bGw7XG5cbiAgICAvLyBCb290IG9uY2UsIGJyb3dzZXIgb25seS4gT24gdGhlIHNlcnZlciB0aGVyZSBpcyBubyBjb29raWUgamFyIHRvIHJlYWQgYVxuICAgIC8vIHNlc3Npb24gZnJvbSwgc28gd2UgbGVhdmUgdGhlIHN0YXRlIGF0IGBsb2FkaW5nYCBhbmQgbGV0IGh5ZHJhdGlvbiBib290IGl0LlxuICAgIGlmICh0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgLy8gQW5vdGhlciB0YWIgc2lnbmVkIG91dCBvZiBUSElTIHNlc3Npb24gKGl0cyB0b21ic3RvbmUgcmVhY2hlZCB0aGUgc2hhcmVkXG4gICAgICAvLyBzdG9yZSk6IGRyb3AgdGhlIHRva2VuIGFuZCByZS1jaGVjaywgd2hpY2ggdGhlbiByZWZ1c2VzIHRoZSBzZXNzaW9uLlxuICAgICAgdGhpcy5zdG9wV2F0Y2hpbmdTaWduT3V0ID0gdGhpcy5ndWFyZC53YXRjaChcbiAgICAgICAgKCkgPT4gdGhpcy5jYWNoZS5wZWVrKCk/LnNlc3Npb25JZCA/PyB0aGlzLl9zZXNzaW9uLnZhbHVlPy5pZCxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMubm90aWZpZXIuZXhwZWN0KCdvdGhlcl90YWInKTtcbiAgICAgICAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgICAgICAgdm9pZCB0aGlzLnJlbG9hZCgpO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIHZvaWQgdGhpcy5ib290KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wV2F0Y2hpbmdTaWduT3V0Py4oKTtcbiAgICB0aGlzLnN0b3BXYXRjaGluZ1NpZ25PdXQgPSBudWxsO1xuICAgIHRoaXMuZ3VhcmQuZGlzcG9zZSgpO1xuICAgIHRoaXMuY2xlYXJSZWZyZXNoVGltZXIoKTtcbiAgICB0aGlzLl9zdGF0dXMuY29tcGxldGUoKTtcbiAgICB0aGlzLl91c2VyLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2Vzc2lvbi5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2NsYWltcy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX21lbWJlcnNoaXBzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2lnbk91dC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLy8gLS0tIENvbmZpZ3VyYXRpb24gYWNjZXNzb3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGdldCBhcHBlYXJhbmNlKCk6IEFwcGVhcmFuY2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXBwZWFyYW5jZTtcbiAgfVxuXG4gIGdldCBsb2NhbGl6YXRpb24oKTogQ2F0YWxvZyB7XG4gICAgcmV0dXJuIHRoaXMuY2F0YWxvZztcbiAgfVxuXG4gIGdldCBmcm9udGVuZEFwaSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJhc2VVcmw7XG4gIH1cblxuICAvKiogVGhlIGBBY2NlcHQtTGFuZ3VhZ2VgIHNlbnQgdG8gdGhlIEZyb250ZW5kIEFQSTogdGhlIGBsb2NhbGl6YXRpb25gIGJ1bmRsZSdzIGBsb2NhbGVgIHRhZywgaWYgYW55LiAqL1xuICBnZXQgbG9jYWxlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdExvY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBzaG93IGZvciBhIHNlcnZlciBlcnJvciwgaW4gdGhlIGFwcCdzIGxhbmd1YWdlOiB0aGUgY2F0YWxvZydzXG4gICAqIGBlcnJvci48cmVhc29uPmAgKGxvb2tlZCB1cCBpbiB0aGUgYGxvY2FsaXphdGlvbmAgYnVuZGxlLCBvciBgRU5fVVNgIHdoZW5cbiAgICogbm9uZSBpcyBzZXQpLCBlbHNlIHRoZSBzZXJ2ZXIncyBtZXNzYWdlLCBlbHNlIGBlcnJvci5nZW5lcmljYC5cbiAgICovXG4gIGVycm9yVGV4dChlcnJvcjogRXJyb3JMaWtlIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxvY2FsaXplZEVycm9yTWVzc2FnZShlcnJvciwgdGhpcy5lcnJvckNhdGFsb2csIHRoaXMuY2F0YWxvZyk7XG4gIH1cblxuICAvKiogVGhlIGNhdGFsb2cgc2VydmVyIGVycm9ycyBhcmUgbG9va2VkIHVwIGluIChzZWUge0BsaW5rIGVycm9yVGV4dH0pLiAqL1xuICBnZXQgZXJyb3JMb2NhbGl6YXRpb24oKTogQ2F0YWxvZyB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JDYXRhbG9nO1xuICB9XG5cbiAgLyoqIFRva2VucyBhcyBDU1MgY3VzdG9tIHByb3BlcnRpZXMsIGZvciBhIGhvc3QgZWxlbWVudCB0byBpbmhlcml0LiAqL1xuICBhcHBlYXJhbmNlVmFyaWFibGVzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIHJldHVybiBjc3NWYXJpYWJsZXMocmVzb2x2ZVRva2Vucyh0aGlzLm9wdGlvbnMuYXBwZWFyYW5jZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmdWxsIGFwcGVhcmFuY2UgcmVuZGVyIGZvciBhIHJvb3QgZWxlbWVudDogaW5saW5lIHZhcmlhYmxlcywgdGhlXG4gICAqIGBkYXRhLWF0bGFzLSpgIGF0dHJpYnV0ZXMgYW5kIHRoZSBkZXNpZ24gc3R5bGVzaGVldC4gUGFzcyB0aGUgZGFzaGJvYXJkXG4gICAqIGRlc2lnbiAoZnJvbSB7QGxpbmsgbG9hZEluc3RhbmNlRGVzaWdufSkgdG8gbGF5ZXIgY29kZSBvdmVycmlkZXMgb24gaXQg4oCUXG4gICAqIHRoZSBzYW1lIHNlbWFudGljcyBhcyBgQGF0bGFzYXV0aC9yZWFjdGAuXG4gICAqL1xuICBhcHBlYXJhbmNlUmVuZGVyKGluc3RhbmNlRGVzaWduPzogSW5zdGFuY2VEZXNpZ24gfCBudWxsKTogQXBwZWFyYW5jZVJlbmRlciB7XG4gICAgcmV0dXJuIHJlbmRlckFwcGVhcmFuY2UodGhpcy5vcHRpb25zLmFwcGVhcmFuY2UsIGluc3RhbmNlRGVzaWduID8/IG51bGwsIHtcbiAgICAgIGZyb250ZW5kQXBpOiB0aGlzLmJhc2VVcmwsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRlc2lnbiBjb25maWd1cmVkIGluIHRoZSBBdGxhcyBkYXNoYm9hcmQgKGBHRVQgL3YxL2FwcGVhcmFuY2VgKSwgb3IgbnVsbFxuICAgKiB3aGVuIHRoZXJlIGlzIG5vbmUsIGl0IGNhbm5vdCBiZSByZWFkLCBvciB0aGUgYXBwIG9wdGVkIG91dCB3aXRoXG4gICAqIGBhcHBlYXJhbmNlLmluc3RhbmNlRGVzaWduOiBmYWxzZWAuXG4gICAqL1xuICBhc3luYyBsb2FkSW5zdGFuY2VEZXNpZ24oKTogUHJvbWlzZTxJbnN0YW5jZURlc2lnbiB8IG51bGw+IHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmFwcGVhcmFuY2U/Lmluc3RhbmNlRGVzaWduID09PSBmYWxzZSkgcmV0dXJuIG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jYWxsKCcvdjEvYXBwZWFyYW5jZScpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLm9rID8gaW5zdGFuY2VEZXNpZ25Gcm9tKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgOiBudWxsO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqIEEgZnJlc2gge0BsaW5rIEZhcGlDbGllbnR9IGZvciBkcml2aW5nIGEgc2lnbi1pbi9zaWduLXVwIGZsb3cuICovXG4gIGNyZWF0ZUZhcGlDbGllbnQoKTogRmFwaUNsaWVudCB7XG4gICAgcmV0dXJuIG5ldyBGYXBpQ2xpZW50KHtcbiAgICAgIHB1Ymxpc2hhYmxlS2V5OiB0aGlzLnB1Ymxpc2hhYmxlS2V5LFxuICAgICAgYmFzZVVybDogdGhpcy5iYXNlVXJsLFxuICAgICAgbG9jYWxlOiB0aGlzLnJlcXVlc3RMb2NhbGUsXG4gICAgICBzZGs6IEFUTEFTX0FOR1VMQVJfU0RLLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tIEltcGVyYXRpdmUgQVBJIChtaXJyb3JzIHRoZSBSZWFjdCBob29rcycgYWN0aW9ucykgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBzZXNzaW9uJ3MgSldULCBhbHdheXMgZnJlc2g6IGlmIHRoZSBjYWNoZWQgdG9rZW4gaXMgd2l0aGluIDVzIG9mXG4gICAqIGV4cGlyeSBpdCBpcyByZWZyZXNoZWQgZmlyc3QgcmF0aGVyIHRoYW4gaGFuZGVkIG92ZXIuIE51bGwgd2hlbiBzaWduZWQgb3V0LlxuICAgKi9cbiAgLyoqIFRoZSBzZXNzaW9uIEpXVDsgd2l0aCBgeyB0ZW1wbGF0ZSB9YCBhIHNob3J0LWxpdmVkIG5hbWVkLXRlbXBsYXRlIHRva2VuIChlLmcuIGAnY2hhdGx5J2ApLiAqL1xuICBhc3luYyBnZXRUb2tlbihvcHRpb25zPzogeyB0ZW1wbGF0ZT86IHN0cmluZyB9KTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgaWYgKG9wdGlvbnM/LnRlbXBsYXRlKSB7XG4gICAgICBjb25zdCBzZXNzaW9uSWQgPSB0aGlzLmNhY2hlLnBlZWsoKT8uc2Vzc2lvbklkID8/IHRoaXMuX3Nlc3Npb24udmFsdWU/LmlkID8/IG51bGw7XG4gICAgICByZXR1cm4gc2Vzc2lvbklkID8gKChhd2FpdCBnZXRUZW1wbGF0ZVRva2VuKHRoaXMuZmFwaUNsaWVudCwgc2Vzc2lvbklkLCBvcHRpb25zLnRlbXBsYXRlKSk/Lmp3dCA/PyBudWxsKSA6IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHVzYWJsZSA9IHRoaXMuY2FjaGUuZ2V0KDVfMDAwKTtcbiAgICBpZiAodXNhYmxlKSByZXR1cm4gdXNhYmxlLmp3dDtcblxuICAgIGF3YWl0IHRoaXMucmVmcmVzaCgpO1xuICAgIHJldHVybiB0aGlzLmNhY2hlLmdldCg1XzAwMCk/Lmp3dCA/PyBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzaWduZWQtaW4gdXNlcidzIE9XTiBsaXZlIGFjY2VzcyB0b2tlbiBhdCBhIGNvbm5lY3RlZCBwcm92aWRlciAoR29vZ2xlLFxuICAgKiBHaXRIdWIsIOKApiksIHNvIHRoZSBhcHAgY2FuIGNhbGwgdGhhdCBwcm92aWRlcidzIEFQSSBmcm9tIHRoZSBicm93c2VyLiBOdWxsXG4gICAqIHdoZW4gdGhlcmUgaXMgbm8gdXNhYmxlIHRva2VuIOKAlCBubyBsaW5rZWQgYWNjb3VudCwgb3IgdGhlIHByb3ZpZGVyIGdyYW50ZWQgL1xuICAgKiBrZXB0IG5vbmUuIFRoZSBzZXJ2ZXIgcmVmcmVzaGVzIGEgc3RhbGUgdG9rZW4gb24gcmVhZDsgdGhlIHJlZnJlc2ggdG9rZW4gaXNcbiAgICogbmV2ZXIgZXhwb3NlZC5cbiAgICovXG4gIC8qKiBMaXN0ZW4gZm9yIHNpZ24tb3V0IG9uIGV2ZXJ5IHBhdGggKHNlZSB7QGxpbmsgc2lnbk91dCR9KTsgcmV0dXJucyB0aGUgdW5zdWJzY3JpYmUuICovXG4gIG9uU2lnbk91dChsaXN0ZW5lcjogU2lnbk91dExpc3RlbmVyKTogKCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMubm90aWZpZXIuc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgfVxuXG4gIGdldFByb3ZpZGVyVG9rZW4ocHJvdmlkZXI6IHN0cmluZyk6IFByb21pc2U8UHJvdmlkZXJUb2tlbiB8IG51bGw+IHtcbiAgICByZXR1cm4gZmV0Y2hQcm92aWRlclRva2VuKHRoaXMuZmFwaUNsaWVudCwgcHJvdmlkZXIpO1xuICB9XG5cbiAgLyoqIEltcGVyYXRpdmUgYGhhcygpYCDigJQgdGhlIHNhbWUgZXZhbHVhdGlvbiBgKmF0bGFzUHJvdGVjdGAgcmVuZGVycyBvbi4gKi9cbiAgaGFzKGNvbmRpdGlvbjogUHJvdGVjdENvbmRpdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBldmFsdWF0ZSh0aGlzLl9jbGFpbXMudmFsdWUsIGNvbmRpdGlvbikuYWxsb3dlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZva2UgdGhlIGN1cnJlbnQgc2Vzc2lvbiBzZXJ2ZXItc2lkZSBhbmQgZHJvcCBhbGwgbG9jYWwgYXV0aCBzdGF0ZS5cbiAgICpcbiAgICogVGhlIHNlc3Npb24gaWQgaXMgcmVtZW1iZXJlZCBiZWZvcmUgdGhlIHJldm9rZSAoYSB0b21ic3RvbmUgc2hhcmVkIGJ5IGV2ZXJ5XG4gICAqIHRhYiksIHNvIGEgcmVsb2FkLCBhIHRva2VuIHJlZnJlc2gsIGEgc2libGluZyB0YWIgb3IgYSB0YWIgb3BlbmVkIGxhdGVyIG5ldmVyXG4gICAqIHJlLWFkb3B0cyBpdCDigJQgZXZlbiB3aGVuIHRoZSByZXZva2UgZmFpbGVkIChpdCBpcyByZXRyaWVkIG9uY2UsIHRoZW4gYWdhaW4gaW5cbiAgICogdGhlIGJhY2tncm91bmQpIGFuZCB0aGUgcmVmcmVzaCBjb29raWUgaXMgc3RpbGwgdmFsaWQuIFJlc29sdmVzXG4gICAqIGB7IHJldm9rZWQsIGFjdGl2ZVNlc3Npb25JZD8gfWA7IHdpdGggYHsgc3RyaWN0OiB0cnVlIH1gIGFuIHVuY29uZmlybWVkIHJldm9rZVxuICAgKiByZWplY3RzIHdpdGggYSBgU2lnbk91dEVycm9yYCBpbnN0ZWFkIChhZnRlciB0aGUgbG9jYWwgc2lnbi1vdXQpLiBBIHBhcmtlZFxuICAgKiBzZXNzaW9uIHRoZSBzZXJ2ZXIgcHJvbW90ZWQgb24gcmV2b2tlIGlzIGFkb3B0ZWQuIEZyb250LWNoYW5uZWwgbG9nb3V0IHJ1bnNcbiAgICogdW5sZXNzIGB7IGZyb250Y2hhbm5lbDogZmFsc2UgfWAuXG4gICAqL1xuICBhc3luYyBzaWduT3V0KG9wdGlvbnM6IFNpZ25PdXRPcHRpb25zID0ge30pOiBQcm9taXNlPFNpZ25PdXRSZXN1bHQ+IHtcbiAgICAvLyBXaXRoIG5vIGNhY2hlZCB0b2tlbiB0aGUgZ3VhcmQgZmluZHMgdGhlIGNvb2tpZSBzZXNzaW9uIGl0c2VsZlxuICAgIC8vIChHRVQgL3YxL2NsaWVudCksIHNvIGEgbWlzc2luZyBKV1QgbmV2ZXIgc2tpcHMgdGhlIHJldm9rZS5cbiAgICBjb25zdCBzZXNzaW9uSWQgPSB0aGlzLmNhY2hlLnBlZWsoKT8uc2Vzc2lvbklkID8/IHRoaXMuX3Nlc3Npb24udmFsdWU/LmlkID8/IG51bGw7XG4gICAgdGhpcy5ub3RpZmllci5leHBlY3QoJ3VzZXInKTtcbiAgICBjb25zdCBhdHRlbXB0ID0gYXdhaXQgdGhpcy5ndWFyZC5yZXZva2Uoc2Vzc2lvbklkLCBvcHRpb25zKTtcbiAgICB0aGlzLmNsZWFyTG9jYWxTdGF0ZSgndXNlcicpO1xuICAgIGlmICh0aGlzLmd1YXJkLnByb21vdGVkKGF0dGVtcHQpKSBhd2FpdCB0aGlzLnJlbG9hZCgpO1xuICAgIHJldHVybiB0aGlzLmd1YXJkLnNldHRsZShhdHRlbXB0LCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTd2l0Y2ggdGhlIGFjdGl2ZSBvcmdhbml6YXRpb24gKG9yIGBudWxsYCBmb3IgdGhlIHBlcnNvbmFsIGFjY291bnQpLiBUaGVcbiAgICogbmV3IHRva2VuIGNhcnJpZXMgdGhlIG5ldyBvcmcgY2xhaW1zLCBzbyB0aGUgYXBwJ3MgcGVybWlzc2lvbiBjaGVja3MgdXBkYXRlXG4gICAqIHdpdGhvdXQgYSByZS1sb2dpbi5cbiAgICovXG4gIGFzeW5jIHNldEFjdGl2ZU9yZ2FuaXphdGlvbihvcmdhbml6YXRpb25JZDogc3RyaW5nIHwgbnVsbCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmNhY2hlLnBlZWsoKTtcbiAgICBpZiAoIWN1cnJlbnQpIHJldHVybjtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jYWxsKGAvdjEvY2xpZW50L3Nlc3Npb25zLyR7Y3VycmVudC5zZXNzaW9uSWR9L3RvdWNoYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGFjdGl2ZV9vcmdhbml6YXRpb25faWQ6IG9yZ2FuaXphdGlvbklkIH0pLFxuICAgIH0pO1xuICAgIGlmICghcmVzcG9uc2Uub2spIHJldHVybjtcblxuICAgIGNvbnN0IGJvZHkgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyB7IGp3dDogc3RyaW5nIH07XG4gICAgdGhpcy5hcHBseVRva2VuKGJvZHkuand0LCBjdXJyZW50LnNlc3Npb25JZCk7XG4gICAgYXdhaXQgdGhpcy5yZWxvYWQoKTtcbiAgfVxuXG4gIC8qKiBSZS1yZWFkIGAvdjEvY2xpZW50YDogcmVmcmVzaCB1c2VyLCBzZXNzaW9uLCBtZW1iZXJzaGlwcyBhbmQgc3RhdHVzLiAqL1xuICBhc3luYyByZWxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jYWxsKCcvdjEvY2xpZW50Jyk7XG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoJ2Jvb3QgZmFpbGVkJyk7XG5cbiAgICAgIGNvbnN0IGJvZHkgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyB7XG4gICAgICAgIHNlc3Npb246IEF0bGFzU2Vzc2lvbiB8IG51bGw7XG4gICAgICAgIHVzZXI6IEF0bGFzVXNlciB8IG51bGw7XG4gICAgICAgIGp3dD86IHN0cmluZztcbiAgICAgICAgb3JnYW5pemF0aW9uX21lbWJlcnNoaXBzPzogQXRsYXNPcmdhbml6YXRpb25NZW1iZXJzaGlwW107XG4gICAgICB9O1xuXG4gICAgICAvLyBBIHNlc3Npb24gdGhpcyBicm93c2VyIHNpZ25lZCBvdXQgb2YgaXMgbmV2ZXIgcmUtYWRvcHRlZCBmcm9tIHRoZVxuICAgICAgLy8gcmVmcmVzaCBjb29raWU7IHRoZSBndWFyZCByZS10cmllcyBpdHMgcmV2b2tlIGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgICAgaWYgKCFib2R5LnNlc3Npb24gfHwgIWJvZHkudXNlciB8fCB0aGlzLmd1YXJkLnJlZnVzZShib2R5LnNlc3Npb24uaWQpKSB7XG4gICAgICAgIHRoaXMuY2xlYXJMb2NhbFN0YXRlKGJvZHkuc2Vzc2lvbiA/ICdvdGhlcl90YWInIDogc2lnbk91dFJlYXNvbkZyb21DbGllbnQoYm9keSkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLm5vdGlmaWVyLmNsZWFyKCk7XG5cbiAgICAgIHRoaXMuX3VzZXIubmV4dChib2R5LnVzZXIpO1xuICAgICAgdGhpcy5fc2Vzc2lvbi5uZXh0KGJvZHkuc2Vzc2lvbik7XG4gICAgICB0aGlzLl9tZW1iZXJzaGlwcy5uZXh0KGJvZHkub3JnYW5pemF0aW9uX21lbWJlcnNoaXBzID8/IFtdKTtcbiAgICAgIGlmIChib2R5Lmp3dCkgdGhpcy5hcHBseVRva2VuKGJvZHkuand0LCBib2R5LnNlc3Npb24uaWQpO1xuICAgICAgdGhpcy5fc3RhdHVzLm5leHQoJ3NpZ25lZF9pbicpO1xuICAgICAgdGhpcy5zY2hlZHVsZVJlZnJlc2goKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEEgZmFpbGVkIGJvb3QgaXMgTk9UIHNpZ25lZC1vdXQuIFJlbmRlcmluZyBhIHNpZ24taW4gZm9ybSBiZWNhdXNlIHRoZVxuICAgICAgLy8gbmV0d29yayBoaWNjdXBlZCB0aHJvd3MgYXdheSBhIHBlcmZlY3RseSBnb29kIHNlc3Npb24gYW5kIGZvcmNlcyBhXG4gICAgICAvLyBuZWVkbGVzcyByZS1hdXRoZW50aWNhdGlvbi4gT25seSBwcm9tb3RlIGxvYWRpbmcg4oaSIHNpZ25lZF9vdXQuXG4gICAgICBpZiAodGhpcy5fc3RhdHVzLnZhbHVlID09PSAnbG9hZGluZycpIHRoaXMuX3N0YXR1cy5uZXh0KCdzaWduZWRfb3V0Jyk7XG4gICAgfVxuICB9XG5cbiAgLy8gLS0tIEludGVybmFscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiDCpzYuMyBzdGVwIDM6IGNvbXBsZXRlIGEgcmVkaXJlY3QtYmFzZWQgc2lnbi1pbiwgdGhlbiBib290LiBBbiBPQXV0aCBvclxuICAgKiBob3N0ZWQtcGFnZSBmbG93IGxhbmRzIGJhY2sgd2l0aCBhIG9uZS10aW1lIHRpY2tldCBpbiB0aGUgVVJMOyBleGNoYW5nZSBpdFxuICAgKiBmb3IgY29va2llcywgc2NydWIgdGhlIFVSTCBzbyBhIHJlbG9hZCBjYW5ub3QgcmVwbGF5IGl0LCBUSEVOIHJlYWQgdGhlXG4gICAqIHNlc3Npb24uIEEgcmVkaXJlY3QgY2Fycnlpbmcgb25seSBhIHN0YXR1cyAoYSBzZWNvbmQgZmFjdG9yIGlzIHN0aWxsIG93ZWQpXG4gICAqIGhhcyBubyB0aWNrZXQsIHNvIG5vdGhpbmcgaXMgZXhjaGFuZ2VkIGFuZCB0aGUgYXBwIGJvb3RzIHNpZ25lZC1vdXQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGJvb3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZnJvbVVybCA9IHJlYWRSZWRpcmVjdFJlc3VsdCh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBsZXQgcmVzdWx0OiBSZWRpcmVjdFJlc3VsdCB8IG51bGwgPSBmcm9tVXJsO1xuXG4gICAgLy8gwqdvYXV0aCBwb3B1cCBtb2RlOiB0aGlzIHBhZ2UgbWF5IGJlIHRoZSBsYW5kaW5nIG9mIGEgc2lnbi1pbiBwb3B1cCB3aG9zZVxuICAgIC8vIG9wZW5lciBhIENyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IHNldmVyZWQgKGAjYXRsYXNfcG9wdXBfcmVzdWx0PeKApmApLlxuICAgIC8vIFRoZSByZXN1bHQgaXMgcmVsYXllZCB0byB0aGUgb3BlbmVyLCB3aGljaCByZWRlZW1zIHRoZSB0aWNrZXQsIGFuZCB0aGlzXG4gICAgLy8gd2luZG93IGNsb3Nlcy4gSWYgbm8gb3BlbmVyIHRha2VzIGl0IChpdHMgdGFiIGlzIGdvbmUpLCBmaW5pc2ggaGVyZSBsaWtlXG4gICAgLy8gYSByZWRpcmVjdC5cbiAgICBjb25zdCBsYW5kaW5nID0gYXdhaXQgY29tcGxldGVPQXV0aFBvcHVwTGFuZGluZygpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgIGlmIChsYW5kaW5nICYmICFsYW5kaW5nLmRlbGl2ZXJlZCkge1xuICAgICAgY29uc3Qgb3V0Y29tZSA9IG1hcE9BdXRoUG9wdXBQYXlsb2FkKGxhbmRpbmcucGF5bG9hZCk7XG4gICAgICBpZiAob3V0Y29tZT8udGlja2V0ICYmIG91dGNvbWUuYXR0ZW1wdElkKSB7XG4gICAgICAgIHJlc3VsdCA9IHsgYXR0ZW1wdElkOiBvdXRjb21lLmF0dGVtcHRJZCwgdGlja2V0OiBvdXRjb21lLnRpY2tldCB9O1xuICAgICAgfSBlbHNlIGlmIChvdXRjb21lPy5jb250aW51YXRpb25VcmwpIHtcbiAgICAgICAgLy8gQSBzZWNvbmQgZmFjdG9yIC8gY29ubmVjdCBzdGVwIC8gcHJvdmlkZXIgZXJyb3I6IHRoZSByZWRpcmVjdCBmbG93J3MgcGFnZS5cbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2Uob3V0Y29tZS5jb250aW51YXRpb25VcmwpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGV4Y2hhbmdlZCA9IGZhbHNlO1xuICAgIGlmIChyZXN1bHQ/LnRpY2tldCkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNhbGwoJy92MS9jbGllbnQvdGlja2V0cy9leGNoYW5nZScsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgYXR0ZW1wdF9pZDogcmVzdWx0LmF0dGVtcHRJZCwgdGlja2V0OiByZXN1bHQudGlja2V0IH0pLFxuICAgICAgfSkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgIGV4Y2hhbmdlZCA9ICEhcmVzcG9uc2U/Lm9rO1xuICAgIH1cbiAgICBpZiAoZnJvbVVybCkge1xuICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCBkb2N1bWVudC50aXRsZSwgc3RyaXBSZWRpcmVjdFBhcmFtcyh3aW5kb3cubG9jYXRpb24uaHJlZikpO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnJlbG9hZCgpO1xuICAgIC8vIFNpZ25lZCBpbiBpbnNpZGUgdGhlIEF0bGFzIHBvcHVwICh0aGUgcmVkaXJlY3QgZmxvdyByYW4gaW4gaXQpOiBoYW5kIGJhY2tcbiAgICAvLyB0byB0aGUgd2FpdGluZyBvcGVuZXIgYW5kIGNsb3NlLiBBIG5vLW9wIGluIGFuIG9yZGluYXJ5IHRhYi5cbiAgICBpZiAoZXhjaGFuZ2VkKSB2b2lkIGNsb3NlT0F1dGhQb3B1cEFmdGVyU2lnbkluKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRQZW5kaW5nQXR0ZW1wdCgpOiB7IGlkOiBzdHJpbmc7IHN0YXR1czogc3RyaW5nIH0gfCBudWxsIHtcbiAgICBjb25zdCByZXN1bHQgPSByZWFkUmVkaXJlY3RSZXN1bHQod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgcmV0dXJuIHJlc3VsdD8uc3RhdHVzICYmICFyZXN1bHQudGlja2V0XG4gICAgICA/IHsgaWQ6IHJlc3VsdC5hdHRlbXB0SWQsIHN0YXR1czogcmVzdWx0LnN0YXR1cyB9XG4gICAgICA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNhbGwocGF0aDogc3RyaW5nLCBpbml0PzogUmVxdWVzdEluaXQpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmRvRmV0Y2goYCR7dGhpcy5iYXNlVXJsfSR7cGF0aH1gLCB7XG4gICAgICAuLi5pbml0LFxuICAgICAgLy8gQ29va2llcyBjYXJyeSB0aGUgc2Vzc2lvbjsgYSByZXF1ZXN0IHdpdGhvdXQgdGhpcyBpcyBpbmRpc3Rpbmd1aXNoYWJsZVxuICAgICAgLy8gZnJvbSBiZWluZyBzaWduZWQgb3V0LlxuICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ3gtcHVibGlzaGFibGUta2V5JzogdGhpcy5wdWJsaXNoYWJsZUtleSxcbiAgICAgICAgLy8gTmFtZXMgdGhpcyBTREsgc28gdGhlIEZyb250ZW5kIEFQSSBjYW4gZmxhZyBhIHZlcnNpb24gd2l0aCBhIGtub3duIGJ1Zy5cbiAgICAgICAgW1NES19IRUFERVJdOiBzZGtIZWFkZXJWYWx1ZShBVExBU19BTkdVTEFSX1NESyksXG4gICAgICAgIC4uLihpbml0Py5ib2R5ID8geyAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0gOiB7fSksXG4gICAgICAgIC4uLmluaXQ/LmhlYWRlcnMsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHJlcG9ydFNka0Fkdmlzb3J5KHJlc3BvbnNlLCBBVExBU19BTkdVTEFSX1NESyk7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVRva2VuKGp3dDogc3RyaW5nLCBzZXNzaW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIEFuIGluLWZsaWdodCByZWZyZXNoIG11c3Qgbm90IHJlc3VycmVjdCBhIHNlc3Npb24gc2lnbmVkIG91dCBtZWFud2hpbGUuXG4gICAgaWYgKHRoaXMuZ3VhcmQuaXNTaWduZWRPdXQoc2Vzc2lvbklkKSkgcmV0dXJuO1xuICAgIGNvbnN0IGV4cGlyZXNBdCA9IHJlYWRFeHBpcnkoand0KTtcbiAgICBpZiAoIWV4cGlyZXNBdCkgcmV0dXJuO1xuXG4gICAgdGhpcy5jYWNoZS5zZXQoeyBqd3QsIGV4cGlyZXNBdCwgc2Vzc2lvbklkIH0pO1xuICAgIHRoaXMuX2NsYWltcy5uZXh0KGRlY29kZUNsYWltcyhqd3QpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5jYWNoZS5wZWVrKCk7XG4gICAgaWYgKCFjdXJyZW50KSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNhbGwoYC92MS9jbGllbnQvc2Vzc2lvbnMvJHtjdXJyZW50LnNlc3Npb25JZH0vdG9rZW5zYCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIH0pO1xuICAgICAgaWYgKCFyZXNwb25zZS5vaykgdGhyb3cgbmV3IEVycm9yKCdyZWZyZXNoIGZhaWxlZCcpO1xuXG4gICAgICBjb25zdCBib2R5ID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMgeyBqd3Q6IHN0cmluZzsgc2Vzc2lvbl9pZDogc3RyaW5nIH07XG4gICAgICB0aGlzLmFwcGx5VG9rZW4oYm9keS5qd3QsIGJvZHkuc2Vzc2lvbl9pZCk7XG4gICAgICB0aGlzLnNjaGVkdWxlUmVmcmVzaCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gVGhlIHNlc3Npb24gbWF5IGdlbnVpbmVseSBiZSBnb25lLiBSZS1ib290IHJhdGhlciB0aGFuIGd1ZXNzLlxuICAgICAgYXdhaXQgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFyTG9jYWxTdGF0ZShyZWFzb24/OiBTaWduT3V0UmVhc29uKTogdm9pZCB7XG4gICAgLy8gQSBzaWduZWQtaW4g4oaSIHNpZ25lZC1vdXQgdHJhbnNpdGlvbiB0ZWxscyB0aGUgc2lnbi1vdXQgbGlzdGVuZXJzIHdoeS5cbiAgICBjb25zdCBlbmRlZCA9XG4gICAgICB0aGlzLl9zdGF0dXMudmFsdWUgPT09ICdzaWduZWRfaW4nXG4gICAgICAgID8gKHRoaXMuX3Nlc3Npb24udmFsdWU/LmlkID8/IHRoaXMuY2FjaGUucGVlaygpPy5zZXNzaW9uSWQgPz8gbnVsbClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5jbGVhclJlZnJlc2hUaW1lcigpO1xuICAgIHRoaXMuY2FjaGUuY2xlYXIoKTtcbiAgICB0aGlzLl9zdGF0dXMubmV4dCgnc2lnbmVkX291dCcpO1xuICAgIHRoaXMuX3VzZXIubmV4dChudWxsKTtcbiAgICB0aGlzLl9zZXNzaW9uLm5leHQobnVsbCk7XG4gICAgdGhpcy5fY2xhaW1zLm5leHQobnVsbCk7XG4gICAgdGhpcy5fbWVtYmVyc2hpcHMubmV4dChbXSk7XG4gICAgaWYgKGVuZGVkICE9PSB1bmRlZmluZWQpIHRoaXMubm90aWZpZXIuc2lnbmVkT3V0KGVuZGVkLCByZWFzb24pO1xuICAgIGVsc2UgdGhpcy5ub3RpZmllci5jbGVhcigpO1xuICB9XG5cbiAgLyoqIMKnNy40OiBwcm9hY3RpdmUsIGppdHRlcmVkIHJlZnJlc2ggc2NoZWR1bGVkIGZyb20gdGhlIHRva2VuJ3Mgb3duIGV4cGlyeS4gKi9cbiAgcHJpdmF0ZSBzY2hlZHVsZVJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclJlZnJlc2hUaW1lcigpO1xuICAgIGlmICh0aGlzLl9zdGF0dXMudmFsdWUgIT09ICdzaWduZWRfaW4nKSByZXR1cm47XG5cbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuY2FjaGUucGVlaygpO1xuICAgIGlmICghdG9rZW4pIHJldHVybjtcblxuICAgIGNvbnN0IGRlbGF5ID0gbXNVbnRpbFJlZnJlc2goeyB0b2tlbiwgbm93OiBEYXRlLm5vdygpIH0pO1xuICAgIHRoaXMucmVmcmVzaFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMucmVmcmVzaCgpLCBkZWxheSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyUmVmcmVzaFRpbWVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlZnJlc2hUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVmcmVzaFRpbWVyKTtcbiAgICAgIHRoaXMucmVmcmVzaFRpbWVyID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuLyoqIERlY29kZSBhIEpXVCBwYXlsb2FkIHdpdGhvdXQgdmVyaWZ5aW5nIGl0IOKAlCBhIHNjaGVkdWxpbmcvVUkgaGludCBvbmx5LiAqL1xuZnVuY3Rpb24gZGVjb2RlQ2xhaW1zKGp3dDogc3RyaW5nKTogU2Vzc2lvbkNsYWltcyB8IG51bGwge1xuICBjb25zdCBwYXJ0cyA9IGp3dC5zcGxpdCgnLicpO1xuICBpZiAocGFydHMubGVuZ3RoICE9PSAzKSByZXR1cm4gbnVsbDtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShcbiAgICAgIGF0b2IocGFydHNbMV0hLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJykpLFxuICAgICkgYXMgU2Vzc2lvbkNsYWltcztcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';
2
2
  import { AtlasService } from '../atlas.service';
3
3
  import { classFor } from '../appearance';
4
4
  import { translate } from '../i18n';
@@ -10,6 +10,43 @@ import * as i0 from "@angular/core";
10
10
  */
11
11
  export class UserProfileComponent {
12
12
  atlas = inject(AtlasService);
13
+ // An unverified address (added and never confirmed, or the sign-up address on
14
+ // an app that did not require verification) can be proven here: send a code,
15
+ // then enter it.
16
+ verifying = signal(null);
17
+ code = signal('');
18
+ busy = signal(false);
19
+ verifyError = signal(null);
20
+ client = this.atlas.createFapiClient();
21
+ async sendCode(id) {
22
+ this.verifyError.set(null);
23
+ this.busy.set(true);
24
+ const res = await this.client.post(`/v1/client/me/email_addresses/${id}/prepare_verification`);
25
+ this.busy.set(false);
26
+ if (!res.ok) {
27
+ this.verifyError.set(this.t('userProfile.verifySendFailed'));
28
+ return;
29
+ }
30
+ this.code.set('');
31
+ this.verifying.set(id);
32
+ }
33
+ async confirmCode() {
34
+ const id = this.verifying();
35
+ if (!id)
36
+ return;
37
+ this.verifyError.set(null);
38
+ this.busy.set(true);
39
+ const res = await this.client.post(`/v1/client/me/email_addresses/${id}/attempt_verification`, {
40
+ code: this.code(),
41
+ });
42
+ this.busy.set(false);
43
+ if (!res.ok) {
44
+ this.verifyError.set(this.t('userProfile.verifyCodeRejected'));
45
+ return;
46
+ }
47
+ this.verifying.set(null);
48
+ await this.atlas.reload();
49
+ }
13
50
  t(key) {
14
51
  return translate(this.atlas.localization, key);
15
52
  }
@@ -30,10 +67,42 @@ export class UserProfileComponent {
30
67
  {{ email.email_address }}
31
68
  @if (!email.verified) {
32
69
  <em> — {{ t('userProfile.unverified') }}</em>
70
+ @if (verifying() === email.id) {
71
+ <span data-atlas="email-verify">
72
+ <input
73
+ [class]="cls('formFieldInput', 'atlas-account-input')"
74
+ inputmode="numeric"
75
+ autocomplete="one-time-code"
76
+ [placeholder]="t('userProfile.verifyCodePlaceholder')"
77
+ [value]="code()"
78
+ (input)="code.set($any($event.target).value)"
79
+ />
80
+ <button
81
+ [class]="cls('formButtonSecondary', 'atlas-button-secondary')"
82
+ type="button"
83
+ [disabled]="busy()"
84
+ (click)="confirmCode()"
85
+ >
86
+ {{ t('userProfile.verifyConfirm') }}
87
+ </button>
88
+ </span>
89
+ } @else {
90
+ <button
91
+ [class]="cls('formButtonSecondary', 'atlas-button-secondary')"
92
+ type="button"
93
+ [disabled]="busy()"
94
+ (click)="sendCode(email.id)"
95
+ >
96
+ {{ t('userProfile.verify') }}
97
+ </button>
98
+ }
33
99
  }
34
100
  </li>
35
101
  }
36
102
  </ul>
103
+ @if (verifyError(); as message) {
104
+ <p role="alert">{{ message }}</p>
105
+ }
37
106
  </section>
38
107
 
39
108
  <section>
@@ -63,10 +132,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
63
132
  {{ email.email_address }}
64
133
  @if (!email.verified) {
65
134
  <em> — {{ t('userProfile.unverified') }}</em>
135
+ @if (verifying() === email.id) {
136
+ <span data-atlas="email-verify">
137
+ <input
138
+ [class]="cls('formFieldInput', 'atlas-account-input')"
139
+ inputmode="numeric"
140
+ autocomplete="one-time-code"
141
+ [placeholder]="t('userProfile.verifyCodePlaceholder')"
142
+ [value]="code()"
143
+ (input)="code.set($any($event.target).value)"
144
+ />
145
+ <button
146
+ [class]="cls('formButtonSecondary', 'atlas-button-secondary')"
147
+ type="button"
148
+ [disabled]="busy()"
149
+ (click)="confirmCode()"
150
+ >
151
+ {{ t('userProfile.verifyConfirm') }}
152
+ </button>
153
+ </span>
154
+ } @else {
155
+ <button
156
+ [class]="cls('formButtonSecondary', 'atlas-button-secondary')"
157
+ type="button"
158
+ [disabled]="busy()"
159
+ (click)="sendCode(email.id)"
160
+ >
161
+ {{ t('userProfile.verify') }}
162
+ </button>
163
+ }
66
164
  }
67
165
  </li>
68
166
  }
69
167
  </ul>
168
+ @if (verifyError(); as message) {
169
+ <p role="alert">{{ message }}</p>
170
+ }
70
171
  </section>
71
172
 
72
173
  <section>
@@ -78,4 +179,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
78
179
  `,
79
180
  }]
80
181
  }] });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy91c2VyLXByb2ZpbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUVwQzs7OztHQUlHO0FBZ0NILE1BQU0sT0FBTyxvQkFBb0I7SUFDWixLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXRDLENBQUMsQ0FBQyxHQUFXO1FBQ3JCLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFUyxHQUFHLENBQUMsR0FBZSxFQUFFLElBQVk7UUFDekMsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7d0dBVFUsb0JBQW9COzRGQUFwQixvQkFBb0IsOEVBM0JyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCVDs7NEZBRVUsb0JBQW9CO2tCQS9CaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCVDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXRsYXNTZXJ2aWNlIH0gZnJvbSAnLi4vYXRsYXMuc2VydmljZSc7XG5pbXBvcnQgeyBjbGFzc0ZvciwgdHlwZSBFbGVtZW50S2V5IH0gZnJvbSAnLi4vYXBwZWFyYW5jZSc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICcuLi9pMThuJztcblxuLyoqXG4gKiBgPGF0bGFzLXVzZXItcHJvZmlsZT5gIOKAlCB0aGUgc2lnbmVkLWluIHVzZXIncyBhY2NvdW50IHN1cmZhY2UgKGVtYWlscyxcbiAqIHNlY3VyaXR5KS4gVGhlIEFuZ3VsYXIgcGVlciBvZiBSZWFjdCdzIGA8VXNlclByb2ZpbGUvPmAuIFJlbmRlcnMgbm90aGluZyB3aGVuXG4gKiB0aGVyZSBpcyBubyB1c2VyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdGxhcy11c2VyLXByb2ZpbGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKGF0bGFzLnVzZXIoKTsgYXMgdXNlcikge1xuICAgICAgPGRpdiBbY2xhc3NdPVwiY2xzKCdjYXJkJywgJ2F0bGFzLWNhcmQnKVwiPlxuICAgICAgICA8aDE+e3sgdCgndXNlclByb2ZpbGUudGl0bGUnKSB9fTwvaDE+XG5cbiAgICAgICAgPHNlY3Rpb24+XG4gICAgICAgICAgPGgyPnt7IHQoJ3VzZXJQcm9maWxlLmVtYWlsc1NlY3Rpb24nKSB9fTwvaDI+XG4gICAgICAgICAgPHVsPlxuICAgICAgICAgICAgQGZvciAoZW1haWwgb2YgdXNlci5lbWFpbF9hZGRyZXNzZXMgPz8gW107IHRyYWNrIGVtYWlsLmlkKSB7XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB7eyBlbWFpbC5lbWFpbF9hZGRyZXNzIH19XG4gICAgICAgICAgICAgICAgQGlmICghZW1haWwudmVyaWZpZWQpIHtcbiAgICAgICAgICAgICAgICAgIDxlbT4g4oCUIHt7IHQoJ3VzZXJQcm9maWxlLnVudmVyaWZpZWQnKSB9fTwvZW0+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICA8aDI+e3sgdCgndXNlclByb2ZpbGUuc2VjdXJpdHlTZWN0aW9uJykgfX08L2gyPlxuICAgICAgICAgIDxwPnt7IHVzZXIubWZhX2VuYWJsZWQgPyAnMkZBIG9uJyA6ICcyRkEgb2ZmJyB9fTwvcD5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VyUHJvZmlsZUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSBhdGxhcyA9IGluamVjdChBdGxhc1NlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHJhbnNsYXRlKHRoaXMuYXRsYXMubG9jYWxpemF0aW9uLCBrZXkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNscyhrZXk6IEVsZW1lbnRLZXksIGJhc2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNsYXNzRm9yKGtleSwgdGhpcy5hdGxhcy5hcHBlYXJhbmNlLCBiYXNlKTtcbiAgfVxufVxuIl19
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy91c2VyLXByb2ZpbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFFcEM7Ozs7R0FJRztBQWdFSCxNQUFNLE9BQU8sb0JBQW9CO0lBQ1osS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRCw4RUFBOEU7SUFDOUUsNkVBQTZFO0lBQzdFLGlCQUFpQjtJQUNFLFNBQVMsR0FBRyxNQUFNLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBQ3hDLElBQUksR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEIsSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixXQUFXLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBRTlDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBVTtRQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDL0YsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDO1lBQzdELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVTLEtBQUssQ0FBQyxXQUFXO1FBQ3pCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU87UUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSx1QkFBdUIsRUFBRTtZQUM3RixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtTQUNsQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7WUFDL0QsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVTLENBQUMsQ0FBQyxHQUFXO1FBQ3JCLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFUyxHQUFHLENBQUMsR0FBZSxFQUFFLElBQVk7UUFDekMsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7d0dBL0NVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLDhFQTNEckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlEVDs7NEZBRVUsb0JBQW9CO2tCQS9EaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeURUO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF0bGFzU2VydmljZSB9IGZyb20gJy4uL2F0bGFzLnNlcnZpY2UnO1xuaW1wb3J0IHsgY2xhc3NGb3IsIHR5cGUgRWxlbWVudEtleSB9IGZyb20gJy4uL2FwcGVhcmFuY2UnO1xuaW1wb3J0IHsgdHJhbnNsYXRlIH0gZnJvbSAnLi4vaTE4bic7XG5cbi8qKlxuICogYDxhdGxhcy11c2VyLXByb2ZpbGU+YCDigJQgdGhlIHNpZ25lZC1pbiB1c2VyJ3MgYWNjb3VudCBzdXJmYWNlIChlbWFpbHMsXG4gKiBzZWN1cml0eSkuIFRoZSBBbmd1bGFyIHBlZXIgb2YgUmVhY3QncyBgPFVzZXJQcm9maWxlLz5gLiBSZW5kZXJzIG5vdGhpbmcgd2hlblxuICogdGhlcmUgaXMgbm8gdXNlci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXRsYXMtdXNlci1wcm9maWxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChhdGxhcy51c2VyKCk7IGFzIHVzZXIpIHtcbiAgICAgIDxkaXYgW2NsYXNzXT1cImNscygnY2FyZCcsICdhdGxhcy1jYXJkJylcIj5cbiAgICAgICAgPGgxPnt7IHQoJ3VzZXJQcm9maWxlLnRpdGxlJykgfX08L2gxPlxuXG4gICAgICAgIDxzZWN0aW9uPlxuICAgICAgICAgIDxoMj57eyB0KCd1c2VyUHJvZmlsZS5lbWFpbHNTZWN0aW9uJykgfX08L2gyPlxuICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgIEBmb3IgKGVtYWlsIG9mIHVzZXIuZW1haWxfYWRkcmVzc2VzID8/IFtdOyB0cmFjayBlbWFpbC5pZCkge1xuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAge3sgZW1haWwuZW1haWxfYWRkcmVzcyB9fVxuICAgICAgICAgICAgICAgIEBpZiAoIWVtYWlsLnZlcmlmaWVkKSB7XG4gICAgICAgICAgICAgICAgICA8ZW0+IOKAlCB7eyB0KCd1c2VyUHJvZmlsZS51bnZlcmlmaWVkJykgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgQGlmICh2ZXJpZnlpbmcoKSA9PT0gZW1haWwuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gZGF0YS1hdGxhcz1cImVtYWlsLXZlcmlmeVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUZpZWxkSW5wdXQnLCAnYXRsYXMtYWNjb3VudC1pbnB1dCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib25lLXRpbWUtY29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidCgndXNlclByb2ZpbGUudmVyaWZ5Q29kZVBsYWNlaG9sZGVyJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiY29kZS5zZXQoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNscygnZm9ybUJ1dHRvblNlY29uZGFyeScsICdhdGxhcy1idXR0b24tc2Vjb25kYXJ5JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnVzeSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtQ29kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0KCd1c2VyUHJvZmlsZS52ZXJpZnlDb25maXJtJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2xzKCdmb3JtQnV0dG9uU2Vjb25kYXJ5JywgJ2F0bGFzLWJ1dHRvbi1zZWNvbmRhcnknKVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1c3koKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbmRDb2RlKGVtYWlsLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyB0KCd1c2VyUHJvZmlsZS52ZXJpZnknKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgICBAaWYgKHZlcmlmeUVycm9yKCk7IGFzIG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIDxwIHJvbGU9XCJhbGVydFwiPnt7IG1lc3NhZ2UgfX08L3A+XG4gICAgICAgICAgfVxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPHNlY3Rpb24+XG4gICAgICAgICAgPGgyPnt7IHQoJ3VzZXJQcm9maWxlLnNlY3VyaXR5U2VjdGlvbicpIH19PC9oMj5cbiAgICAgICAgICA8cD57eyB1c2VyLm1mYV9lbmFibGVkID8gJzJGQSBvbicgOiAnMkZBIG9mZicgfX08L3A+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgVXNlclByb2ZpbGVDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXRsYXMgPSBpbmplY3QoQXRsYXNTZXJ2aWNlKTtcbiAgLy8gQW4gdW52ZXJpZmllZCBhZGRyZXNzIChhZGRlZCBhbmQgbmV2ZXIgY29uZmlybWVkLCBvciB0aGUgc2lnbi11cCBhZGRyZXNzIG9uXG4gIC8vIGFuIGFwcCB0aGF0IGRpZCBub3QgcmVxdWlyZSB2ZXJpZmljYXRpb24pIGNhbiBiZSBwcm92ZW4gaGVyZTogc2VuZCBhIGNvZGUsXG4gIC8vIHRoZW4gZW50ZXIgaXQuXG4gIHByb3RlY3RlZCByZWFkb25seSB2ZXJpZnlpbmcgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb2RlID0gc2lnbmFsKCcnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGJ1c3kgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmVyaWZ5RXJyb3IgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50ID0gdGhpcy5hdGxhcy5jcmVhdGVGYXBpQ2xpZW50KCk7XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHNlbmRDb2RlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnZlcmlmeUVycm9yLnNldChudWxsKTtcbiAgICB0aGlzLmJ1c3kuc2V0KHRydWUpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuY2xpZW50LnBvc3QoYC92MS9jbGllbnQvbWUvZW1haWxfYWRkcmVzc2VzLyR7aWR9L3ByZXBhcmVfdmVyaWZpY2F0aW9uYCk7XG4gICAgdGhpcy5idXN5LnNldChmYWxzZSk7XG4gICAgaWYgKCFyZXMub2spIHtcbiAgICAgIHRoaXMudmVyaWZ5RXJyb3Iuc2V0KHRoaXMudCgndXNlclByb2ZpbGUudmVyaWZ5U2VuZEZhaWxlZCcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jb2RlLnNldCgnJyk7XG4gICAgdGhpcy52ZXJpZnlpbmcuc2V0KGlkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjb25maXJtQ29kZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpZCA9IHRoaXMudmVyaWZ5aW5nKCk7XG4gICAgaWYgKCFpZCkgcmV0dXJuO1xuICAgIHRoaXMudmVyaWZ5RXJyb3Iuc2V0KG51bGwpO1xuICAgIHRoaXMuYnVzeS5zZXQodHJ1ZSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jbGllbnQucG9zdChgL3YxL2NsaWVudC9tZS9lbWFpbF9hZGRyZXNzZXMvJHtpZH0vYXR0ZW1wdF92ZXJpZmljYXRpb25gLCB7XG4gICAgICBjb2RlOiB0aGlzLmNvZGUoKSxcbiAgICB9KTtcbiAgICB0aGlzLmJ1c3kuc2V0KGZhbHNlKTtcbiAgICBpZiAoIXJlcy5vaykge1xuICAgICAgdGhpcy52ZXJpZnlFcnJvci5zZXQodGhpcy50KCd1c2VyUHJvZmlsZS52ZXJpZnlDb2RlUmVqZWN0ZWQnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmVyaWZ5aW5nLnNldChudWxsKTtcbiAgICBhd2FpdCB0aGlzLmF0bGFzLnJlbG9hZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0cmFuc2xhdGUodGhpcy5hdGxhcy5sb2NhbGl6YXRpb24sIGtleSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xzKGtleTogRWxlbWVudEtleSwgYmFzZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2xhc3NGb3Ioa2V5LCB0aGlzLmF0bGFzLmFwcGVhcmFuY2UsIGJhc2UpO1xuICB9XG59XG4iXX0=
@@ -73,6 +73,11 @@ export const EN_US = {
73
73
  'userProfile.addEmail': 'Add an email address',
74
74
  'userProfile.makePrimary': 'Make primary',
75
75
  'userProfile.unverified': 'Unverified',
76
+ 'userProfile.verify': 'Verify',
77
+ 'userProfile.verifyConfirm': 'Confirm',
78
+ 'userProfile.verifyCodePlaceholder': 'Code from the email',
79
+ 'userProfile.verifySendFailed': 'We could not send a code right now. Try again in a minute.',
80
+ 'userProfile.verifyCodeRejected': 'That code was not accepted.',
76
81
  'userProfile.revokeDevice': 'Sign out',
77
82
  'userProfile.deleteAccount': 'Delete account',
78
83
  'organization.switcher': 'Switch organization',
@@ -138,4 +143,4 @@ export function translate(catalog, key, variables = {}) {
138
143
  export function withFallback(locale) {
139
144
  return { ...EN_US, ...locale };
140
145
  }
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBSUgsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFZO0lBQzVCLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLGlCQUFpQixFQUFFLDhCQUE4QjtJQUNqRCx3QkFBd0IsRUFBRSxlQUFlO0lBQ3pDLHNCQUFzQixFQUFFLFVBQVU7SUFDbEMsZUFBZSxFQUFFLFVBQVU7SUFDM0IsdUJBQXVCLEVBQUUsa0JBQWtCO0lBQzNDLGtCQUFrQixFQUFFLGFBQWE7SUFDakMsbUJBQW1CLEVBQUUsU0FBUztJQUM5QixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLHFCQUFxQixFQUFFLDBCQUEwQjtJQUNqRCx1QkFBdUIsRUFBRSxtQkFBbUI7SUFDNUMscUJBQXFCLEVBQUUsaUJBQWlCO0lBQ3hDLG1CQUFtQixFQUFFLDRDQUE0QztJQUNqRSxtQkFBbUIsRUFBRSxhQUFhO0lBQ2xDLHNCQUFzQixFQUFFLHNDQUFzQztJQUM5RCxzQkFBc0IsRUFBRSwrREFBK0Q7SUFFdkYsY0FBYyxFQUFFLHFCQUFxQjtJQUNyQyxlQUFlLEVBQUUsVUFBVTtJQUMzQixvQkFBb0IsRUFBRSwwQkFBMEI7SUFDaEQsbUJBQW1CLEVBQUUsU0FBUztJQUM5QixtQkFBbUIsRUFBRSxlQUFlO0lBQ3BDLHNCQUFzQixFQUFFLFVBQVU7SUFDbEMsc0JBQXNCLEVBQUUsb0JBQW9CO0lBQzVDLDBCQUEwQixFQUFFLFNBQVM7SUFDckMscUJBQXFCLEVBQUUsZ0JBQWdCO0lBQ3ZDLHNCQUFzQixFQUFFLGdDQUFnQztJQUN4RCxjQUFjLEVBQUUsa0JBQWtCO0lBQ2xDLGdCQUFnQixFQUFFLGdCQUFnQjtJQUNsQyxZQUFZLEVBQUUsS0FBSztJQUNuQixrREFBa0Q7SUFDbEQseUJBQXlCLEVBQ3ZCLDJGQUEyRjtJQUU3RixnQkFBZ0IsRUFBRSww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RSxzRUFBc0U7SUFDeEcsb0JBQW9CLEVBQUUsK0RBQStEO0lBQ3JGLHlCQUF5QixFQUFFLG9DQUFvQztJQUMvRCx5QkFBeUIsRUFBRSxvQ0FBb0M7SUFDL0QseUJBQXlCLEVBQUUscURBQXFEO0lBQ2hGLDBCQUEwQixFQUFFLHdEQUF3RDtDQUNyRixDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsT0FBZ0IsRUFDaEIsR0FBVyxFQUNYLFlBQW9DLEVBQUU7SUFFdEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDbkQsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFZLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBZTtJQUMxQyxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDCpzEwLjM6IFwiRXZlcnkgc3RyaW5nIHBhc3NlcyB0aHJvdWdoIGFuIGkxOG4gY2F0YWxvZzsgZW4tVVMgc2hpcHMsIGNhdGFsb2dcbiAqIGZvcm1hdCBkb2N1bWVudGVkIGZvciBjb21tdW5pdHkgbG9jYWxlcy5cIlxuICpcbiAqIEEgZmxhdCBrZXktdG8tc3RyaW5nIG1hcCByYXRoZXIgdGhhbiBuZXN0ZWQgb2JqZWN0cywgYmVjYXVzZSBuZXN0aW5nIGxvb2tzXG4gKiB0aWRpZXIgYW5kIG1ha2VzIGEgbWlzc2luZyBrZXkgYSBydW50aW1lIGNyYXNoIG9uIGB1bmRlZmluZWQub2YuYS5jaGFpbmBcbiAqIHJhdGhlciB0aGFuIGEgdmlzaWJsZSBmYWxsYmFjay5cbiAqXG4gKiBBIG1pc3Npbmcga2V5IHJlbmRlcnMgdGhlIEtFWSwgbm90IGFuIGVtcHR5IHN0cmluZy4gQSBibGFuayBidXR0b24gaXMgYSBidWdcbiAqIG5vYm9keSBjYW4gcmVwb3J0OyBhIGJ1dHRvbiByZWFkaW5nIGBzaWduSW4uc3VibWl0YCBpcyBvbmUgYW55b25lIGNhbi5cbiAqL1xuXG5leHBvcnQgdHlwZSBDYXRhbG9nID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IGNvbnN0IEVOX1VTOiBDYXRhbG9nID0ge1xuICAnc2lnbkluLnRpdGxlJzogJ1NpZ24gaW4nLFxuICAnc2lnbkluLnN1YnRpdGxlJzogJ3RvIGNvbnRpbnVlIHRvIHthcHBsaWNhdGlvbn0nLFxuICAnc2lnbkluLmlkZW50aWZpZXJMYWJlbCc6ICdFbWFpbCBhZGRyZXNzJyxcbiAgJ3NpZ25Jbi5wYXNzd29yZExhYmVsJzogJ1Bhc3N3b3JkJyxcbiAgJ3NpZ25Jbi5zdWJtaXQnOiAnQ29udGludWUnLFxuICAnc2lnbkluLmZvcmdvdFBhc3N3b3JkJzogJ0ZvcmdvdCBwYXNzd29yZD8nLFxuICAnc2lnbkluLm5vQWNjb3VudCc6ICdObyBhY2NvdW50PycsXG4gICdzaWduSW4uc2lnblVwTGluayc6ICdTaWduIHVwJyxcbiAgJ3NpZ25Jbi5vckRpdmlkZXInOiAnb3InLFxuICAnc2lnbkluLnNvY2lhbEJ1dHRvbic6ICdDb250aW51ZSB3aXRoIHtwcm92aWRlcn0nLFxuICAnc2lnbkluLmVtYWlsQ29kZUxhYmVsJzogJ1ZlcmlmaWNhdGlvbiBjb2RlJyxcbiAgJ3NpZ25Jbi51c2VFbWFpbENvZGUnOiAnRW1haWwgbWUgYSBjb2RlJyxcbiAgJ3NpZ25Jbi5jb2RlU2VudFRvJzogJ1dlIHNlbnQgYSBjb2RlIHRvIHtlbWFpbH0uIEVudGVyIGl0IGJlbG93LicsXG4gICdzaWduSW4ucmVzZW5kQ29kZSc6ICdSZXNlbmQgY29kZScsXG4gICdzaWduSW4ubWFnaWNMaW5rU2VudCc6ICdDaGVjayB5b3VyIGVtYWlsIGZvciBhIHNpZ24taW4gbGluay4nLFxuICAnc2lnbkluLmNoZWNrT3RoZXJUYWInOiAnWW91IGNhbiBjbG9zZSB0aGlzIHRhYiDigJQgeW91IGFyZSBzaWduZWQgaW4gd2hlcmUgeW91IHN0YXJ0ZWQuJyxcblxuICAnc2lnblVwLnRpdGxlJzogJ0NyZWF0ZSB5b3VyIGFjY291bnQnLFxuICAnc2lnblVwLnN1Ym1pdCc6ICdDb250aW51ZScsXG4gICdzaWduVXAuaGF2ZUFjY291bnQnOiAnQWxyZWFkeSBoYXZlIGFuIGFjY291bnQ/JyxcbiAgJ3NpZ25VcC5zaWduSW5MaW5rJzogJ1NpZ24gaW4nLFxuICAnc2lnblVwLmVtYWlsTGFiZWwnOiAnRW1haWwgYWRkcmVzcycsXG4gICdzaWduVXAucGFzc3dvcmRMYWJlbCc6ICdQYXNzd29yZCcsXG4gICdzaWduVXAub3B0aW9uYWxGaWVsZCc6ICd7bGFiZWx9IChvcHRpb25hbCknLFxuICAnc2lnblVwLnNlbGVjdFBsYWNlaG9sZGVyJzogJ1NlbGVjdOKApicsXG4gICdzaWduVXAuY29uc2VudEFncmVlJzogJ0kgYWdyZWUgdG8gdGhlJyxcbiAgJ3NpZ25VcC5jb25zZW50Tm90aWNlJzogJ0J5IGNvbnRpbnVpbmcgeW91IGFncmVlIHRvIHRoZScsXG4gICdzaWduVXAudGVybXMnOiAnVGVybXMgb2YgU2VydmljZScsXG4gICdzaWduVXAucHJpdmFjeSc6ICdQcml2YWN5IFBvbGljeScsXG4gICdzaWduVXAuYW5kJzogJ2FuZCcsXG4gIC8vID0gRU1BSUxfVU5BVkFJTEFCTEVfTUVTU0FHRSBmcm9tIEBhdGxhc2F1dGgvanMuXG4gICdzaWduVXAuZW1haWxVbmF2YWlsYWJsZSc6XG4gICAgXCJUaGlzIGFwcCBjYW4ndCBzZW5kIGVtYWlsIHJpZ2h0IG5vdy4gVHJ5IGFub3RoZXIgc2lnbi1pbiBtZXRob2Qgb3IgY29udGFjdCB0aGUgYXBwIG93bmVyLlwiLFxuXG4gICdjYXB0Y2hhLnByb21wdCc6ICdDb21wbGV0ZSB0aGUgc2VjdXJpdHkgY2hlY2sgdG8gY29udGludWUuJyxcbiAgJ2NhcHRjaGEucmVxdWlyZWQnOiAnUGxlYXNlIGNvbXBsZXRlIHRoZSBzZWN1cml0eSBjaGVjaywgdGhlbiB0cnkgYWdhaW4uJyxcbiAgJ2NhcHRjaGEuZmFpbGVkJzogXCJUaGUgc2VjdXJpdHkgY2hlY2sgZGlkbid0IHBhc3MuIFBsZWFzZSB0cnkgYWdhaW4uXCIsXG4gICdjYXB0Y2hhLmNoZWNraW5nJzogJ0NoZWNraW5nIHlvdXIgYnJvd3NlcuKApicsXG4gICdjYXB0Y2hhLnZlcmlmaWVkJzogJ1NlY3VyaXR5IGNoZWNrIGNvbXBsZXRlLicsXG4gICdjYXB0Y2hhLnB1enpsZVByb21wdCc6IFwiU2VsZWN0IGV2ZXJ5IHBpY3R1cmUgdGhhdCBzaG93cyB0aGUgc2FtZSBzaGFwZSBhcyB0aGlzIG9uZS4gQ29sb3VyIGFuZCBzaXplIGRvbid0IG1hdHRlci5cIixcbiAgJ2NhcHRjaGEucHV6emxlQ29uZmlybSc6ICdDb25maXJtJyxcbiAgJ2NhcHRjaGEucHV6emxlVGlsZSc6ICdQaWN0dXJlIHtufScsXG4gICdjYXB0Y2hhLnB1enpsZUFsdGVybmF0aXZlJzogXCJDYW4ndCBkbyB0aGUgcGljdHVyZSBjaGVjaz8gVXNlIGEgbG9uZ2VyIGF1dG9tYXRpYyBjaGVjayBpbnN0ZWFkLlwiLFxuXG4gICdtZmEudGl0bGUnOiAnVHdvLXN0ZXAgdmVyaWZpY2F0aW9uJyxcbiAgJ21mYS5zdWJ0aXRsZSc6ICdFbnRlciB0aGUgY29kZSBmcm9tIHlvdXIgYXV0aGVudGljYXRvciBhcHAuJyxcbiAgJ21mYS5jb2RlTGFiZWwnOiAnQ29kZScsXG4gICdtZmEuZW5yb2xsRmlyc3RDb2RlTGFiZWwnOiAnQ29kZSBmcm9tIHlvdXIgYXV0aGVudGljYXRvciBhcHAnLFxuICAnbWZhLmVucm9sbFNlY29uZENvZGVMYWJlbCc6ICdUaGUgbmV4dCBjb2RlIGl0IHNob3dzJyxcbiAgJ21mYS51c2VQYXNza2V5JzogJ1VzZSBhIHBhc3NrZXkgaW5zdGVhZCcsXG4gICdtZmEudXNlQmFja3VwQ29kZSc6ICdVc2UgYSByZWNvdmVyeSBjb2RlJyxcbiAgJ21mYS5zdWJtaXQnOiAnVmVyaWZ5JyxcblxuICAncmVzZXQudGl0bGUnOiAnUmVzZXQgeW91ciBwYXNzd29yZCcsXG4gICdyZXNldC5zdWJtaXQnOiAnU2VuZCByZXNldCBjb2RlJyxcbiAgJ3Jlc2V0Lm5ld1Bhc3N3b3JkTGFiZWwnOiAnTmV3IHBhc3N3b3JkJyxcblxuICAndXNlckJ1dHRvbi5tYW5hZ2VBY2NvdW50JzogJ01hbmFnZSBhY2NvdW50JyxcbiAgJ3VzZXJCdXR0b24uc2lnbk91dCc6ICdTaWduIG91dCcsXG4gICd1c2VyQnV0dG9uLnNpZ25PdXRBbGwnOiAnU2lnbiBvdXQgb2YgYWxsIGRldmljZXMnLFxuXG4gICd1c2VyUHJvZmlsZS50aXRsZSc6ICdBY2NvdW50JyxcbiAgJ3VzZXJQcm9maWxlLnByb2ZpbGVTZWN0aW9uJzogJ1Byb2ZpbGUnLFxuICAndXNlclByb2ZpbGUuZW1haWxzU2VjdGlvbic6ICdFbWFpbCBhZGRyZXNzZXMnLFxuICAndXNlclByb2ZpbGUuc2VjdXJpdHlTZWN0aW9uJzogJ1NlY3VyaXR5JyxcbiAgJ3VzZXJQcm9maWxlLmRldmljZXNTZWN0aW9uJzogJ0FjdGl2ZSBkZXZpY2VzJyxcbiAgJ3VzZXJQcm9maWxlLmRhbmdlclNlY3Rpb24nOiAnRGFuZ2VyIHpvbmUnLFxuICAndXNlclByb2ZpbGUuYWRkRW1haWwnOiAnQWRkIGFuIGVtYWlsIGFkZHJlc3MnLFxuICAndXNlclByb2ZpbGUubWFrZVByaW1hcnknOiAnTWFrZSBwcmltYXJ5JyxcbiAgJ3VzZXJQcm9maWxlLnVudmVyaWZpZWQnOiAnVW52ZXJpZmllZCcsXG4gICd1c2VyUHJvZmlsZS5yZXZva2VEZXZpY2UnOiAnU2lnbiBvdXQnLFxuICAndXNlclByb2ZpbGUuZGVsZXRlQWNjb3VudCc6ICdEZWxldGUgYWNjb3VudCcsXG5cbiAgJ29yZ2FuaXphdGlvbi5zd2l0Y2hlcic6ICdTd2l0Y2ggb3JnYW5pemF0aW9uJyxcbiAgJ29yZ2FuaXphdGlvbi5wZXJzb25hbCc6ICdQZXJzb25hbCBhY2NvdW50JyxcbiAgJ29yZ2FuaXphdGlvbi5tZW1iZXJzJzogJ01lbWJlcnMnLFxuICAnb3JnYW5pemF0aW9uLmludml0ZSc6ICdJbnZpdGUgbWVtYmVyJyxcbiAgJ29yZ2FuaXphdGlvbi5yb2xlTGFiZWwnOiAnUm9sZScsXG5cbiAgJ2Vycm9yLmdlbmVyaWMnOiAnU29tZXRoaW5nIHdlbnQgd3JvbmcuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgJ2Vycm9yLm5ldHdvcmsnOiAnV2UgY291bGQgbm90IHJlYWNoIHRoZSBzZXJ2ZXIuIENoZWNrIHlvdXIgY29ubmVjdGlvbi4nLFxuXG4gIC8vIFNlcnZlciBlcnJvcnMsIGJ5IHRoZSBzdGFibGUgYHJlYXNvbmAgdGhlIEZyb250ZW5kIEFQSSBzZW5kcy4gU2hvd24gaW5zdGVhZFxuICAvLyBvZiB0aGUgc2VydmVyJ3MgYG1lc3NhZ2VgIChzZWUgYGxvY2FsaXplZEVycm9yTWVzc2FnZWAgaW4gQGF0bGFzYXV0aC9qcykuXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX2luY29ycmVjdCc6ICdUaG9zZSBjcmVkZW50aWFscyBhcmUgaW5jb3JyZWN0LicsXG4gICdlcnJvci5mb3JtX2NvZGVfaW5jb3JyZWN0JzogJ1RoYXQgY29kZSBpcyBpbmNvcnJlY3QuJyxcbiAgJ2Vycm9yLmZvcm1fY29kZV9hbHJlYWR5X3VzZWQnOiAnVGhhdCBjb2RlIGhhcyBhbHJlYWR5IGJlZW4gdXNlZC4gV2FpdCBmb3IgYSBuZXcgb25lLicsXG4gICdlcnJvci5mb3JtX2NvZGVfZXhwaXJlZCc6ICdUaGF0IGNvZGUgaGFzIGV4cGlyZWQuIFJlcXVlc3QgYSBuZXcgb25lLicsXG4gICdlcnJvci5mb3JtX2NvZGVfbWF4X2F0dGVtcHRzJzogJ1RvbyBtYW55IGluY29ycmVjdCBjb2Rlcy4gUmVxdWVzdCBhIG5ldyBjb2RlLicsXG4gICdlcnJvci5mb3JtX2xpbmtfaW52YWxpZCc6ICdUaGF0IHNpZ24taW4gbGluayBpcyBpbnZhbGlkIG9yIGhhcyBhbHJlYWR5IGJlZW4gdXNlZC4nLFxuICAnZXJyb3IuZm9ybV9pZGVudGlmaWVyX25vdF9mb3VuZCc6IFwiV2UgY291bGRuJ3QgZmluZCBhbiBhY2NvdW50IHdpdGggdGhvc2UgZGV0YWlscy5cIixcbiAgJ2Vycm9yLmZvcm1faWRlbnRpZmllcl9leGlzdHMnOiBcIlRoZXJlJ3MgYWxyZWFkeSBhbiBhY2NvdW50IGZvciB0aGlzIGVtYWlsLiBTaWduIGluIHdpdGgge21ldGhvZHN9LlwiLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9wd25lZCc6ICdUaGlzIHBhc3N3b3JkIGhhcyBhcHBlYXJlZCBpbiBhIGtub3duIGRhdGEgYnJlYWNoLiBQbGVhc2UgY2hvb3NlIGEgZGlmZmVyZW50IG9uZS4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF90b29fc2hvcnQnOiAnUGFzc3dvcmQgbXVzdCBiZSBhdCBsZWFzdCB7bWluX2xlbmd0aH0gY2hhcmFjdGVycy4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF90b29fbG9uZyc6ICdQYXNzd29yZCBtdXN0IGJlIGF0IG1vc3Qge21heF9sZW5ndGh9IGNoYXJhY3RlcnMuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcmVxdWlyZXNfdXBwZXJjYXNlJzogJ1Bhc3N3b3JkIG11c3QgY29udGFpbiBhbiB1cHBlcmNhc2UgbGV0dGVyLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3JlcXVpcmVzX2xvd2VyY2FzZSc6ICdQYXNzd29yZCBtdXN0IGNvbnRhaW4gYSBsb3dlcmNhc2UgbGV0dGVyLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3JlcXVpcmVzX251bWJlcic6ICdQYXNzd29yZCBtdXN0IGNvbnRhaW4gYSBudW1iZXIuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcmVxdWlyZXNfc3ltYm9sJzogJ1Bhc3N3b3JkIG11c3QgY29udGFpbiBhIHN5bWJvbC4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9ub3RfYWxsb3dlZCc6ICdUaGF0IHBhc3N3b3JkIGlzIG5vdCBhbGxvd2VkLiBDaG9vc2UgYSBkaWZmZXJlbnQgb25lLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX2NvbnRhaW5zX2lkZW50aWZpZXInOiAnUGFzc3dvcmQgbXVzdCBub3QgY29udGFpbiB5b3VyIGVtYWlsIG9yIHVzZXJuYW1lLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3NhbWVfYXNfY3VycmVudCc6ICdZb3VyIG5ldyBwYXNzd29yZCBtdXN0IGJlIGRpZmZlcmVudCBmcm9tIHlvdXIgY3VycmVudCBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcmV1c2VkJzogJ1lvdXIgbmV3IHBhc3N3b3JkIG11c3Qgbm90IG1hdGNoIGFueSBvZiB5b3VyIGxhc3Qge2hpc3RvcnlfY291bnR9IHBhc3N3b3Jkcy4nLFxuICAnZXJyb3IucGFzc3dvcmRfZXhwaXJlZCc6ICdZb3VyIHBhc3N3b3JkIGhhcyBleHBpcmVkLiBSZXNldCBpdCB0byBjb250aW51ZS4nLFxuICAnZXJyb3IuZW1haWxfbm90X3ZlcmlmaWVkJzogJ1lvdXIgZW1haWwgYWRkcmVzcyBpcyBub3QgdmVyaWZpZWQgeWV0LiBWZXJpZnkgaXQgYmVmb3JlIHNpZ25pbmcgaW4gd2l0aCB5b3VyIHBhc3N3b3JkLicsXG4gICdlcnJvci5zaWduX2luX3Rva2VuX2ludmFsaWQnOiAnVGhhdCBzaWduLWluIHRva2VuIGlzIGludmFsaWQgb3IgaGFzIGV4cGlyZWQuJyxcbiAgJ2Vycm9yLnRvb19tYW55X2F0dGVtcHRzJzogJ1RvbyBtYW55IGZhaWxlZCBhdHRlbXB0cy4gVHJ5IGFnYWluIGxhdGVyLicsXG4gICdlcnJvci50b29fbWFueV9yZXF1ZXN0cyc6ICdUb28gbWFueSByZXF1ZXN0cy4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4nLFxuICAnZXJyb3IuY2FwdGNoYV9yZXF1aXJlZCc6ICdQbGVhc2UgY29tcGxldGUgdGhlIHNlY3VyaXR5IGNoZWNrLCB0aGVuIHRyeSBhZ2Fpbi4nLFxuICAnZXJyb3IuY2FwdGNoYV9mYWlsZWQnOiBcIlRoZSBzZWN1cml0eSBjaGVjayBkaWRuJ3QgcGFzcy4gUGxlYXNlIHRyeSBhZ2Fpbi5cIixcbiAgJ2Vycm9yLmNhcHRjaGFfdW5hdmFpbGFibGUnOiAnVGhlIHNlY3VyaXR5IGNoZWNrIGlzIHVuYXZhaWxhYmxlIHJpZ2h0IG5vdy4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4nLFxuICAnZXJyb3IuZW1haWxfZGVsaXZlcnlfdW5hdmFpbGFibGUnOiBcIlRoaXMgYXBwIGNhbid0IHNlbmQgZW1haWwgcmlnaHQgbm93LiBUcnkgYW5vdGhlciBzaWduLWluIG1ldGhvZCBvciBjb250YWN0IHRoZSBhcHAgb3duZXIuXCIsXG4gICdlcnJvci5zdHJhdGVneV9kaXNhYmxlZCc6ICdUaGlzIHNpZ24taW4gbWV0aG9kIGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgYXBwLicsXG4gICdlcnJvci5zaWduX3VwX3Jlc3RyaWN0ZWQnOiAnU2lnbi11cCBvbiB0aGlzIGFwcCBpcyBieSBpbnZpdGF0aW9uIG9ubHkuJyxcbiAgJ2Vycm9yLndhaXRsaXN0ZWQnOiBcIllvdSdyZSBvbiB0aGUgd2FpdGxpc3QuIFdlJ2xsIGVtYWlsIHlvdSB3aGVuIGEgcGxhY2Ugb3BlbnMgdXAuXCIsXG4gICdlcnJvci5pZGVudGlmaWVyX25vdF9hbGxvd2VkJzogJ1RoaXMgZW1haWwgb3IgcGhvbmUgbnVtYmVyIGlzIG5vdCBhbGxvd2VkIG9uIHRoaXMgYXBwLicsXG4gICdlcnJvci5kaXNwb3NhYmxlX2VtYWlsX2Jsb2NrZWQnOiAnU2lnbi11cCB3aXRoIGEgZGlzcG9zYWJsZSBvciB0ZW1wb3JhcnkgZW1haWwgYWRkcmVzcyBpcyBub3QgYWxsb3dlZC4nLFxuICAnZXJyb3Iuc3NvX3JlcXVpcmVkJzogJ1RoaXMgb3JnYW5pemF0aW9uIHJlcXVpcmVzIHNpZ25pbmcgaW4gdGhyb3VnaCBzaW5nbGUgc2lnbi1vbi4nLFxuICAnZXJyb3Iuc2lnbl9pbnNfZGlzYWJsZWQnOiAnU2lnbi1pbnMgYXJlIHRlbXBvcmFyaWx5IGRpc2FibGVkLicsXG4gICdlcnJvci5zaWduX3Vwc19kaXNhYmxlZCc6ICdTaWduLXVwcyBhcmUgdGVtcG9yYXJpbHkgZGlzYWJsZWQuJyxcbiAgJ2Vycm9yLmhpZ2hfcmlza19ibG9ja2VkJzogJ1RoaXMgc2lnbi1pbiB3YXMgYmxvY2tlZCBiZWNhdXNlIGl0IGxvb2tlZCB1bnVzdWFsLicsXG4gICdlcnJvci5zbXNfcmVnaW9uX2Jsb2NrZWQnOiAnVGV4dCBtZXNzYWdlcyBhcmUgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBwaG9uZSBudW1iZXIuJyxcbn07XG5cbi8qKlxuICogTG9vayB1cCBhIGtleSBhbmQgaW50ZXJwb2xhdGUgYHtwbGFjZWhvbGRlcnN9YC5cbiAqXG4gKiBBbiB1bmtub3duIHBsYWNlaG9sZGVyIGlzIGxlZnQgdmlzaWJsZSBmb3IgdGhlIHNhbWUgcmVhc29uIGEgbWlzc2luZyBrZXkgaXM6XG4gKiBgQ29udGludWUgd2l0aCB7cHJvdmlkZXJ9YCBpbiB0aGUgVUkgaXMgYSBidWcgcmVwb3J0IHdhaXRpbmcgdG8gYmUgZmlsZWQsXG4gKiB3aGVyZWFzIGBDb250aW51ZSB3aXRoIGAgaXMgb25lIG5vYm9keSBub3RpY2VzIHVudGlsIGEgY3VzdG9tZXIgZG9lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0ZShcbiAgY2F0YWxvZzogQ2F0YWxvZyxcbiAga2V5OiBzdHJpbmcsXG4gIHZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgdGVtcGxhdGUgPSBjYXRhbG9nW2tleV0gPz8gRU5fVVNba2V5XSA/PyBrZXk7XG4gIHJldHVybiB0ZW1wbGF0ZS5yZXBsYWNlKC9cXHsoXFx3KylcXH0vZywgKG1hdGNoLCBuYW1lOiBzdHJpbmcpID0+IHZhcmlhYmxlc1tuYW1lXSA/PyBtYXRjaCk7XG59XG5cbi8qKiBNZXJnZSBhIGNvbW11bml0eSBsb2NhbGUgb3ZlciBlbi1VUyBzbyBhIHBhcnRpYWwgdHJhbnNsYXRpb24gc3RpbGwgcmVuZGVycy4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRmFsbGJhY2sobG9jYWxlOiBDYXRhbG9nKTogQ2F0YWxvZyB7XG4gIHJldHVybiB7IC4uLkVOX1VTLCAuLi5sb2NhbGUgfTtcbn1cbiJdfQ==
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBSUgsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFZO0lBQzVCLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLGlCQUFpQixFQUFFLDhCQUE4QjtJQUNqRCx3QkFBd0IsRUFBRSxlQUFlO0lBQ3pDLHNCQUFzQixFQUFFLFVBQVU7SUFDbEMsZUFBZSxFQUFFLFVBQVU7SUFDM0IsdUJBQXVCLEVBQUUsa0JBQWtCO0lBQzNDLGtCQUFrQixFQUFFLGFBQWE7SUFDakMsbUJBQW1CLEVBQUUsU0FBUztJQUM5QixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLHFCQUFxQixFQUFFLDBCQUEwQjtJQUNqRCx1QkFBdUIsRUFBRSxtQkFBbUI7SUFDNUMscUJBQXFCLEVBQUUsaUJBQWlCO0lBQ3hDLG1CQUFtQixFQUFFLDRDQUE0QztJQUNqRSxtQkFBbUIsRUFBRSxhQUFhO0lBQ2xDLHNCQUFzQixFQUFFLHNDQUFzQztJQUM5RCxzQkFBc0IsRUFBRSwrREFBK0Q7SUFFdkYsY0FBYyxFQUFFLHFCQUFxQjtJQUNyQyxlQUFlLEVBQUUsVUFBVTtJQUMzQixvQkFBb0IsRUFBRSwwQkFBMEI7SUFDaEQsbUJBQW1CLEVBQUUsU0FBUztJQUM5QixtQkFBbUIsRUFBRSxlQUFlO0lBQ3BDLHNCQUFzQixFQUFFLFVBQVU7SUFDbEMsc0JBQXNCLEVBQUUsb0JBQW9CO0lBQzVDLDBCQUEwQixFQUFFLFNBQVM7SUFDckMscUJBQXFCLEVBQUUsZ0JBQWdCO0lBQ3ZDLHNCQUFzQixFQUFFLGdDQUFnQztJQUN4RCxjQUFjLEVBQUUsa0JBQWtCO0lBQ2xDLGdCQUFnQixFQUFFLGdCQUFnQjtJQUNsQyxZQUFZLEVBQUUsS0FBSztJQUNuQixrREFBa0Q7SUFDbEQseUJBQXlCLEVBQ3ZCLDJGQUEyRjtJQUU3RixnQkFBZ0IsRUFBRSww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QUEyRjtJQUMvSCx5QkFBeUIsRUFBRSxvREFBb0Q7SUFDL0UsMEJBQTBCLEVBQUUsNENBQTRDO0lBQ3hFLGtCQUFrQixFQUFFLGdFQUFnRTtJQUNwRiw4QkFBOEIsRUFBRSx3REFBd0Q7SUFDeEYsZ0NBQWdDLEVBQUUsc0VBQXNFO0lBQ3hHLG9CQUFvQixFQUFFLCtEQUErRDtJQUNyRix5QkFBeUIsRUFBRSxvQ0FBb0M7SUFDL0QseUJBQXlCLEVBQUUsb0NBQW9DO0lBQy9ELHlCQUF5QixFQUFFLHFEQUFxRDtJQUNoRiwwQkFBMEIsRUFBRSx3REFBd0Q7Q0FDckYsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQ3ZCLE9BQWdCLEVBQ2hCLEdBQVcsRUFDWCxZQUFvQyxFQUFFO0lBRXRDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO0lBQ25ELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsSUFBWSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7QUFDM0YsQ0FBQztBQUVELGtGQUFrRjtBQUNsRixNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQWU7SUFDMUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogwqcxMC4zOiBcIkV2ZXJ5IHN0cmluZyBwYXNzZXMgdGhyb3VnaCBhbiBpMThuIGNhdGFsb2c7IGVuLVVTIHNoaXBzLCBjYXRhbG9nXG4gKiBmb3JtYXQgZG9jdW1lbnRlZCBmb3IgY29tbXVuaXR5IGxvY2FsZXMuXCJcbiAqXG4gKiBBIGZsYXQga2V5LXRvLXN0cmluZyBtYXAgcmF0aGVyIHRoYW4gbmVzdGVkIG9iamVjdHMsIGJlY2F1c2UgbmVzdGluZyBsb29rc1xuICogdGlkaWVyIGFuZCBtYWtlcyBhIG1pc3Npbmcga2V5IGEgcnVudGltZSBjcmFzaCBvbiBgdW5kZWZpbmVkLm9mLmEuY2hhaW5gXG4gKiByYXRoZXIgdGhhbiBhIHZpc2libGUgZmFsbGJhY2suXG4gKlxuICogQSBtaXNzaW5nIGtleSByZW5kZXJzIHRoZSBLRVksIG5vdCBhbiBlbXB0eSBzdHJpbmcuIEEgYmxhbmsgYnV0dG9uIGlzIGEgYnVnXG4gKiBub2JvZHkgY2FuIHJlcG9ydDsgYSBidXR0b24gcmVhZGluZyBgc2lnbkluLnN1Ym1pdGAgaXMgb25lIGFueW9uZSBjYW4uXG4gKi9cblxuZXhwb3J0IHR5cGUgQ2F0YWxvZyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbmV4cG9ydCBjb25zdCBFTl9VUzogQ2F0YWxvZyA9IHtcbiAgJ3NpZ25Jbi50aXRsZSc6ICdTaWduIGluJyxcbiAgJ3NpZ25Jbi5zdWJ0aXRsZSc6ICd0byBjb250aW51ZSB0byB7YXBwbGljYXRpb259JyxcbiAgJ3NpZ25Jbi5pZGVudGlmaWVyTGFiZWwnOiAnRW1haWwgYWRkcmVzcycsXG4gICdzaWduSW4ucGFzc3dvcmRMYWJlbCc6ICdQYXNzd29yZCcsXG4gICdzaWduSW4uc3VibWl0JzogJ0NvbnRpbnVlJyxcbiAgJ3NpZ25Jbi5mb3Jnb3RQYXNzd29yZCc6ICdGb3Jnb3QgcGFzc3dvcmQ/JyxcbiAgJ3NpZ25Jbi5ub0FjY291bnQnOiAnTm8gYWNjb3VudD8nLFxuICAnc2lnbkluLnNpZ25VcExpbmsnOiAnU2lnbiB1cCcsXG4gICdzaWduSW4ub3JEaXZpZGVyJzogJ29yJyxcbiAgJ3NpZ25Jbi5zb2NpYWxCdXR0b24nOiAnQ29udGludWUgd2l0aCB7cHJvdmlkZXJ9JyxcbiAgJ3NpZ25Jbi5lbWFpbENvZGVMYWJlbCc6ICdWZXJpZmljYXRpb24gY29kZScsXG4gICdzaWduSW4udXNlRW1haWxDb2RlJzogJ0VtYWlsIG1lIGEgY29kZScsXG4gICdzaWduSW4uY29kZVNlbnRUbyc6ICdXZSBzZW50IGEgY29kZSB0byB7ZW1haWx9LiBFbnRlciBpdCBiZWxvdy4nLFxuICAnc2lnbkluLnJlc2VuZENvZGUnOiAnUmVzZW5kIGNvZGUnLFxuICAnc2lnbkluLm1hZ2ljTGlua1NlbnQnOiAnQ2hlY2sgeW91ciBlbWFpbCBmb3IgYSBzaWduLWluIGxpbmsuJyxcbiAgJ3NpZ25Jbi5jaGVja090aGVyVGFiJzogJ1lvdSBjYW4gY2xvc2UgdGhpcyB0YWIg4oCUIHlvdSBhcmUgc2lnbmVkIGluIHdoZXJlIHlvdSBzdGFydGVkLicsXG5cbiAgJ3NpZ25VcC50aXRsZSc6ICdDcmVhdGUgeW91ciBhY2NvdW50JyxcbiAgJ3NpZ25VcC5zdWJtaXQnOiAnQ29udGludWUnLFxuICAnc2lnblVwLmhhdmVBY2NvdW50JzogJ0FscmVhZHkgaGF2ZSBhbiBhY2NvdW50PycsXG4gICdzaWduVXAuc2lnbkluTGluayc6ICdTaWduIGluJyxcbiAgJ3NpZ25VcC5lbWFpbExhYmVsJzogJ0VtYWlsIGFkZHJlc3MnLFxuICAnc2lnblVwLnBhc3N3b3JkTGFiZWwnOiAnUGFzc3dvcmQnLFxuICAnc2lnblVwLm9wdGlvbmFsRmllbGQnOiAne2xhYmVsfSAob3B0aW9uYWwpJyxcbiAgJ3NpZ25VcC5zZWxlY3RQbGFjZWhvbGRlcic6ICdTZWxlY3TigKYnLFxuICAnc2lnblVwLmNvbnNlbnRBZ3JlZSc6ICdJIGFncmVlIHRvIHRoZScsXG4gICdzaWduVXAuY29uc2VudE5vdGljZSc6ICdCeSBjb250aW51aW5nIHlvdSBhZ3JlZSB0byB0aGUnLFxuICAnc2lnblVwLnRlcm1zJzogJ1Rlcm1zIG9mIFNlcnZpY2UnLFxuICAnc2lnblVwLnByaXZhY3knOiAnUHJpdmFjeSBQb2xpY3knLFxuICAnc2lnblVwLmFuZCc6ICdhbmQnLFxuICAvLyA9IEVNQUlMX1VOQVZBSUxBQkxFX01FU1NBR0UgZnJvbSBAYXRsYXNhdXRoL2pzLlxuICAnc2lnblVwLmVtYWlsVW5hdmFpbGFibGUnOlxuICAgIFwiVGhpcyBhcHAgY2FuJ3Qgc2VuZCBlbWFpbCByaWdodCBub3cuIFRyeSBhbm90aGVyIHNpZ24taW4gbWV0aG9kIG9yIGNvbnRhY3QgdGhlIGFwcCBvd25lci5cIixcblxuICAnY2FwdGNoYS5wcm9tcHQnOiAnQ29tcGxldGUgdGhlIHNlY3VyaXR5IGNoZWNrIHRvIGNvbnRpbnVlLicsXG4gICdjYXB0Y2hhLnJlcXVpcmVkJzogJ1BsZWFzZSBjb21wbGV0ZSB0aGUgc2VjdXJpdHkgY2hlY2ssIHRoZW4gdHJ5IGFnYWluLicsXG4gICdjYXB0Y2hhLmZhaWxlZCc6IFwiVGhlIHNlY3VyaXR5IGNoZWNrIGRpZG4ndCBwYXNzLiBQbGVhc2UgdHJ5IGFnYWluLlwiLFxuICAnY2FwdGNoYS5jaGVja2luZyc6ICdDaGVja2luZyB5b3VyIGJyb3dzZXLigKYnLFxuICAnY2FwdGNoYS52ZXJpZmllZCc6ICdTZWN1cml0eSBjaGVjayBjb21wbGV0ZS4nLFxuICAnY2FwdGNoYS5wdXp6bGVQcm9tcHQnOiBcIlNlbGVjdCBldmVyeSBwaWN0dXJlIHRoYXQgc2hvd3MgdGhlIHNhbWUgc2hhcGUgYXMgdGhpcyBvbmUuIENvbG91ciBhbmQgc2l6ZSBkb24ndCBtYXR0ZXIuXCIsXG4gICdjYXB0Y2hhLnB1enpsZUNvbmZpcm0nOiAnQ29uZmlybScsXG4gICdjYXB0Y2hhLnB1enpsZVRpbGUnOiAnUGljdHVyZSB7bn0nLFxuICAnY2FwdGNoYS5wdXp6bGVBbHRlcm5hdGl2ZSc6IFwiQ2FuJ3QgZG8gdGhlIHBpY3R1cmUgY2hlY2s/IFVzZSBhIGxvbmdlciBhdXRvbWF0aWMgY2hlY2sgaW5zdGVhZC5cIixcblxuICAnbWZhLnRpdGxlJzogJ1R3by1zdGVwIHZlcmlmaWNhdGlvbicsXG4gICdtZmEuc3VidGl0bGUnOiAnRW50ZXIgdGhlIGNvZGUgZnJvbSB5b3VyIGF1dGhlbnRpY2F0b3IgYXBwLicsXG4gICdtZmEuY29kZUxhYmVsJzogJ0NvZGUnLFxuICAnbWZhLmVucm9sbEZpcnN0Q29kZUxhYmVsJzogJ0NvZGUgZnJvbSB5b3VyIGF1dGhlbnRpY2F0b3IgYXBwJyxcbiAgJ21mYS5lbnJvbGxTZWNvbmRDb2RlTGFiZWwnOiAnVGhlIG5leHQgY29kZSBpdCBzaG93cycsXG4gICdtZmEudXNlUGFzc2tleSc6ICdVc2UgYSBwYXNza2V5IGluc3RlYWQnLFxuICAnbWZhLnVzZUJhY2t1cENvZGUnOiAnVXNlIGEgcmVjb3ZlcnkgY29kZScsXG4gICdtZmEuc3VibWl0JzogJ1ZlcmlmeScsXG5cbiAgJ3Jlc2V0LnRpdGxlJzogJ1Jlc2V0IHlvdXIgcGFzc3dvcmQnLFxuICAncmVzZXQuc3VibWl0JzogJ1NlbmQgcmVzZXQgY29kZScsXG4gICdyZXNldC5uZXdQYXNzd29yZExhYmVsJzogJ05ldyBwYXNzd29yZCcsXG5cbiAgJ3VzZXJCdXR0b24ubWFuYWdlQWNjb3VudCc6ICdNYW5hZ2UgYWNjb3VudCcsXG4gICd1c2VyQnV0dG9uLnNpZ25PdXQnOiAnU2lnbiBvdXQnLFxuICAndXNlckJ1dHRvbi5zaWduT3V0QWxsJzogJ1NpZ24gb3V0IG9mIGFsbCBkZXZpY2VzJyxcblxuICAndXNlclByb2ZpbGUudGl0bGUnOiAnQWNjb3VudCcsXG4gICd1c2VyUHJvZmlsZS5wcm9maWxlU2VjdGlvbic6ICdQcm9maWxlJyxcbiAgJ3VzZXJQcm9maWxlLmVtYWlsc1NlY3Rpb24nOiAnRW1haWwgYWRkcmVzc2VzJyxcbiAgJ3VzZXJQcm9maWxlLnNlY3VyaXR5U2VjdGlvbic6ICdTZWN1cml0eScsXG4gICd1c2VyUHJvZmlsZS5kZXZpY2VzU2VjdGlvbic6ICdBY3RpdmUgZGV2aWNlcycsXG4gICd1c2VyUHJvZmlsZS5kYW5nZXJTZWN0aW9uJzogJ0RhbmdlciB6b25lJyxcbiAgJ3VzZXJQcm9maWxlLmFkZEVtYWlsJzogJ0FkZCBhbiBlbWFpbCBhZGRyZXNzJyxcbiAgJ3VzZXJQcm9maWxlLm1ha2VQcmltYXJ5JzogJ01ha2UgcHJpbWFyeScsXG4gICd1c2VyUHJvZmlsZS51bnZlcmlmaWVkJzogJ1VudmVyaWZpZWQnLFxuICAndXNlclByb2ZpbGUudmVyaWZ5JzogJ1ZlcmlmeScsXG4gICd1c2VyUHJvZmlsZS52ZXJpZnlDb25maXJtJzogJ0NvbmZpcm0nLFxuICAndXNlclByb2ZpbGUudmVyaWZ5Q29kZVBsYWNlaG9sZGVyJzogJ0NvZGUgZnJvbSB0aGUgZW1haWwnLFxuICAndXNlclByb2ZpbGUudmVyaWZ5U2VuZEZhaWxlZCc6ICdXZSBjb3VsZCBub3Qgc2VuZCBhIGNvZGUgcmlnaHQgbm93LiBUcnkgYWdhaW4gaW4gYSBtaW51dGUuJyxcbiAgJ3VzZXJQcm9maWxlLnZlcmlmeUNvZGVSZWplY3RlZCc6ICdUaGF0IGNvZGUgd2FzIG5vdCBhY2NlcHRlZC4nLFxuICAndXNlclByb2ZpbGUucmV2b2tlRGV2aWNlJzogJ1NpZ24gb3V0JyxcbiAgJ3VzZXJQcm9maWxlLmRlbGV0ZUFjY291bnQnOiAnRGVsZXRlIGFjY291bnQnLFxuXG4gICdvcmdhbml6YXRpb24uc3dpdGNoZXInOiAnU3dpdGNoIG9yZ2FuaXphdGlvbicsXG4gICdvcmdhbml6YXRpb24ucGVyc29uYWwnOiAnUGVyc29uYWwgYWNjb3VudCcsXG4gICdvcmdhbml6YXRpb24ubWVtYmVycyc6ICdNZW1iZXJzJyxcbiAgJ29yZ2FuaXphdGlvbi5pbnZpdGUnOiAnSW52aXRlIG1lbWJlcicsXG4gICdvcmdhbml6YXRpb24ucm9sZUxhYmVsJzogJ1JvbGUnLFxuXG4gICdlcnJvci5nZW5lcmljJzogJ1NvbWV0aGluZyB3ZW50IHdyb25nLiBQbGVhc2UgdHJ5IGFnYWluLicsXG4gICdlcnJvci5uZXR3b3JrJzogJ1dlIGNvdWxkIG5vdCByZWFjaCB0aGUgc2VydmVyLiBDaGVjayB5b3VyIGNvbm5lY3Rpb24uJyxcblxuICAvLyBTZXJ2ZXIgZXJyb3JzLCBieSB0aGUgc3RhYmxlIGByZWFzb25gIHRoZSBGcm9udGVuZCBBUEkgc2VuZHMuIFNob3duIGluc3RlYWRcbiAgLy8gb2YgdGhlIHNlcnZlcidzIGBtZXNzYWdlYCAoc2VlIGBsb2NhbGl6ZWRFcnJvck1lc3NhZ2VgIGluIEBhdGxhc2F1dGgvanMpLlxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9pbmNvcnJlY3QnOiAnVGhvc2UgY3JlZGVudGlhbHMgYXJlIGluY29ycmVjdC4nLFxuICAnZXJyb3IuZm9ybV9jb2RlX2luY29ycmVjdCc6ICdUaGF0IGNvZGUgaXMgaW5jb3JyZWN0LicsXG4gICdlcnJvci5mb3JtX2NvZGVfYWxyZWFkeV91c2VkJzogJ1RoYXQgY29kZSBoYXMgYWxyZWFkeSBiZWVuIHVzZWQuIFdhaXQgZm9yIGEgbmV3IG9uZS4nLFxuICAnZXJyb3IuZm9ybV9jb2RlX2V4cGlyZWQnOiAnVGhhdCBjb2RlIGhhcyBleHBpcmVkLiBSZXF1ZXN0IGEgbmV3IG9uZS4nLFxuICAnZXJyb3IuZm9ybV9jb2RlX21heF9hdHRlbXB0cyc6ICdUb28gbWFueSBpbmNvcnJlY3QgY29kZXMuIFJlcXVlc3QgYSBuZXcgY29kZS4nLFxuICAnZXJyb3IuZm9ybV9saW5rX2ludmFsaWQnOiAnVGhhdCBzaWduLWluIGxpbmsgaXMgaW52YWxpZCBvciBoYXMgYWxyZWFkeSBiZWVuIHVzZWQuJyxcbiAgJ2Vycm9yLmZvcm1faWRlbnRpZmllcl9ub3RfZm91bmQnOiBcIldlIGNvdWxkbid0IGZpbmQgYW4gYWNjb3VudCB3aXRoIHRob3NlIGRldGFpbHMuXCIsXG4gICdlcnJvci5mb3JtX2lkZW50aWZpZXJfZXhpc3RzJzogXCJUaGVyZSdzIGFscmVhZHkgYW4gYWNjb3VudCBmb3IgdGhpcyBlbWFpbC4gU2lnbiBpbiB3aXRoIHttZXRob2RzfS5cIixcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcHduZWQnOiAnVGhpcyBwYXNzd29yZCBoYXMgYXBwZWFyZWQgaW4gYSBrbm93biBkYXRhIGJyZWFjaC4gUGxlYXNlIGNob29zZSBhIGRpZmZlcmVudCBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfdG9vX3Nob3J0JzogJ1Bhc3N3b3JkIG11c3QgYmUgYXQgbGVhc3Qge21pbl9sZW5ndGh9IGNoYXJhY3RlcnMuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfdG9vX2xvbmcnOiAnUGFzc3dvcmQgbXVzdCBiZSBhdCBtb3N0IHttYXhfbGVuZ3RofSBjaGFyYWN0ZXJzLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3JlcXVpcmVzX3VwcGVyY2FzZSc6ICdQYXNzd29yZCBtdXN0IGNvbnRhaW4gYW4gdXBwZXJjYXNlIGxldHRlci4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXF1aXJlc19sb3dlcmNhc2UnOiAnUGFzc3dvcmQgbXVzdCBjb250YWluIGEgbG93ZXJjYXNlIGxldHRlci4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXF1aXJlc19udW1iZXInOiAnUGFzc3dvcmQgbXVzdCBjb250YWluIGEgbnVtYmVyLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3JlcXVpcmVzX3N5bWJvbCc6ICdQYXNzd29yZCBtdXN0IGNvbnRhaW4gYSBzeW1ib2wuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfbm90X2FsbG93ZWQnOiAnVGhhdCBwYXNzd29yZCBpcyBub3QgYWxsb3dlZC4gQ2hvb3NlIGEgZGlmZmVyZW50IG9uZS4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9jb250YWluc19pZGVudGlmaWVyJzogJ1Bhc3N3b3JkIG11c3Qgbm90IGNvbnRhaW4geW91ciBlbWFpbCBvciB1c2VybmFtZS4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9zYW1lX2FzX2N1cnJlbnQnOiAnWW91ciBuZXcgcGFzc3dvcmQgbXVzdCBiZSBkaWZmZXJlbnQgZnJvbSB5b3VyIGN1cnJlbnQgb25lLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3JldXNlZCc6ICdZb3VyIG5ldyBwYXNzd29yZCBtdXN0IG5vdCBtYXRjaCBhbnkgb2YgeW91ciBsYXN0IHtoaXN0b3J5X2NvdW50fSBwYXNzd29yZHMuJyxcbiAgJ2Vycm9yLnBhc3N3b3JkX2V4cGlyZWQnOiAnWW91ciBwYXNzd29yZCBoYXMgZXhwaXJlZC4gUmVzZXQgaXQgdG8gY29udGludWUuJyxcbiAgJ2Vycm9yLmVtYWlsX25vdF92ZXJpZmllZCc6ICdZb3VyIGVtYWlsIGFkZHJlc3MgaXMgbm90IHZlcmlmaWVkIHlldC4gVmVyaWZ5IGl0IGJlZm9yZSBzaWduaW5nIGluIHdpdGggeW91ciBwYXNzd29yZC4nLFxuICAnZXJyb3Iuc2lnbl9pbl90b2tlbl9pbnZhbGlkJzogJ1RoYXQgc2lnbi1pbiB0b2tlbiBpcyBpbnZhbGlkIG9yIGhhcyBleHBpcmVkLicsXG4gICdlcnJvci50b29fbWFueV9hdHRlbXB0cyc6ICdUb28gbWFueSBmYWlsZWQgYXR0ZW1wdHMuIFRyeSBhZ2FpbiBsYXRlci4nLFxuICAnZXJyb3IudG9vX21hbnlfcmVxdWVzdHMnOiAnVG9vIG1hbnkgcmVxdWVzdHMuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuJyxcbiAgJ2Vycm9yLmNhcHRjaGFfcmVxdWlyZWQnOiAnUGxlYXNlIGNvbXBsZXRlIHRoZSBzZWN1cml0eSBjaGVjaywgdGhlbiB0cnkgYWdhaW4uJyxcbiAgJ2Vycm9yLmNhcHRjaGFfZmFpbGVkJzogXCJUaGUgc2VjdXJpdHkgY2hlY2sgZGlkbid0IHBhc3MuIFBsZWFzZSB0cnkgYWdhaW4uXCIsXG4gICdlcnJvci5jYXB0Y2hhX3VuYXZhaWxhYmxlJzogJ1RoZSBzZWN1cml0eSBjaGVjayBpcyB1bmF2YWlsYWJsZSByaWdodCBub3cuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuJyxcbiAgJ2Vycm9yLmVtYWlsX2RlbGl2ZXJ5X3VuYXZhaWxhYmxlJzogXCJUaGlzIGFwcCBjYW4ndCBzZW5kIGVtYWlsIHJpZ2h0IG5vdy4gVHJ5IGFub3RoZXIgc2lnbi1pbiBtZXRob2Qgb3IgY29udGFjdCB0aGUgYXBwIG93bmVyLlwiLFxuICAnZXJyb3Iuc3RyYXRlZ3lfZGlzYWJsZWQnOiAnVGhpcyBzaWduLWluIG1ldGhvZCBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIGFwcC4nLFxuICAnZXJyb3Iuc2lnbl91cF9yZXN0cmljdGVkJzogJ1NpZ24tdXAgb24gdGhpcyBhcHAgaXMgYnkgaW52aXRhdGlvbiBvbmx5LicsXG4gICdlcnJvci53YWl0bGlzdGVkJzogXCJZb3UncmUgb24gdGhlIHdhaXRsaXN0LiBXZSdsbCBlbWFpbCB5b3Ugd2hlbiBhIHBsYWNlIG9wZW5zIHVwLlwiLFxuICAnZXJyb3IuaWRlbnRpZmllcl9ub3RfYWxsb3dlZCc6ICdUaGlzIGVtYWlsIG9yIHBob25lIG51bWJlciBpcyBub3QgYWxsb3dlZCBvbiB0aGlzIGFwcC4nLFxuICAnZXJyb3IuZGlzcG9zYWJsZV9lbWFpbF9ibG9ja2VkJzogJ1NpZ24tdXAgd2l0aCBhIGRpc3Bvc2FibGUgb3IgdGVtcG9yYXJ5IGVtYWlsIGFkZHJlc3MgaXMgbm90IGFsbG93ZWQuJyxcbiAgJ2Vycm9yLnNzb19yZXF1aXJlZCc6ICdUaGlzIG9yZ2FuaXphdGlvbiByZXF1aXJlcyBzaWduaW5nIGluIHRocm91Z2ggc2luZ2xlIHNpZ24tb24uJyxcbiAgJ2Vycm9yLnNpZ25faW5zX2Rpc2FibGVkJzogJ1NpZ24taW5zIGFyZSB0ZW1wb3JhcmlseSBkaXNhYmxlZC4nLFxuICAnZXJyb3Iuc2lnbl91cHNfZGlzYWJsZWQnOiAnU2lnbi11cHMgYXJlIHRlbXBvcmFyaWx5IGRpc2FibGVkLicsXG4gICdlcnJvci5oaWdoX3Jpc2tfYmxvY2tlZCc6ICdUaGlzIHNpZ24taW4gd2FzIGJsb2NrZWQgYmVjYXVzZSBpdCBsb29rZWQgdW51c3VhbC4nLFxuICAnZXJyb3Iuc21zX3JlZ2lvbl9ibG9ja2VkJzogJ1RleHQgbWVzc2FnZXMgYXJlIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgcGhvbmUgbnVtYmVyLicsXG59O1xuXG4vKipcbiAqIExvb2sgdXAgYSBrZXkgYW5kIGludGVycG9sYXRlIGB7cGxhY2Vob2xkZXJzfWAuXG4gKlxuICogQW4gdW5rbm93biBwbGFjZWhvbGRlciBpcyBsZWZ0IHZpc2libGUgZm9yIHRoZSBzYW1lIHJlYXNvbiBhIG1pc3Npbmcga2V5IGlzOlxuICogYENvbnRpbnVlIHdpdGgge3Byb3ZpZGVyfWAgaW4gdGhlIFVJIGlzIGEgYnVnIHJlcG9ydCB3YWl0aW5nIHRvIGJlIGZpbGVkLFxuICogd2hlcmVhcyBgQ29udGludWUgd2l0aCBgIGlzIG9uZSBub2JvZHkgbm90aWNlcyB1bnRpbCBhIGN1c3RvbWVyIGRvZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGUoXG4gIGNhdGFsb2c6IENhdGFsb2csXG4gIGtleTogc3RyaW5nLFxuICB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fSxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHRlbXBsYXRlID0gY2F0YWxvZ1trZXldID8/IEVOX1VTW2tleV0gPz8ga2V5O1xuICByZXR1cm4gdGVtcGxhdGUucmVwbGFjZSgvXFx7KFxcdyspXFx9L2csIChtYXRjaCwgbmFtZTogc3RyaW5nKSA9PiB2YXJpYWJsZXNbbmFtZV0gPz8gbWF0Y2gpO1xufVxuXG4vKiogTWVyZ2UgYSBjb21tdW5pdHkgbG9jYWxlIG92ZXIgZW4tVVMgc28gYSBwYXJ0aWFsIHRyYW5zbGF0aW9uIHN0aWxsIHJlbmRlcnMuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aEZhbGxiYWNrKGxvY2FsZTogQ2F0YWxvZyk6IENhdGFsb2cge1xuICByZXR1cm4geyAuLi5FTl9VUywgLi4ubG9jYWxlIH07XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
1
  /** This package's version, sent as `X-Atlas-SDK` (kept in step with package.json by a test). */
2
- export const ATLAS_ANGULAR_VERSION = '0.6.0';
2
+ export const ATLAS_ANGULAR_VERSION = '0.7.0';
3
3
  export const ATLAS_ANGULAR_SDK = { name: '@atlasauth/angular', version: ATLAS_ANGULAR_VERSION };
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxnR0FBZ0c7QUFDaEcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsT0FBTyxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFpQixFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXRsYXNTZGtJbmZvIH0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5cbi8qKiBUaGlzIHBhY2thZ2UncyB2ZXJzaW9uLCBzZW50IGFzIGBYLUF0bGFzLVNES2AgKGtlcHQgaW4gc3RlcCB3aXRoIHBhY2thZ2UuanNvbiBieSBhIHRlc3QpLiAqL1xuZXhwb3J0IGNvbnN0IEFUTEFTX0FOR1VMQVJfVkVSU0lPTiA9ICcwLjYuMCc7XG5leHBvcnQgY29uc3QgQVRMQVNfQU5HVUxBUl9TREs6IEF0bGFzU2RrSW5mbyA9IHsgbmFtZTogJ0BhdGxhc2F1dGgvYW5ndWxhcicsIHZlcnNpb246IEFUTEFTX0FOR1VMQVJfVkVSU0lPTiB9O1xuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxnR0FBZ0c7QUFDaEcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsT0FBTyxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFpQixFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXRsYXNTZGtJbmZvIH0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5cbi8qKiBUaGlzIHBhY2thZ2UncyB2ZXJzaW9uLCBzZW50IGFzIGBYLUF0bGFzLVNES2AgKGtlcHQgaW4gc3RlcCB3aXRoIHBhY2thZ2UuanNvbiBieSBhIHRlc3QpLiAqL1xuZXhwb3J0IGNvbnN0IEFUTEFTX0FOR1VMQVJfVkVSU0lPTiA9ICcwLjcuMCc7XG5leHBvcnQgY29uc3QgQVRMQVNfQU5HVUxBUl9TREs6IEF0bGFzU2RrSW5mbyA9IHsgbmFtZTogJ0BhdGxhc2F1dGgvYW5ndWxhcicsIHZlcnNpb246IEFUTEFTX0FOR1VMQVJfVkVSU0lPTiB9O1xuIl19