@atlasauth/angular 0.12.0 → 0.13.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.
@@ -1,5 +1,5 @@
1
- import { ChangeDetectionStrategy, Component, Input, inject, } from '@angular/core';
2
- import { lastUsedMethodLabel, signUp as hostedSignUp } from '@atlasauth/js';
1
+ import { ChangeDetectionStrategy, Component, Input, computed, effect, inject, } from '@angular/core';
2
+ import { lastUsedMethodLabel, passkeysSupported, signUp as hostedSignUp } from '@atlasauth/js';
3
3
  import { AtlasService } from '../atlas.service';
4
4
  import { translate } from '../i18n';
5
5
  import { AttemptFlowComponent } from './attempt-flow.component';
@@ -35,6 +35,12 @@ export class SignInComponent {
35
35
  return null;
36
36
  return lastUsedMethodLabel(this.flow.lastMethod(), (key) => this.t(key));
37
37
  }
38
+ /** The "Sign in with Atlas" connection, on the first step, when the instance has it on. */
39
+ atlasConnection() {
40
+ if (this.flow.state().attempt || this.flow.recoveryCodes())
41
+ return null;
42
+ return this.flow.settings()?.signInWithAtlas?.connectionId ?? null;
43
+ }
38
44
  signUpHref() {
39
45
  if (this.signUpUrl === null)
40
46
  return null;
@@ -54,7 +60,16 @@ export class SignInComponent {
54
60
  flow = new AtlasFlowController(this.atlas.createFapiClient(), () => this.atlas.reload(),
55
61
  // Resume mid-flow if an OAuth redirect came back owing a second factor.
56
62
  this.atlas.pendingAttempt, (key) => translate(this.atlas.localization, key));
63
+ // Passkey autofill runs while the first step offers passkeys (a computed, so it re-arms only when that changes).
64
+ passkeyOffered = computed(() => this.flow.passkeyOffered());
65
+ passkeyAutofill = effect(() => (this.passkeyOffered() ? this.flow.passkey.armAutofill() : this.flow.passkey.stopAutofill()));
66
+ submitIdentifier(values) {
67
+ this.flow.passkey.stopAutofill();
68
+ void this.flow.submit(values);
69
+ }
57
70
  ngOnInit() {
71
+ if (typeof window !== 'undefined')
72
+ this.flow.passkeySupported.set(passkeysSupported());
58
73
  // If seeded from a pending attempt that is already pollable, start polling.
59
74
  this.flow.syncPolling();
60
75
  // §5 the instance's captcha settings (switching captcha on in the dashboard
@@ -73,6 +88,14 @@ export class SignInComponent {
73
88
  {{ t('signIn.lastUsed') }}: {{ label }}
74
89
  </p>
75
90
  }
91
+ @if (atlasConnection(); as connectionId) {
92
+ <button type="button" class="atlas-social-button" data-atlas-provider="atlas" (click)="flow.signInWithAtlas(connectionId)">
93
+ {{ t('signIn.continueWithAtlas') }}
94
+ </button>
95
+ @if (flow.signInWithAtlasError(); as message) {
96
+ <p class="atlas-error" role="alert">{{ message }}</p>
97
+ }
98
+ }
76
99
  @if (flow.recoveryCodes(); as codes) {
77
100
  <atlas-recovery-codes [codes]="codes" [busy]="flow.state().busy" (saved)="flow.saveRecoveryCodes()"></atlas-recovery-codes>
78
101
  } @else {
@@ -87,7 +110,7 @@ export class SignInComponent {
87
110
  [preparedFactor]="flow.preparedFactor()"
88
111
  [offerEmailSecondFactor]="flow.settings()?.account?.emailSecondFactor === true"
89
112
  [emailedSecondFactor]="flow.emailSecondFactor()"
90
- (submitFlow)="flow.submit($event)"
113
+ (submitFlow)="submitIdentifier($event)"
91
114
  (chooseFactor)="flow.prepare($event)"
92
115
  [offerSmsSecondFactor]="flow.settings() !== null && flow.mfaChoices().sms"
93
116
  [textedSecondFactor]="flow.smsSecondFactor()"
@@ -98,6 +121,17 @@ export class SignInComponent {
98
121
  (policyDeclined)="flow.declinePolicy($event)"
99
122
  ></atlas-attempt-flow>
100
123
  }
124
+ @if (flow.passkeyOffered() && !flow.recoveryCodes()) {
125
+ <button
126
+ type="button"
127
+ class="atlas-social-button atlas-passkey-button"
128
+ data-atlas-passkey-sign-in=""
129
+ [disabled]="flow.state().busy"
130
+ (click)="flow.passkey.signIn()"
131
+ >
132
+ {{ t('signIn.passkeyButton') }}
133
+ </button>
134
+ }
101
135
  @if (flow.state().attempt?.status !== 'complete' && signUpHref(); as href) {
102
136
  <p class="atlas-footer" data-atlas-sign-up-prompt="">
103
137
  {{ t('signIn.noAccount') }} <a class="atlas-link" [href]="href">{{ t('signIn.signUpLink') }}</a>
@@ -118,6 +152,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
118
152
  {{ t('signIn.lastUsed') }}: {{ label }}
119
153
  </p>
120
154
  }
155
+ @if (atlasConnection(); as connectionId) {
156
+ <button type="button" class="atlas-social-button" data-atlas-provider="atlas" (click)="flow.signInWithAtlas(connectionId)">
157
+ {{ t('signIn.continueWithAtlas') }}
158
+ </button>
159
+ @if (flow.signInWithAtlasError(); as message) {
160
+ <p class="atlas-error" role="alert">{{ message }}</p>
161
+ }
162
+ }
121
163
  @if (flow.recoveryCodes(); as codes) {
122
164
  <atlas-recovery-codes [codes]="codes" [busy]="flow.state().busy" (saved)="flow.saveRecoveryCodes()"></atlas-recovery-codes>
123
165
  } @else {
@@ -132,7 +174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
132
174
  [preparedFactor]="flow.preparedFactor()"
133
175
  [offerEmailSecondFactor]="flow.settings()?.account?.emailSecondFactor === true"
134
176
  [emailedSecondFactor]="flow.emailSecondFactor()"
135
- (submitFlow)="flow.submit($event)"
177
+ (submitFlow)="submitIdentifier($event)"
136
178
  (chooseFactor)="flow.prepare($event)"
137
179
  [offerSmsSecondFactor]="flow.settings() !== null && flow.mfaChoices().sms"
138
180
  [textedSecondFactor]="flow.smsSecondFactor()"
@@ -143,6 +185,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
143
185
  (policyDeclined)="flow.declinePolicy($event)"
144
186
  ></atlas-attempt-flow>
145
187
  }
188
+ @if (flow.passkeyOffered() && !flow.recoveryCodes()) {
189
+ <button
190
+ type="button"
191
+ class="atlas-social-button atlas-passkey-button"
192
+ data-atlas-passkey-sign-in=""
193
+ [disabled]="flow.state().busy"
194
+ (click)="flow.passkey.signIn()"
195
+ >
196
+ {{ t('signIn.passkeyButton') }}
197
+ </button>
198
+ }
146
199
  @if (flow.state().attempt?.status !== 'complete' && signUpHref(); as href) {
147
200
  <p class="atlas-footer" data-atlas-sign-up-prompt="">
148
201
  {{ t('signIn.noAccount') }} <a class="atlas-link" [href]="href">{{ t('signIn.signUpLink') }}</a>
@@ -155,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
155
208
  }], signUpUrl: [{
156
209
  type: Input
157
210
  }] } });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvc2lnbi1pbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxJQUFJLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFeEQ7Ozs7Ozs7OztHQVNHO0FBNENILE1BQU0sT0FBTyxlQUFlO0lBQ1QsS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUU5QyxpRkFBaUY7SUFDeEUsUUFBUSxDQUFVO0lBQzNCOzs7O09BSUc7SUFDTSxTQUFTLENBQWlCO0lBRXpCLENBQUMsQ0FBQyxHQUFXO1FBQ3JCLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxzRkFBc0Y7SUFDNUUsYUFBYTtRQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzNDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFUyxVQUFVO1FBQ2xCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMxQyxJQUFJLENBQUM7WUFDSCxPQUFPLFlBQVksQ0FBQztnQkFDbEIsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVztnQkFDbkMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2hHLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRWtCLElBQUksR0FBRyxJQUFJLG1CQUFtQixDQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEVBQzdCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO0lBQ3pCLHdFQUF3RTtJQUN4RSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFDekIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FDakQsQ0FBQztJQUVGLFFBQVE7UUFDTiw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4Qiw0RUFBNEU7UUFDNUUseUVBQXlFO1FBQ3pFLDJDQUEyQztRQUMzQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVc7WUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbkUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3RCLENBQUM7d0dBdkRVLGVBQWU7NEZBQWYsZUFBZSxtSUF0Q2hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQ1QsNERBckNTLG9CQUFvQixnYkFBRSxzQkFBc0I7OzRGQXVDM0MsZUFBZTtrQkEzQzNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsc0JBQXNCLENBQUM7b0JBQ3ZELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0NUO2lCQUNGOzhCQUtVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGxhc3RVc2VkTWV0aG9kTGFiZWwsIHNpZ25VcCBhcyBob3N0ZWRTaWduVXAgfSBmcm9tICdAYXRsYXNhdXRoL2pzJztcbmltcG9ydCB7IEF0bGFzU2VydmljZSB9IGZyb20gJy4uL2F0bGFzLnNlcnZpY2UnO1xuaW1wb3J0IHsgdHJhbnNsYXRlIH0gZnJvbSAnLi4vaTE4bic7XG5pbXBvcnQgeyBBdHRlbXB0Rmxvd0NvbXBvbmVudCB9IGZyb20gJy4vYXR0ZW1wdC1mbG93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWNvdmVyeUNvZGVzQ29tcG9uZW50IH0gZnJvbSAnLi9yZWNvdmVyeS1jb2Rlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXRsYXNGbG93Q29udHJvbGxlciB9IGZyb20gJy4vZmxvdy1jb250cm9sbGVyJztcblxuLyoqXG4gKiBgPGF0bGFzLXNpZ24taW4+YCDigJQgdGhlIGZ1bGwsIG11bHRpLXN0ZXAgc2lnbi1pbiBmbG93IGRyaXZlbiBlbnRpcmVseSBieSB0aGVcbiAqIHNlcnZlci1zaWRlIGF0dGVtcHQgc3RhdHVzLiBUaGUgQW5ndWxhciBwZWVyIG9mIFJlYWN0J3MgYDxTaWduSW4vPmAuIERyYXdzIHRoZVxuICogaW5zdGFuY2UncyBzaWduLWluIGNhcHRjaGEgd2hlbiBpdCBpcyByZXF1aXJlZCAoYWx3YXlzLW9uLCBvciBhXG4gKiBgbmVlZHNfY2FwdGNoYWAgY2hhbGxlbmdlKS5cbiAqXG4gKiBgYGBodG1sXG4gKiA8YXRsYXMtc2lnbi1pbiAqYXRsYXNTaWduZWRPdXQgYWZ0ZXJVcmw9XCIvZGFzaGJvYXJkXCI+PC9hdGxhcy1zaWduLWluPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F0bGFzLXNpZ24taW4nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0F0dGVtcHRGbG93Q29tcG9uZW50LCBSZWNvdmVyeUNvZGVzQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKGxhc3RVc2VkTGFiZWwoKTsgYXMgbGFiZWwpIHtcbiAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dCBhdGxhcy1sYXN0LXVzZWQtaGludFwiIGRhdGEtYXRsYXM9XCJsYXN0LXVzZWRcIiBbYXR0ci5kYXRhLWF0bGFzLW1ldGhvZF09XCJmbG93Lmxhc3RNZXRob2QoKVwiPlxuICAgICAgICB7eyB0KCdzaWduSW4ubGFzdFVzZWQnKSB9fToge3sgbGFiZWwgfX1cbiAgICAgIDwvcD5cbiAgICB9XG4gICAgQGlmIChmbG93LnJlY292ZXJ5Q29kZXMoKTsgYXMgY29kZXMpIHtcbiAgICAgIDxhdGxhcy1yZWNvdmVyeS1jb2RlcyBbY29kZXNdPVwiY29kZXNcIiBbYnVzeV09XCJmbG93LnN0YXRlKCkuYnVzeVwiIChzYXZlZCk9XCJmbG93LnNhdmVSZWNvdmVyeUNvZGVzKClcIj48L2F0bGFzLXJlY292ZXJ5LWNvZGVzPlxuICAgIH0gQGVsc2Uge1xuICAgIDxhdGxhcy1hdHRlbXB0LWZsb3dcbiAgICAgIFthdHRlbXB0XT1cImZsb3cuc3RhdGUoKS5hdHRlbXB0XCJcbiAgICAgIFtidXN5XT1cImZsb3cuc3RhdGUoKS5idXN5XCJcbiAgICAgIFtlcnJvcnNdPVwiZmxvdy5zdGF0ZSgpLmVycm9yc1wiXG4gICAgICBbc2Vzc2lvbktlcHRdPVwiZmxvdy5zdGF0ZSgpLnNlc3Npb25LZXB0XCJcbiAgICAgIHRpdGxlS2V5PVwic2lnbkluLnRpdGxlXCJcbiAgICAgIFtjYXB0Y2hhXT1cImZsb3cuY2FwdGNoYURyYXduKCkgPyBmbG93LmNhcHRjaGEgOiBudWxsXCJcbiAgICAgIFtmaXJzdEZhY3RvcnNdPVwiZmxvdy5maXJzdEZhY3RvcnMoKVwiXG4gICAgICBbcHJlcGFyZWRGYWN0b3JdPVwiZmxvdy5wcmVwYXJlZEZhY3RvcigpXCJcbiAgICAgIFtvZmZlckVtYWlsU2Vjb25kRmFjdG9yXT1cImZsb3cuc2V0dGluZ3MoKT8uYWNjb3VudD8uZW1haWxTZWNvbmRGYWN0b3IgPT09IHRydWVcIlxuICAgICAgW2VtYWlsZWRTZWNvbmRGYWN0b3JdPVwiZmxvdy5lbWFpbFNlY29uZEZhY3RvcigpXCJcbiAgICAgIChzdWJtaXRGbG93KT1cImZsb3cuc3VibWl0KCRldmVudClcIlxuICAgICAgKGNob29zZUZhY3Rvcik9XCJmbG93LnByZXBhcmUoJGV2ZW50KVwiXG4gICAgICBbb2ZmZXJTbXNTZWNvbmRGYWN0b3JdPVwiZmxvdy5zZXR0aW5ncygpICE9PSBudWxsICYmIGZsb3cubWZhQ2hvaWNlcygpLnNtc1wiXG4gICAgICBbdGV4dGVkU2Vjb25kRmFjdG9yXT1cImZsb3cuc21zU2Vjb25kRmFjdG9yKClcIlxuICAgICAgW2Vucm9sbG1lbnRdPVwiZmxvdy5lbnJvbGxtZW50XCJcbiAgICAgIFtlbnJvbGxtZW50U3RhdGVdPVwiZmxvdy5lbnJvbGxtZW50U3RhdGUoKVwiXG4gICAgICAoZW1haWxTZWNvbmRGYWN0b3IpPVwiZmxvdy5zZW5kRW1haWxTZWNvbmRGYWN0b3IoKVwiXG4gICAgICAoc21zU2Vjb25kRmFjdG9yKT1cImZsb3cuc2VuZFNtc1NlY29uZEZhY3RvcigpXCJcbiAgICAgIChwb2xpY3lEZWNsaW5lZCk9XCJmbG93LmRlY2xpbmVQb2xpY3koJGV2ZW50KVwiXG4gICAgPjwvYXRsYXMtYXR0ZW1wdC1mbG93PlxuICAgIH1cbiAgICBAaWYgKGZsb3cuc3RhdGUoKS5hdHRlbXB0Py5zdGF0dXMgIT09ICdjb21wbGV0ZScgJiYgc2lnblVwSHJlZigpOyBhcyBocmVmKSB7XG4gICAgICA8cCBjbGFzcz1cImF0bGFzLWZvb3RlclwiIGRhdGEtYXRsYXMtc2lnbi11cC1wcm9tcHQ9XCJcIj5cbiAgICAgICAge3sgdCgnc2lnbkluLm5vQWNjb3VudCcpIH19IDxhIGNsYXNzPVwiYXRsYXMtbGlua1wiIFtocmVmXT1cImhyZWZcIj57eyB0KCdzaWduSW4uc2lnblVwTGluaycpIH19PC9hPlxuICAgICAgPC9wPlxuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgU2lnbkluQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGF0bGFzID0gaW5qZWN0KEF0bGFzU2VydmljZSk7XG5cbiAgLyoqIFdoZXJlIHRvIHNlbmQgdGhlIHVzZXIgb25jZSB0aGUgZmxvdyBjb21wbGV0ZXMuIFJlc2VydmVkIGZvciBob3N0IHJvdXRpbmcuICovXG4gIEBJbnB1dCgpIGFmdGVyVXJsPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hlcmUgXCJObyBhY2NvdW50PyBTaWduIHVwXCIgZ29lcy4gRGVmYXVsdDogdGhlIGluc3RhbmNlJ3MgaG9zdGVkIHNpZ24tdXBcbiAgICogcGFnZSAoY2FycnlpbmcgdGhlIHZpc2l0b3IncyByZWZlcnJhbCkuIGBudWxsYCBoaWRlcyBpdC4gQWx3YXlzIHNob3duLCBuZXZlclxuICAgKiBvbmx5IGFmdGVyIGEgZmFpbGVkIHNpZ24taW4sIHNvIGl0IHNheXMgbm90aGluZyBhYm91dCB3aGV0aGVyIGFuIGVtYWlsIGhhcyBhbiBhY2NvdW50LlxuICAgKi9cbiAgQElucHV0KCkgc2lnblVwVXJsPzogc3RyaW5nIHwgbnVsbDtcblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZSh0aGlzLmF0bGFzLmxvY2FsaXphdGlvbiwga2V5KTtcbiAgfVxuXG4gIC8qKiBcIkxhc3QgdXNlZDogUGFzc3dvcmRcIiBvbiB0aGUgaWRlbnRpZmllciBzdGVwLCB3aGVuIHRoZSBpbnN0YW5jZSBzaG93cyB0aGUgaGludC4gKi9cbiAgcHJvdGVjdGVkIGxhc3RVc2VkTGFiZWwoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuZmxvdy5zdGF0ZSgpLmF0dGVtcHQpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBsYXN0VXNlZE1ldGhvZExhYmVsKHRoaXMuZmxvdy5sYXN0TWV0aG9kKCksIChrZXkpID0+IHRoaXMudChrZXkpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzaWduVXBIcmVmKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLnNpZ25VcFVybCA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKHRoaXMuc2lnblVwVXJsKSByZXR1cm4gdGhpcy5zaWduVXBVcmw7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBob3N0ZWRTaWduVXAoe1xuICAgICAgICBmcm9udGVuZEFwaTogdGhpcy5hdGxhcy5mcm9udGVuZEFwaSxcbiAgICAgICAgcmVkaXJlY3RVcmw6IHRoaXMuYWZ0ZXJVcmwgPz8gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmxvY2F0aW9uLmhyZWYgOiB1bmRlZmluZWQpLFxuICAgICAgICBuYXZpZ2F0ZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBmbG93ID0gbmV3IEF0bGFzRmxvd0NvbnRyb2xsZXIoXG4gICAgdGhpcy5hdGxhcy5jcmVhdGVGYXBpQ2xpZW50KCksXG4gICAgKCkgPT4gdGhpcy5hdGxhcy5yZWxvYWQoKSxcbiAgICAvLyBSZXN1bWUgbWlkLWZsb3cgaWYgYW4gT0F1dGggcmVkaXJlY3QgY2FtZSBiYWNrIG93aW5nIGEgc2Vjb25kIGZhY3Rvci5cbiAgICB0aGlzLmF0bGFzLnBlbmRpbmdBdHRlbXB0LFxuICAgIChrZXkpID0+IHRyYW5zbGF0ZSh0aGlzLmF0bGFzLmxvY2FsaXphdGlvbiwga2V5KSxcbiAgKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBJZiBzZWVkZWQgZnJvbSBhIHBlbmRpbmcgYXR0ZW1wdCB0aGF0IGlzIGFscmVhZHkgcG9sbGFibGUsIHN0YXJ0IHBvbGxpbmcuXG4gICAgdGhpcy5mbG93LnN5bmNQb2xsaW5nKCk7XG4gICAgLy8gwqc1IHRoZSBpbnN0YW5jZSdzIGNhcHRjaGEgc2V0dGluZ3MgKHN3aXRjaGluZyBjYXB0Y2hhIG9uIGluIHRoZSBkYXNoYm9hcmRcbiAgICAvLyBkcmF3cyBpdCBoZXJlIHdpdGggbm8gY29kZSBjaGFuZ2UpIGFuZCBlbWFpbCBkZWxpdmVyeSAobm8gZW1haWxlZC1jb2RlXG4gICAgLy8gb3B0aW9uIHdoaWxlIHRoZSBhcHAgY2Fubm90IHNlbmQgZW1haWwpLlxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgdm9pZCB0aGlzLmZsb3cubG9hZFNldHRpbmdzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZsb3cuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvc2lnbi1pbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLElBQUksWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUV4RDs7Ozs7Ozs7O0dBU0c7QUErREgsTUFBTSxPQUFPLGVBQWU7SUFDVCxLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRTlDLGlGQUFpRjtJQUN4RSxRQUFRLENBQVU7SUFDM0I7Ozs7T0FJRztJQUNNLFNBQVMsQ0FBaUI7SUFFekIsQ0FBQyxDQUFDLEdBQVc7UUFDckIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELHNGQUFzRjtJQUM1RSxhQUFhO1FBQ3JCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDM0MsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMs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SUF6RGhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdURULDREQXhEUyxvQkFBb0IsZ2JBQUUsc0JBQXNCOzs0RkEwRDNDLGVBQWU7a0JBOUQzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixFQUFFLHNCQUFzQixDQUFDO29CQUN2RCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1RFQ7aUJBQ0Y7OEJBS1UsUUFBUTtzQkFBaEIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbGFzdFVzZWRNZXRob2RMYWJlbCwgcGFzc2tleXNTdXBwb3J0ZWQsIHNpZ25VcCBhcyBob3N0ZWRTaWduVXAgfSBmcm9tICdAYXRsYXNhdXRoL2pzJztcbmltcG9ydCB7IEF0bGFzU2VydmljZSB9IGZyb20gJy4uL2F0bGFzLnNlcnZpY2UnO1xuaW1wb3J0IHsgdHJhbnNsYXRlIH0gZnJvbSAnLi4vaTE4bic7XG5pbXBvcnQgeyBBdHRlbXB0Rmxvd0NvbXBvbmVudCB9IGZyb20gJy4vYXR0ZW1wdC1mbG93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWNvdmVyeUNvZGVzQ29tcG9uZW50IH0gZnJvbSAnLi9yZWNvdmVyeS1jb2Rlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXRsYXNGbG93Q29udHJvbGxlciB9IGZyb20gJy4vZmxvdy1jb250cm9sbGVyJztcblxuLyoqXG4gKiBgPGF0bGFzLXNpZ24taW4+YCDigJQgdGhlIGZ1bGwsIG11bHRpLXN0ZXAgc2lnbi1pbiBmbG93IGRyaXZlbiBlbnRpcmVseSBieSB0aGVcbiAqIHNlcnZlci1zaWRlIGF0dGVtcHQgc3RhdHVzLiBUaGUgQW5ndWxhciBwZWVyIG9mIFJlYWN0J3MgYDxTaWduSW4vPmAuIERyYXdzIHRoZVxuICogaW5zdGFuY2UncyBzaWduLWluIGNhcHRjaGEgd2hlbiBpdCBpcyByZXF1aXJlZCAoYWx3YXlzLW9uLCBvciBhXG4gKiBgbmVlZHNfY2FwdGNoYWAgY2hhbGxlbmdlKS5cbiAqXG4gKiBgYGBodG1sXG4gKiA8YXRsYXMtc2lnbi1pbiAqYXRsYXNTaWduZWRPdXQgYWZ0ZXJVcmw9XCIvZGFzaGJvYXJkXCI+PC9hdGxhcy1zaWduLWluPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F0bGFzLXNpZ24taW4nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0F0dGVtcHRGbG93Q29tcG9uZW50LCBSZWNvdmVyeUNvZGVzQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKGxhc3RVc2VkTGFiZWwoKTsgYXMgbGFiZWwpIHtcbiAgICAgIDxwIGNsYXNzPVwiYXRsYXMtdGV4dCBhdGxhcy1sYXN0LXVzZWQtaGludFwiIGRhdGEtYXRsYXM9XCJsYXN0LXVzZWRcIiBbYXR0ci5kYXRhLWF0bGFzLW1ldGhvZF09XCJmbG93Lmxhc3RNZXRob2QoKVwiPlxuICAgICAgICB7eyB0KCdzaWduSW4ubGFzdFVzZWQnKSB9fToge3sgbGFiZWwgfX1cbiAgICAgIDwvcD5cbiAgICB9XG4gICAgQGlmIChhdGxhc0Nvbm5lY3Rpb24oKTsgYXMgY29ubmVjdGlvbklkKSB7XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImF0bGFzLXNvY2lhbC1idXR0b25cIiBkYXRhLWF0bGFzLXByb3ZpZGVyPVwiYXRsYXNcIiAoY2xpY2spPVwiZmxvdy5zaWduSW5XaXRoQXRsYXMoY29ubmVjdGlvbklkKVwiPlxuICAgICAgICB7eyB0KCdzaWduSW4uY29udGludWVXaXRoQXRsYXMnKSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICBAaWYgKGZsb3cuc2lnbkluV2l0aEF0bGFzRXJyb3IoKTsgYXMgbWVzc2FnZSkge1xuICAgICAgICA8cCBjbGFzcz1cImF0bGFzLWVycm9yXCIgcm9sZT1cImFsZXJ0XCI+e3sgbWVzc2FnZSB9fTwvcD5cbiAgICAgIH1cbiAgICB9XG4gICAgQGlmIChmbG93LnJlY292ZXJ5Q29kZXMoKTsgYXMgY29kZXMpIHtcbiAgICAgIDxhdGxhcy1yZWNvdmVyeS1jb2RlcyBbY29kZXNdPVwiY29kZXNcIiBbYnVzeV09XCJmbG93LnN0YXRlKCkuYnVzeVwiIChzYXZlZCk9XCJmbG93LnNhdmVSZWNvdmVyeUNvZGVzKClcIj48L2F0bGFzLXJlY292ZXJ5LWNvZGVzPlxuICAgIH0gQGVsc2Uge1xuICAgIDxhdGxhcy1hdHRlbXB0LWZsb3dcbiAgICAgIFthdHRlbXB0XT1cImZsb3cuc3RhdGUoKS5hdHRlbXB0XCJcbiAgICAgIFtidXN5XT1cImZsb3cuc3RhdGUoKS5idXN5XCJcbiAgICAgIFtlcnJvcnNdPVwiZmxvdy5zdGF0ZSgpLmVycm9yc1wiXG4gICAgICBbc2Vzc2lvbktlcHRdPVwiZmxvdy5zdGF0ZSgpLnNlc3Npb25LZXB0XCJcbiAgICAgIHRpdGxlS2V5PVwic2lnbkluLnRpdGxlXCJcbiAgICAgIFtjYXB0Y2hhXT1cImZsb3cuY2FwdGNoYURyYXduKCkgPyBmbG93LmNhcHRjaGEgOiBudWxsXCJcbiAgICAgIFtmaXJzdEZhY3RvcnNdPVwiZmxvdy5maXJzdEZhY3RvcnMoKVwiXG4gICAgICBbcHJlcGFyZWRGYWN0b3JdPVwiZmxvdy5wcmVwYXJlZEZhY3RvcigpXCJcbiAgICAgIFtvZmZlckVtYWlsU2Vjb25kRmFjdG9yXT1cImZsb3cuc2V0dGluZ3MoKT8uYWNjb3VudD8uZW1haWxTZWNvbmRGYWN0b3IgPT09IHRydWVcIlxuICAgICAgW2VtYWlsZWRTZWNvbmRGYWN0b3JdPVwiZmxvdy5lbWFpbFNlY29uZEZhY3RvcigpXCJcbiAgICAgIChzdWJtaXRGbG93KT1cInN1Ym1pdElkZW50aWZpZXIoJGV2ZW50KVwiXG4gICAgICAoY2hvb3NlRmFjdG9yKT1cImZsb3cucHJlcGFyZSgkZXZlbnQpXCJcbiAgICAgIFtvZmZlclNtc1NlY29uZEZhY3Rvcl09XCJmbG93LnNldHRpbmdzKCkgIT09IG51bGwgJiYgZmxvdy5tZmFDaG9pY2VzKCkuc21zXCJcbiAgICAgIFt0ZXh0ZWRTZWNvbmRGYWN0b3JdPVwiZmxvdy5zbXNTZWNvbmRGYWN0b3IoKVwiXG4gICAgICBbZW5yb2xsbWVudF09XCJmbG93LmVucm9sbG1lbnRcIlxuICAgICAgW2Vucm9sbG1lbnRTdGF0ZV09XCJmbG93LmVucm9sbG1lbnRTdGF0ZSgpXCJcbiAgICAgIChlbWFpbFNlY29uZEZhY3Rvcik9XCJmbG93LnNlbmRFbWFpbFNlY29uZEZhY3RvcigpXCJcbiAgICAgIChzbXNTZWNvbmRGYWN0b3IpPVwiZmxvdy5zZW5kU21zU2Vjb25kRmFjdG9yKClcIlxuICAgICAgKHBvbGljeURlY2xpbmVkKT1cImZsb3cuZGVjbGluZVBvbGljeSgkZXZlbnQpXCJcbiAgICA+PC9hdGxhcy1hdHRlbXB0LWZsb3c+XG4gICAgfVxuICAgIEBpZiAoZmxvdy5wYXNza2V5T2ZmZXJlZCgpICYmICFmbG93LnJlY292ZXJ5Q29kZXMoKSkge1xuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJhdGxhcy1zb2NpYWwtYnV0dG9uIGF0bGFzLXBhc3NrZXktYnV0dG9uXCJcbiAgICAgICAgZGF0YS1hdGxhcy1wYXNza2V5LXNpZ24taW49XCJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZmxvdy5zdGF0ZSgpLmJ1c3lcIlxuICAgICAgICAoY2xpY2spPVwiZmxvdy5wYXNza2V5LnNpZ25JbigpXCJcbiAgICAgID5cbiAgICAgICAge3sgdCgnc2lnbkluLnBhc3NrZXlCdXR0b24nKSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIEBpZiAoZmxvdy5zdGF0ZSgpLmF0dGVtcHQ/LnN0YXR1cyAhPT0gJ2NvbXBsZXRlJyAmJiBzaWduVXBIcmVmKCk7IGFzIGhyZWYpIHtcbiAgICAgIDxwIGNsYXNzPVwiYXRsYXMtZm9vdGVyXCIgZGF0YS1hdGxhcy1zaWduLXVwLXByb21wdD1cIlwiPlxuICAgICAgICB7eyB0KCdzaWduSW4ubm9BY2NvdW50JykgfX0gPGEgY2xhc3M9XCJhdGxhcy1saW5rXCIgW2hyZWZdPVwiaHJlZlwiPnt7IHQoJ3NpZ25Jbi5zaWduVXBMaW5rJykgfX08L2E+XG4gICAgICA8L3A+XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBTaWduSW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXRsYXMgPSBpbmplY3QoQXRsYXNTZXJ2aWNlKTtcblxuICAvKiogV2hlcmUgdG8gc2VuZCB0aGUgdXNlciBvbmNlIHRoZSBmbG93IGNvbXBsZXRlcy4gUmVzZXJ2ZWQgZm9yIGhvc3Qgcm91dGluZy4gKi9cbiAgQElucHV0KCkgYWZ0ZXJVcmw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGVyZSBcIk5vIGFjY291bnQ/IFNpZ24gdXBcIiBnb2VzLiBEZWZhdWx0OiB0aGUgaW5zdGFuY2UncyBob3N0ZWQgc2lnbi11cFxuICAgKiBwYWdlIChjYXJyeWluZyB0aGUgdmlzaXRvcidzIHJlZmVycmFsKS4gYG51bGxgIGhpZGVzIGl0LiBBbHdheXMgc2hvd24sIG5ldmVyXG4gICAqIG9ubHkgYWZ0ZXIgYSBmYWlsZWQgc2lnbi1pbiwgc28gaXQgc2F5cyBub3RoaW5nIGFib3V0IHdoZXRoZXIgYW4gZW1haWwgaGFzIGFuIGFjY291bnQuXG4gICAqL1xuICBASW5wdXQoKSBzaWduVXBVcmw/OiBzdHJpbmcgfCBudWxsO1xuXG4gIHByb3RlY3RlZCB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHJhbnNsYXRlKHRoaXMuYXRsYXMubG9jYWxpemF0aW9uLCBrZXkpO1xuICB9XG5cbiAgLyoqIFwiTGFzdCB1c2VkOiBQYXNzd29yZFwiIG9uIHRoZSBpZGVudGlmaWVyIHN0ZXAsIHdoZW4gdGhlIGluc3RhbmNlIHNob3dzIHRoZSBoaW50LiAqL1xuICBwcm90ZWN0ZWQgbGFzdFVzZWRMYWJlbCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5mbG93LnN0YXRlKCkuYXR0ZW1wdCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGxhc3RVc2VkTWV0aG9kTGFiZWwodGhpcy5mbG93Lmxhc3RNZXRob2QoKSwgKGtleSkgPT4gdGhpcy50KGtleSkpO1xuICB9XG5cbiAgLyoqIFRoZSBcIlNpZ24gaW4gd2l0aCBBdGxhc1wiIGNvbm5lY3Rpb24sIG9uIHRoZSBmaXJzdCBzdGVwLCB3aGVuIHRoZSBpbnN0YW5jZSBoYXMgaXQgb24uICovXG4gIHByb3RlY3RlZCBhdGxhc0Nvbm5lY3Rpb24oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuZmxvdy5zdGF0ZSgpLmF0dGVtcHQgfHwgdGhpcy5mbG93LnJlY292ZXJ5Q29kZXMoKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMuZmxvdy5zZXR0aW5ncygpPy5zaWduSW5XaXRoQXRsYXM/LmNvbm5lY3Rpb25JZCA/PyBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNpZ25VcEhyZWYoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuc2lnblVwVXJsID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICBpZiAodGhpcy5zaWduVXBVcmwpIHJldHVybiB0aGlzLnNpZ25VcFVybDtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGhvc3RlZFNpZ25VcCh7XG4gICAgICAgIGZyb250ZW5kQXBpOiB0aGlzLmF0bGFzLmZyb250ZW5kQXBpLFxuICAgICAgICByZWRpcmVjdFVybDogdGhpcy5hZnRlclVybCA/PyAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cubG9jYXRpb24uaHJlZiA6IHVuZGVmaW5lZCksXG4gICAgICAgIG5hdmlnYXRlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZsb3cgPSBuZXcgQXRsYXNGbG93Q29udHJvbGxlcihcbiAgICB0aGlzLmF0bGFzLmNyZWF0ZUZhcGlDbGllbnQoKSxcbiAgICAoKSA9PiB0aGlzLmF0bGFzLnJlbG9hZCgpLFxuICAgIC8vIFJlc3VtZSBtaWQtZmxvdyBpZiBhbiBPQXV0aCByZWRpcmVjdCBjYW1lIGJhY2sgb3dpbmcgYSBzZWNvbmQgZmFjdG9yLlxuICAgIHRoaXMuYXRsYXMucGVuZGluZ0F0dGVtcHQsXG4gICAgKGtleSkgPT4gdHJhbnNsYXRlKHRoaXMuYXRsYXMubG9jYWxpemF0aW9uLCBrZXkpLFxuICApO1xuXG4gIC8vIFBhc3NrZXkgYXV0b2ZpbGwgcnVucyB3aGlsZSB0aGUgZmlyc3Qgc3RlcCBvZmZlcnMgcGFzc2tleXMgKGEgY29tcHV0ZWQsIHNvIGl0IHJlLWFybXMgb25seSB3aGVuIHRoYXQgY2hhbmdlcykuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGFzc2tleU9mZmVyZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZsb3cucGFzc2tleU9mZmVyZWQoKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBwYXNza2V5QXV0b2ZpbGwgPSBlZmZlY3QoKCkgPT4gKHRoaXMucGFzc2tleU9mZmVyZWQoKSA/IHRoaXMuZmxvdy5wYXNza2V5LmFybUF1dG9maWxsKCkgOiB0aGlzLmZsb3cucGFzc2tleS5zdG9wQXV0b2ZpbGwoKSkpO1xuXG4gIHByb3RlY3RlZCBzdWJtaXRJZGVudGlmaWVyKHZhbHVlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuICAgIHRoaXMuZmxvdy5wYXNza2V5LnN0b3BBdXRvZmlsbCgpO1xuICAgIHZvaWQgdGhpcy5mbG93LnN1Ym1pdCh2YWx1ZXMpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB0aGlzLmZsb3cucGFzc2tleVN1cHBvcnRlZC5zZXQocGFzc2tleXNTdXBwb3J0ZWQoKSk7XG4gICAgLy8gSWYgc2VlZGVkIGZyb20gYSBwZW5kaW5nIGF0dGVtcHQgdGhhdCBpcyBhbHJlYWR5IHBvbGxhYmxlLCBzdGFydCBwb2xsaW5nLlxuICAgIHRoaXMuZmxvdy5zeW5jUG9sbGluZygpO1xuICAgIC8vIMKnNSB0aGUgaW5zdGFuY2UncyBjYXB0Y2hhIHNldHRpbmdzIChzd2l0Y2hpbmcgY2FwdGNoYSBvbiBpbiB0aGUgZGFzaGJvYXJkXG4gICAgLy8gZHJhd3MgaXQgaGVyZSB3aXRoIG5vIGNvZGUgY2hhbmdlKSBhbmQgZW1haWwgZGVsaXZlcnkgKG5vIGVtYWlsZWQtY29kZVxuICAgIC8vIG9wdGlvbiB3aGlsZSB0aGUgYXBwIGNhbm5vdCBzZW5kIGVtYWlsKS5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHZvaWQgdGhpcy5mbG93LmxvYWRTZXR0aW5ncygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5mbG93LmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
@@ -22,12 +22,15 @@ export const EN_US = {
22
22
  'signIn.signUpLink': 'Sign up',
23
23
  'signIn.orDivider': 'or',
24
24
  'signIn.socialButton': 'Continue with {provider}',
25
+ 'signIn.continueWithAtlas': 'Continue with Atlas',
25
26
  'signIn.emailCodeLabel': 'Verification code',
26
27
  'signIn.useEmailCode': 'Email me a code',
27
28
  'signIn.codeSentTo': 'We sent a code to {email}. Enter it below.',
28
29
  'signIn.resendCode': 'Resend code',
29
30
  'signIn.sending': 'Sending…',
30
31
  'signIn.emailCodeOption': 'Email me a code instead',
32
+ 'signIn.passkeyButton': 'Sign in with a passkey',
33
+ 'signIn.passkeyCancelled': "Passkey sign-in didn't finish. Try again, or use another way to sign in.",
31
34
  'signIn.magicLinkSent': 'Check your email for a sign-in link.',
32
35
  'signIn.signedIn': 'You\'re signed in.',
33
36
  'signIn.sessionNotKept': 'You signed in, but this browser didn\'t keep the session. If it blocks third-party cookies, allow cookies for this site and try again.',
@@ -205,4 +208,4 @@ export function translate(catalog, key, variables = {}) {
205
208
  export function withFallback(locale) {
206
209
  return { ...EN_US, ...locale };
207
210
  }
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBRUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQVk7SUFDNUIsY0FBYyxFQUFFLFNBQVM7SUFDekIsaUJBQWlCLEVBQUUsOEJBQThCO0lBQ2pELHdCQUF3QixFQUFFLGVBQWU7SUFDekMsc0JBQXNCLEVBQUUsVUFBVTtJQUNsQyxlQUFlLEVBQUUsVUFBVTtJQUMzQix1QkFBdUIsRUFBRSxrQkFBa0I7SUFDM0Msa0JBQWtCLEVBQUUsYUFBYTtJQUNqQyxpQkFBaUIsRUFBRSxXQUFXO0lBQzlCLG1CQUFtQixFQUFFLFNBQVM7SUFDOUIsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixxQkFBcUIsRUFBRSwwQkFBMEI7SUFDakQsdUJBQXVCLEVBQUUsbUJBQW1CO0lBQzVDLHFCQUFxQixFQUFFLGlCQUFpQjtJQUN4QyxtQkFBbUIsRUFBRSw0Q0FBNEM7SUFDakUsbUJBQW1CLEVBQUUsYUFBYTtJQUNsQyxnQkFBZ0IsRUFBRSxVQUFVO0lBQzVCLHdCQUF3QixFQUFFLHlCQUF5QjtJQUNuRCxzQkFBc0IsRUFBRSxzQ0FBc0M7SUFDOUQsaUJBQWlCLEVBQUUsb0JBQW9CO0lBQ3ZDLHVCQUF1QixFQUNyQix3SUFBd0k7SUFDMUksc0JBQXNCLEVBQUUsK0RBQStEO0lBRXZGLGNBQWMsRUFBRSxxQkFBcUI7SUFDckMsZUFBZSxFQUFFLFVBQVU7SUFDM0Isb0JBQW9CLEVBQUUsMEJBQTBCO0lBQ2hELG1CQUFtQixFQUFFLFNBQVM7SUFDOUIsbUJBQW1CLEVBQUUsZUFBZTtJQUNwQyxzQkFBc0IsRUFBRSxVQUFVO0lBQ2xDLHNCQUFzQixFQUFFLG9CQUFvQjtJQUM1QywwQkFBMEIsRUFBRSxTQUFTO0lBQ3JDLHFCQUFxQixF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dkIsT0FBZ0IsRUFDaEIsR0FBVyxFQUNYLFlBQW9DLEVBQUU7SUFFdEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDbkQsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFZLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBZTtJQUMxQyxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDCpzEwLjM6IFwiRXZlcnkgc3RyaW5nIHBhc3NlcyB0aHJvdWdoIGFuIGkxOG4gY2F0YWxvZzsgZW4tVVMgc2hpcHMsIGNhdGFsb2dcbiAqIGZvcm1hdCBkb2N1bWVudGVkIGZvciBjb21tdW5pdHkgbG9jYWxlcy5cIlxuICpcbiAqIEEgZmxhdCBrZXktdG8tc3RyaW5nIG1hcCByYXRoZXIgdGhhbiBuZXN0ZWQgb2JqZWN0cywgYmVjYXVzZSBuZXN0aW5nIGxvb2tzXG4gKiB0aWRpZXIgYW5kIG1ha2VzIGEgbWlzc2luZyBrZXkgYSBydW50aW1lIGNyYXNoIG9uIGB1bmRlZmluZWQub2YuYS5jaGFpbmBcbiAqIHJhdGhlciB0aGFuIGEgdmlzaWJsZSBmYWxsYmFjay5cbiAqXG4gKiBBIG1pc3Npbmcga2V5IHJlbmRlcnMgdGhlIEtFWSwgbm90IGFuIGVtcHR5IHN0cmluZy4gQSBibGFuayBidXR0b24gaXMgYSBidWdcbiAqIG5vYm9keSBjYW4gcmVwb3J0OyBhIGJ1dHRvbiByZWFkaW5nIGBzaWduSW4uc3VibWl0YCBpcyBvbmUgYW55b25lIGNhbi5cbiAqL1xuXG5pbXBvcnQgeyBQT0xJQ1lfU1RSSU5HUyB9IGZyb20gJ0BhdGxhc2F1dGgvanMnO1xuXG5leHBvcnQgdHlwZSBDYXRhbG9nID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IGNvbnN0IEVOX1VTOiBDYXRhbG9nID0ge1xuICAnc2lnbkluLnRpdGxlJzogJ1NpZ24gaW4nLFxuICAnc2lnbkluLnN1YnRpdGxlJzogJ3RvIGNvbnRpbnVlIHRvIHthcHBsaWNhdGlvbn0nLFxuICAnc2lnbkluLmlkZW50aWZpZXJMYWJlbCc6ICdFbWFpbCBhZGRyZXNzJyxcbiAgJ3NpZ25Jbi5wYXNzd29yZExhYmVsJzogJ1Bhc3N3b3JkJyxcbiAgJ3NpZ25Jbi5zdWJtaXQnOiAnQ29udGludWUnLFxuICAnc2lnbkluLmZvcmdvdFBhc3N3b3JkJzogJ0ZvcmdvdCBwYXNzd29yZD8nLFxuICAnc2lnbkluLm5vQWNjb3VudCc6ICdObyBhY2NvdW50PycsXG4gICdzaWduSW4ubGFzdFVzZWQnOiAnTGFzdCB1c2VkJyxcbiAgJ3NpZ25Jbi5zaWduVXBMaW5rJzogJ1NpZ24gdXAnLFxuICAnc2lnbkluLm9yRGl2aWRlcic6ICdvcicsXG4gICdzaWduSW4uc29jaWFsQnV0dG9uJzogJ0NvbnRpbnVlIHdpdGgge3Byb3ZpZGVyfScsXG4gICdzaWduSW4uZW1haWxDb2RlTGFiZWwnOiAnVmVyaWZpY2F0aW9uIGNvZGUnLFxuICAnc2lnbkluLnVzZUVtYWlsQ29kZSc6ICdFbWFpbCBtZSBhIGNvZGUnLFxuICAnc2lnbkluLmNvZGVTZW50VG8nOiAnV2Ugc2VudCBhIGNvZGUgdG8ge2VtYWlsfS4gRW50ZXIgaXQgYmVsb3cuJyxcbiAgJ3NpZ25Jbi5yZXNlbmRDb2RlJzogJ1Jlc2VuZCBjb2RlJyxcbiAgJ3NpZ25Jbi5zZW5kaW5nJzogJ1NlbmRpbmfigKYnLFxuICAnc2lnbkluLmVtYWlsQ29kZU9wdGlvbic6ICdFbWFpbCBtZSBhIGNvZGUgaW5zdGVhZCcsXG4gICdzaWduSW4ubWFnaWNMaW5rU2VudCc6ICdDaGVjayB5b3VyIGVtYWlsIGZvciBhIHNpZ24taW4gbGluay4nLFxuICAnc2lnbkluLnNpZ25lZEluJzogJ1lvdVxcJ3JlIHNpZ25lZCBpbi4nLFxuICAnc2lnbkluLnNlc3Npb25Ob3RLZXB0JzpcbiAgICAnWW91IHNpZ25lZCBpbiwgYnV0IHRoaXMgYnJvd3NlciBkaWRuXFwndCBrZWVwIHRoZSBzZXNzaW9uLiBJZiBpdCBibG9ja3MgdGhpcmQtcGFydHkgY29va2llcywgYWxsb3cgY29va2llcyBmb3IgdGhpcyBzaXRlIGFuZCB0cnkgYWdhaW4uJyxcbiAgJ3NpZ25Jbi5jaGVja090aGVyVGFiJzogJ1lvdSBjYW4gY2xvc2UgdGhpcyB0YWIg4oCUIHlvdSBhcmUgc2lnbmVkIGluIHdoZXJlIHlvdSBzdGFydGVkLicsXG5cbiAgJ3NpZ25VcC50aXRsZSc6ICdDcmVhdGUgeW91ciBhY2NvdW50JyxcbiAgJ3NpZ25VcC5zdWJtaXQnOiAnQ29udGludWUnLFxuICAnc2lnblVwLmhhdmVBY2NvdW50JzogJ0FscmVhZHkgaGF2ZSBhbiBhY2NvdW50PycsXG4gICdzaWduVXAuc2lnbkluTGluayc6ICdTaWduIGluJyxcbiAgJ3NpZ25VcC5lbWFpbExhYmVsJzogJ0VtYWlsIGFkZHJlc3MnLFxuICAnc2lnblVwLnBhc3N3b3JkTGFiZWwnOiAnUGFzc3dvcmQnLFxuICAnc2lnblVwLm9wdGlvbmFsRmllbGQnOiAne2xhYmVsfSAob3B0aW9uYWwpJyxcbiAgJ3NpZ25VcC5zZWxlY3RQbGFjZWhvbGRlcic6ICdTZWxlY3TigKYnLFxuICAnc2lnblVwLmNvbnNlbnRBZ3JlZSc6ICdJIGFncmVlIHRvIHRoZScsXG4gICdzaWduVXAuY29uc2VudE5vdGljZSc6ICdCeSBjb250aW51aW5nIHlvdSBhZ3JlZSB0byB0aGUnLFxuICAnc2lnblVwLnRlcm1zJzogJ1Rlcm1zIG9mIFNlcnZpY2UnLFxuICAnc2lnblVwLnByaXZhY3knOiAnUHJpdmFjeSBQb2xpY3knLFxuICAnc2lnblVwLmFuZCc6ICdhbmQnLFxuICAvLyA9IEVNQUlMX1VOQVZBSUxBQkxFX01FU1NBR0UgZnJvbSBAYXRsYXNhdXRoL2pzLlxuICAnc2lnblVwLmVtYWlsVW5hdmFpbGFibGUnOlxuICAgIFwiVGhpcyBhcHAgY2FuJ3Qgc2VuZCBlbWFpbCByaWdodCBub3cuIFRyeSBhbm90aGVyIHNpZ24taW4gbWV0aG9kIG9yIGNvbnRhY3QgdGhlIGFwcCBvd25lci5cIixcbiAgJ3NpZ25VcC5wYXNza2V5T3B0aW9uJzogJ1NpZ24gdXAgd2l0aCBhIHBhc3NrZXkgaW5zdGVhZCcsXG4gICdzaWduVXAucGFzc3dvcmRPcHRpb24nOiAnU2lnbiB1cCB3aXRoIGEgcGFzc3dvcmQgaW5zdGVhZCcsXG4gICdzaWduVXAucGFzc2tleUludHJvJzogXCJObyBwYXNzd29yZCBuZWVkZWQ6IHlvdSdsbCBzaWduIGluIHdpdGggYSBwYXNza2V5IHNhdmVkIG9uIHRoaXMgZGV2aWNlIG9yIGluIHlvdXIgcGFzc3dvcmQgbWFuYWdlci5cIixcbiAgJ3NpZ25VcC5wYXNza2V5UHJvbXB0JzogJ0NyZWF0ZSBhIHBhc3NrZXkgdG8gZmluaXNoIHNldHRpbmcgdXAgeW91ciBhY2NvdW50LicsXG4gICdzaWduVXAucGFzc2tleUNyZWF0ZSc6ICdDcmVhdGUgcGFzc2tleScsXG4gICdzaWduVXAucGFzc2tleUNhbmNlbGxlZCc6IFwiVGhlIHBhc3NrZXkgd2Fzbid0IGNyZWF0ZWQuIFRyeSBhZ2FpbiB3aGVuIHlvdSdyZSByZWFkeS5cIixcbiAgJ3NpZ25VcC5saW5rU2VudFRvJzogJ1dlIHNlbnQgYSBjb25maXJtYXRpb24gbGluayB0byB7ZW1haWx9LiBPcGVuIGl0IG9uIGFueSBkZXZpY2U7IHRoaXMgcGFnZSBjb250aW51ZXMgb24gaXRzIG93bi4nLFxuXG4gICdjYXB0Y2hhLnByb21wdCc6ICdDb21wbGV0ZSB0aGUgc2VjdXJpdHkgY2hlY2sgdG8gY29udGludWUuJyxcbiAgJ2NhcHRjaGEucmVxdWlyZWQnOiAnUGxlYXNlIGNvbXBsZXRlIHRoZSBzZWN1cml0eSBjaGVjaywgdGhlbiB0cnkgYWdhaW4uJyxcbiAgJ2NhcHRjaGEuZmFpbGVkJzogXCJUaGUgc2VjdXJpdHkgY2hlY2sgZGlkbid0IHBhc3MuIFBsZWFzZSB0cnkgYWdhaW4uXCIsXG4gICdjYXB0Y2hhLmNoZWNraW5nJzogJ0NoZWNraW5nIHlvdXIgYnJvd3NlcuKApicsXG4gICdjYXB0Y2hhLnZlcmlmaWVkJzogJ1NlY3VyaXR5IGNoZWNrIGNvbXBsZXRlLicsXG4gICdjYXB0Y2hhLnB1enpsZVByb21wdCc6IFwiU2VsZWN0IGV2ZXJ5IHBpY3R1cmUgdGhhdCBzaG93cyB0aGUgc2FtZSBzaGFwZSBhcyB0aGlzIG9uZS4gQ29sb3VyIGFuZCBzaXplIGRvbid0IG1hdHRlci5cIixcbiAgJ2NhcHRjaGEucHV6emxlQ29uZmlybSc6ICdDb25maXJtJyxcbiAgJ2NhcHRjaGEucHV6emxlVGlsZSc6ICdQaWN0dXJlIHtufScsXG4gICdjYXB0Y2hhLnB1enpsZUFsdGVybmF0aXZlJzogXCJDYW4ndCBkbyB0aGUgcGljdHVyZSBjaGVjaz8gVXNlIGEgbG9uZ2VyIGF1dG9tYXRpYyBjaGVjayBpbnN0ZWFkLlwiLFxuXG4gICdtZmEudGl0bGUnOiAnVHdvLXN0ZXAgdmVyaWZpY2F0aW9uJyxcbiAgJ21mYS5zdWJ0aXRsZSc6ICdFbnRlciB0aGUgY29kZSBmcm9tIHlvdXIgYXV0aGVudGljYXRvciBhcHAuJyxcbiAgJ21mYS5jb2RlTGFiZWwnOiAnQ29kZScsXG4gICdtZmEuZW5yb2xsRmlyc3RDb2RlTGFiZWwnOiAnQ29kZSBmcm9tIHlvdXIgYXV0aGVudGljYXRvciBhcHAnLFxuICAnbWZhLmVucm9sbFNlY29uZENvZGVMYWJlbCc6ICdUaGUgbmV4dCBjb2RlIGl0IHNob3dzJyxcbiAgJ21mYS51c2VQYXNza2V5JzogJ1VzZSBhIHBhc3NrZXkgaW5zdGVhZCcsXG4gICdtZmEudXNlQmFja3VwQ29kZSc6ICdVc2UgYSByZWNvdmVyeSBjb2RlJyxcbiAgJ21mYS5zdWJtaXQnOiAnVmVyaWZ5JyxcbiAgJ21mYS5lbnJvbGxDaG9vc2UnOiAnU2V0IHVwIGEgc2Vjb25kIHN0ZXAgZm9yIHNpZ25pbmcgaW4uJyxcbiAgJ21mYS5lbnJvbGxUb3RwT3B0aW9uJzogJ1VzZSBhbiBhdXRoZW50aWNhdG9yIGFwcCcsXG4gICdtZmEuZW5yb2xsU21zT3B0aW9uJzogJ1VzZSB0ZXh0IG1lc3NhZ2VzJyxcbiAgJ21mYS5lbnJvbGxTY2FuJzogJ1NjYW4gdGhpcyBRUiBjb2RlIHdpdGggeW91ciBhdXRoZW50aWNhdG9yIGFwcCwgb3IgZW50ZXIgdGhlIHNldHVwIGtleS4nLFxuICAnbWZhLmVucm9sbFFyQWx0JzogJ1FSIGNvZGUgZm9yIHlvdXIgYXV0aGVudGljYXRvciBhcHAnLFxuICAnbWZhLmVucm9sbFNldHVwS2V5JzogJ1NldHVwIGtleScsXG4gICdtZmEuZW5yb2xsUHJlcGFyaW5nJzogJ1NldHRpbmcgdXDigKYnLFxuICAnbWZhLnBob25lTGFiZWwnOiAnTW9iaWxlIG51bWJlcicsXG4gICdtZmEucGhvbmVIaW50JzogJ0luY2x1ZGUgdGhlIGNvdW50cnkgY29kZSwgZm9yIGV4YW1wbGUgKzE0MTU1NTUwMTAxLicsXG4gICdtZmEuc2VuZENvZGUnOiAnVGV4dCBtZSBhIGNvZGUnLFxuICAnbWZhLmNvZGVUZXh0ZWRUbyc6ICdFbnRlciB0aGUgY29kZSB3ZSB0ZXh0ZWQgdG8ge3Bob25lfS4nLFxuICAnbWZhLnNtc0NvZGVPcHRpb24nOiAnVGV4dCBtZSBhIGNvZGUgaW5zdGVhZCcsXG4gICdtZmEucmVjb3ZlcnlDb2Rlc1RpdGxlJzogJ1NhdmUgeW91ciByZWNvdmVyeSBjb2RlcycsXG4gICdtZmEucmVjb3ZlcnlDb2Rlc0hlbHAnOiBcIkVhY2ggY29kZSB3b3JrcyBvbmNlLiBJZiB5b3UgY2FuJ3QgdXNlIHlvdXIgc2Vjb25kIHN0ZXAsIHNpZ24gaW4gd2l0aCBvbmUgb2YgdGhlc2UuIEtlZXAgdGhlbSBzb21ld2hlcmUgc2FmZTogdGhleSB3b24ndCBiZSBzaG93biBhZ2Fpbi5cIixcbiAgJ21mYS5yZWNvdmVyeUNvZGVzQ29weSc6ICdDb3B5IGNvZGVzJyxcbiAgJ21mYS5yZWNvdmVyeUNvZGVzQ29waWVkJzogJ0NvcGllZC4nLFxuICAnbWZhLnJlY292ZXJ5Q29kZXNEb3dubG9hZCc6ICdEb3dubG9hZCBhcyAudHh0JyxcbiAgJ21mYS5yZWNvdmVyeUNvZGVzU2F2ZWQnOiBcIkkndmUgc2F2ZWQgbXkgY29kZXNcIixcblxuICAncmVzZXQudGl0bGUnOiAnUmVzZXQgeW91ciBwYXNzd29yZCcsXG4gICdyZXNldC5zdWJtaXQnOiAnU2VuZCByZXNldCBjb2RlJyxcbiAgJ3Jlc2V0Lm5ld1Bhc3N3b3JkTGFiZWwnOiAnTmV3IHBhc3N3b3JkJyxcblxuICAndXNlckJ1dHRvbi5tYW5hZ2VBY2NvdW50JzogJ01hbmFnZSBhY2NvdW50JyxcbiAgJ3VzZXJCdXR0b24uc2lnbk91dCc6ICdTaWduIG91dCcsXG4gICd1c2VyQnV0dG9uLnNpZ25PdXRBbGwnOiAnU2lnbiBvdXQgb2YgYWxsIGRldmljZXMnLFxuXG4gICd1c2VyUHJvZmlsZS50aXRsZSc6ICdBY2NvdW50JyxcbiAgJ3VzZXJQcm9maWxlLnByb2ZpbGVTZWN0aW9uJzogJ1Byb2ZpbGUnLFxuICAndXNlclByb2ZpbGUuZW1haWxzU2VjdGlvbic6ICdFbWFpbCBhZGRyZXNzZXMnLFxuICAndXNlclByb2ZpbGUuc2VjdXJpdHlTZWN0aW9uJzogJ1NlY3VyaXR5JyxcbiAgJ3VzZXJQcm9maWxlLmRldmljZXNTZWN0aW9uJzogJ0FjdGl2ZSBkZXZpY2VzJyxcbiAgJ3VzZXJQcm9maWxlLmRhbmdlclNlY3Rpb24nOiAnRGFuZ2VyIHpvbmUnLFxuICAndXNlclByb2ZpbGUuYWRkRW1haWwnOiAnQWRkIGFuIGVtYWlsIGFkZHJlc3MnLFxuICAndXNlclByb2ZpbGUubWFrZVByaW1hcnknOiAnTWFrZSBwcmltYXJ5JyxcbiAgJ3VzZXJQcm9maWxlLnVudmVyaWZpZWQnOiAnVW52ZXJpZmllZCcsXG4gICd1c2VyUHJvZmlsZS52ZXJpZnknOiAnVmVyaWZ5JyxcbiAgJ3VzZXJQcm9maWxlLnZlcmlmeUNvbmZpcm0nOiAnQ29uZmlybScsXG4gICd1c2VyUHJvZmlsZS52ZXJpZnlDb2RlUGxhY2Vob2xkZXInOiAnQ29kZSBmcm9tIHRoZSBlbWFpbCcsXG4gICd1c2VyUHJvZmlsZS52ZXJpZnlTZW5kRmFpbGVkJzogJ1dlIGNvdWxkIG5vdCBzZW5kIGEgY29kZSByaWdodCBub3cuIFRyeSBhZ2FpbiBpbiBhIG1pbnV0ZS4nLFxuICAndXNlclByb2ZpbGUudmVyaWZ5Q29kZVJlamVjdGVkJzogJ1RoYXQgY29kZSB3YXMgbm90IGFjY2VwdGVkLicsXG4gICd1c2VyUHJvZmlsZS5yZXZva2VEZXZpY2UnOiAnU2lnbiBvdXQnLFxuICAndXNlclByb2ZpbGUuZGVsZXRlQWNjb3VudCc6ICdEZWxldGUgYWNjb3VudCcsXG5cbiAgJ29yZ2FuaXphdGlvbi5zd2l0Y2hlcic6ICdTd2l0Y2ggb3JnYW5pemF0aW9uJyxcbiAgJ29yZ2FuaXphdGlvbi5wZXJzb25hbCc6ICdQZXJzb25hbCBhY2NvdW50JyxcbiAgJ29yZ2FuaXphdGlvbi5tZW1iZXJzJzogJ01lbWJlcnMnLFxuICAnb3JnYW5pemF0aW9uLmludml0ZSc6ICdJbnZpdGUgbWVtYmVyJyxcbiAgJ29yZ2FuaXphdGlvbi5yb2xlTGFiZWwnOiAnUm9sZScsXG4gICdvcmdhbml6YXRpb24uaW52aXRhdGlvbnMnOiAnSW52aXRhdGlvbnMnLFxuICAnb3JnYW5pemF0aW9uLnNldHRpbmdzJzogJ1NldHRpbmdzJyxcbiAgJ29yZ2FuaXphdGlvbi5lbWFpbExhYmVsJzogJ0VtYWlsIGFkZHJlc3MnLFxuICAnb3JnYW5pemF0aW9uLnNlbmRJbnZpdGUnOiAnU2VuZCBpbnZpdGF0aW9uJyxcbiAgJ29yZ2FuaXphdGlvbi5ub0ludml0YXRpb25zJzogJ05vIHBlbmRpbmcgaW52aXRhdGlvbnMuJyxcbiAgJ29yZ2FuaXphdGlvbi5yZW1vdmUnOiAnUmVtb3ZlJyxcbiAgJ29yZ2FuaXphdGlvbi5yZXZva2UnOiAnUmV2b2tlJyxcbiAgJ29yZ2FuaXphdGlvbi5yZXNlbmQnOiAnUmVzZW5kJyxcbiAgJ29yZ2FuaXphdGlvbi55b3UnOiAnKHlvdSknLFxuICAnb3JnYW5pemF0aW9uLmxlYXZlJzogJ0xlYXZlIG9yZ2FuaXphdGlvbicsXG4gICdvcmdhbml6YXRpb24ubGVhdmVDb25maXJtJzogJ0xlYXZlIHtuYW1lfT8gWW91IHdpbGwgbG9zZSBhY2Nlc3MgdW50aWwgeW91IGFyZSBpbnZpdGVkIGFnYWluLicsXG4gICdvcmdhbml6YXRpb24uZGVsZXRlJzogJ0RlbGV0ZSBvcmdhbml6YXRpb24nLFxuICAnb3JnYW5pemF0aW9uLmRlbGV0ZUNvbmZpcm0nOiAnRGVsZXRlIHtuYW1lfSBmb3IgZXZlcnkgbWVtYmVyPyBUaGlzIGNhbm5vdCBiZSB1bmRvbmUuJyxcbiAgJ29yZ2FuaXphdGlvbi5jb25maXJtJzogJ0NvbmZpcm0nLFxuICAnb3JnYW5pemF0aW9uLmNhbmNlbCc6ICdDYW5jZWwnLFxuICAnb3JnYW5pemF0aW9uLnVubmFtZWRNZW1iZXInOiAnVW5uYW1lZCBtZW1iZXInLFxuICAnb3JnYW5pemF0aW9uLnBhc3N3b3JkUHJvbXB0JzogJ0VudGVyIHlvdXIgcGFzc3dvcmQgdG8gY29uZmlybS4nLFxuICAnb3JnYW5pemF0aW9uLnJvbGVzJzogJ1JvbGVzJyxcbiAgJ29yZ2FuaXphdGlvbi5yb2xlTmFtZSc6ICdSb2xlIG5hbWUnLFxuICAnb3JnYW5pemF0aW9uLnJvbGVLZXknOiAnUm9sZSBrZXkgKGZvciBleGFtcGxlIG9yZzphdWRpdG9yKScsXG4gICdvcmdhbml6YXRpb24ucm9sZVBlcm1pc3Npb25zJzogJ1Blcm1pc3Npb25zJyxcbiAgJ29yZ2FuaXphdGlvbi5jcmVhdGVSb2xlJzogJ0NyZWF0ZSByb2xlJyxcbiAgJ29yZ2FuaXphdGlvbi5zYXZlUm9sZSc6ICdTYXZlIHJvbGUnLFxuICAnb3JnYW5pemF0aW9uLmVkaXRSb2xlJzogJ0VkaXQnLFxuICAnb3JnYW5pemF0aW9uLmRlbGV0ZVJvbGUnOiAnRGVsZXRlJyxcbiAgJ29yZ2FuaXphdGlvbi5ub0N1c3RvbVJvbGVzJzogJ1RoaXMgb3JnYW5pemF0aW9uIGhhcyBubyByb2xlcyBvZiBpdHMgb3duIHlldC4nLFxuICAnaW1wZXJzb25hdGlvbi5iYW5uZXInOiAnWW91IGFyZSBzaWduZWQgaW4gYXMge25hbWV9IG9uIHNvbWVvbmUgZWxzZVxcJ3MgYmVoYWxmLicsXG4gICdpbXBlcnNvbmF0aW9uLnJldHVyblRvQWRtaW4nOiAnUmV0dXJuIHRvIGFkbWluJyxcbiAgJ2ltcGVyc29uYXRpb24uZW5kJzogJ0VuZCBpbXBlcnNvbmF0aW9uJyxcblxuICAvLyBQb2xpY3kgYWNjZXB0YW5jZSAodGVybXMsIHByaXZhY3ksIGFueSBwb2xpY3kpLlxuICAuLi5QT0xJQ1lfU1RSSU5HUyxcblxuICAnZXJyb3IuZ2VuZXJpYyc6ICdTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi4nLFxuICAnZXJyb3IubmV0d29yayc6ICdXZSBjb3VsZCBub3QgcmVhY2ggdGhlIHNlcnZlci4gQ2hlY2sgeW91ciBjb25uZWN0aW9uLicsXG5cbiAgLy8gU2VydmVyIGVycm9ycywgYnkgdGhlIHN0YWJsZSBgcmVhc29uYCB0aGUgRnJvbnRlbmQgQVBJIHNlbmRzLiBTaG93biBpbnN0ZWFkXG4gIC8vIG9mIHRoZSBzZXJ2ZXIncyBgbWVzc2FnZWAgKHNlZSBgbG9jYWxpemVkRXJyb3JNZXNzYWdlYCBpbiBAYXRsYXNhdXRoL2pzKS5cbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfaW5jb3JyZWN0JzogJ1Rob3NlIGNyZWRlbnRpYWxzIGFyZSBpbmNvcnJlY3QuJyxcbiAgJ2Vycm9yLmZvcm1fY29kZV9pbmNvcnJlY3QnOiAnVGhhdCBjb2RlIGlzIGluY29ycmVjdC4nLFxuICAnZXJyb3IuZm9ybV9jb2RlX2FscmVhZHlfdXNlZCc6ICdUaGF0IGNvZGUgaGFzIGFscmVhZHkgYmVlbiB1c2VkLiBXYWl0IGZvciBhIG5ldyBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fY29kZV9leHBpcmVkJzogJ1RoYXQgY29kZSBoYXMgZXhwaXJlZC4gUmVxdWVzdCBhIG5ldyBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fY29kZV9tYXhfYXR0ZW1wdHMnOiAnVG9vIG1hbnkgaW5jb3JyZWN0IGNvZGVzLiBSZXF1ZXN0IGEgbmV3IGNvZGUuJyxcbiAgJ2Vycm9yLmZvcm1fbGlua19pbnZhbGlkJzogJ1RoYXQgc2lnbi1pbiBsaW5rIGlzIGludmFsaWQgb3IgaGFzIGFscmVhZHkgYmVlbiB1c2VkLicsXG4gICdlcnJvci5mb3JtX2lkZW50aWZpZXJfbm90X2ZvdW5kJzogXCJXZSBjb3VsZG4ndCBmaW5kIGFuIGFjY291bnQgd2l0aCB0aG9zZSBkZXRhaWxzLlwiLFxuICAnZXJyb3IuZm9ybV9pZGVudGlmaWVyX2V4aXN0cyc6IFwiVGhlcmUncyBhbHJlYWR5IGFuIGFjY291bnQgZm9yIHRoaXMgZW1haWwuIFNpZ24gaW4gd2l0aCB7bWV0aG9kc30uXCIsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3B3bmVkJzogJ1RoaXMgcGFzc3dvcmQgaGFzIGFwcGVhcmVkIGluIGEga25vd24gZGF0YSBicmVhY2guIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgb25lLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3Rvb19zaG9ydCc6ICdQYXNzd29yZCBtdXN0IGJlIGF0IGxlYXN0IHttaW5fbGVuZ3RofSBjaGFyYWN0ZXJzLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3Rvb19sb25nJzogJ1Bhc3N3b3JkIG11c3QgYmUgYXQgbW9zdCB7bWF4X2xlbmd0aH0gY2hhcmFjdGVycy4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXF1aXJlc191cHBlcmNhc2UnOiAnUGFzc3dvcmQgbXVzdCBjb250YWluIGFuIHVwcGVyY2FzZSBsZXR0ZXIuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcmVxdWlyZXNfbG93ZXJjYXNlJzogJ1Bhc3N3b3JkIG11c3QgY29udGFpbiBhIGxvd2VyY2FzZSBsZXR0ZXIuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcmVxdWlyZXNfbnVtYmVyJzogJ1Bhc3N3b3JkIG11c3QgY29udGFpbiBhIG51bWJlci4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXF1aXJlc19zeW1ib2wnOiAnUGFzc3dvcmQgbXVzdCBjb250YWluIGEgc3ltYm9sLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX25vdF9hbGxvd2VkJzogJ1RoYXQgcGFzc3dvcmQgaXMgbm90IGFsbG93ZWQuIENob29zZSBhIGRpZmZlcmVudCBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfY29udGFpbnNfaWRlbnRpZmllcic6ICdQYXNzd29yZCBtdXN0IG5vdCBjb250YWluIHlvdXIgZW1haWwgb3IgdXNlcm5hbWUuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfc2FtZV9hc19jdXJyZW50JzogJ1lvdXIgbmV3IHBhc3N3b3JkIG11c3QgYmUgZGlmZmVyZW50IGZyb20geW91ciBjdXJyZW50IG9uZS4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXVzZWQnOiAnWW91ciBuZXcgcGFzc3dvcmQgbXVzdCBub3QgbWF0Y2ggYW55IG9mIHlvdXIgbGFzdCB7aGlzdG9yeV9jb3VudH0gcGFzc3dvcmRzLicsXG4gICdlcnJvci5wYXNzd29yZF9leHBpcmVkJzogJ1lvdXIgcGFzc3dvcmQgaGFzIGV4cGlyZWQuIFJlc2V0IGl0IHRvIGNvbnRpbnVlLicsXG4gICdlcnJvci5lbWFpbF9ub3RfdmVyaWZpZWQnOiAnWW91ciBlbWFpbCBhZGRyZXNzIGlzIG5vdCB2ZXJpZmllZCB5ZXQuIFZlcmlmeSBpdCBiZWZvcmUgc2lnbmluZyBpbiB3aXRoIHlvdXIgcGFzc3dvcmQuJyxcbiAgJ2Vycm9yLnNpZ25faW5fdG9rZW5faW52YWxpZCc6ICdUaGF0IHNpZ24taW4gdG9rZW4gaXMgaW52YWxpZCBvciBoYXMgZXhwaXJlZC4nLFxuICAnZXJyb3IudG9vX21hbnlfYXR0ZW1wdHMnOiAnVG9vIG1hbnkgZmFpbGVkIGF0dGVtcHRzLiBUcnkgYWdhaW4gbGF0ZXIuJyxcbiAgJ2Vycm9yLnRvb19tYW55X3JlcXVlc3RzJzogJ1RvbyBtYW55IHJlcXVlc3RzLiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLicsXG4gICdlcnJvci5jYXB0Y2hhX3JlcXVpcmVkJzogJ1BsZWFzZSBjb21wbGV0ZSB0aGUgc2VjdXJpdHkgY2hlY2ssIHRoZW4gdHJ5IGFnYWluLicsXG4gICdlcnJvci5jYXB0Y2hhX2ZhaWxlZCc6IFwiVGhlIHNlY3VyaXR5IGNoZWNrIGRpZG4ndCBwYXNzLiBQbGVhc2UgdHJ5IGFnYWluLlwiLFxuICAnZXJyb3IuY2FwdGNoYV91bmF2YWlsYWJsZSc6ICdUaGUgc2VjdXJpdHkgY2hlY2sgaXMgdW5hdmFpbGFibGUgcmlnaHQgbm93LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLicsXG4gICdlcnJvci5lbWFpbF9kZWxpdmVyeV91bmF2YWlsYWJsZSc6IFwiVGhpcyBhcHAgY2FuJ3Qgc2VuZCBlbWFpbCByaWdodCBub3cuIFRyeSBhbm90aGVyIHNpZ24taW4gbWV0aG9kIG9yIGNvbnRhY3QgdGhlIGFwcCBvd25lci5cIixcbiAgJ2Vycm9yLnN0cmF0ZWd5X2Rpc2FibGVkJzogJ1RoaXMgc2lnbi1pbiBtZXRob2QgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBhcHAuJyxcbiAgJ2Vycm9yLnNpZ25fdXBfcmVzdHJpY3RlZCc6ICdTaWduLXVwIG9uIHRoaXMgYXBwIGlzIGJ5IGludml0YXRpb24gb25seS4nLFxuICAnZXJyb3Iud2FpdGxpc3RlZCc6IFwiWW91J3JlIG9uIHRoZSB3YWl0bGlzdC4gV2UnbGwgZW1haWwgeW91IHdoZW4gYSBwbGFjZSBvcGVucyB1cC5cIixcbiAgJ2Vycm9yLmlkZW50aWZpZXJfbm90X2FsbG93ZWQnOiAnVGhpcyBlbWFpbCBvciBwaG9uZSBudW1iZXIgaXMgbm90IGFsbG93ZWQgb24gdGhpcyBhcHAuJyxcbiAgJ2Vycm9yLmRpc3Bvc2FibGVfZW1haWxfYmxvY2tlZCc6ICdTaWduLXVwIHdpdGggYSBkaXNwb3NhYmxlIG9yIHRlbXBvcmFyeSBlbWFpbCBhZGRyZXNzIGlzIG5vdCBhbGxvd2VkLicsXG4gICdlcnJvci5zc29fcmVxdWlyZWQnOiAnVGhpcyBvcmdhbml6YXRpb24gcmVxdWlyZXMgc2lnbmluZyBpbiB0aHJvdWdoIHNpbmdsZSBzaWduLW9uLicsXG4gICdlcnJvci5zaWduX2luc19kaXNhYmxlZCc6ICdTaWduLWlucyBhcmUgdGVtcG9yYXJpbHkgZGlzYWJsZWQuJyxcbiAgJ2Vycm9yLnNpZ25fdXBzX2Rpc2FibGVkJzogJ1NpZ24tdXBzIGFyZSB0ZW1wb3JhcmlseSBkaXNhYmxlZC4nLFxuICAnZXJyb3IuaGlnaF9yaXNrX2Jsb2NrZWQnOiAnVGhpcyBzaWduLWluIHdhcyBibG9ja2VkIGJlY2F1c2UgaXQgbG9va2VkIHVudXN1YWwuJyxcbiAgJ2Vycm9yLnNtc19yZWdpb25fYmxvY2tlZCc6ICdUZXh0IG1lc3NhZ2VzIGFyZSBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHBob25lIG51bWJlci4nLFxufTtcblxuLyoqXG4gKiBMb29rIHVwIGEga2V5IGFuZCBpbnRlcnBvbGF0ZSBge3BsYWNlaG9sZGVyc31gLlxuICpcbiAqIEFuIHVua25vd24gcGxhY2Vob2xkZXIgaXMgbGVmdCB2aXNpYmxlIGZvciB0aGUgc2FtZSByZWFzb24gYSBtaXNzaW5nIGtleSBpczpcbiAqIGBDb250aW51ZSB3aXRoIHtwcm92aWRlcn1gIGluIHRoZSBVSSBpcyBhIGJ1ZyByZXBvcnQgd2FpdGluZyB0byBiZSBmaWxlZCxcbiAqIHdoZXJlYXMgYENvbnRpbnVlIHdpdGggYCBpcyBvbmUgbm9ib2R5IG5vdGljZXMgdW50aWwgYSBjdXN0b21lciBkb2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlKFxuICBjYXRhbG9nOiBDYXRhbG9nLFxuICBrZXk6IHN0cmluZyxcbiAgdmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge30sXG4pOiBzdHJpbmcge1xuICBjb25zdCB0ZW1wbGF0ZSA9IGNhdGFsb2dba2V5XSA/PyBFTl9VU1trZXldID8/IGtleTtcbiAgcmV0dXJuIHRlbXBsYXRlLnJlcGxhY2UoL1xceyhcXHcrKVxcfS9nLCAobWF0Y2gsIG5hbWU6IHN0cmluZykgPT4gdmFyaWFibGVzW25hbWVdID8/IG1hdGNoKTtcbn1cblxuLyoqIE1lcmdlIGEgY29tbXVuaXR5IGxvY2FsZSBvdmVyIGVuLVVTIHNvIGEgcGFydGlhbCB0cmFuc2xhdGlvbiBzdGlsbCByZW5kZXJzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhGYWxsYmFjayhsb2NhbGU6IENhdGFsb2cpOiBDYXRhbG9nIHtcbiAgcmV0dXJuIHsgLi4uRU5fVVMsIC4uLmxvY2FsZSB9O1xufVxuIl19
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBRUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQVk7SUFDNUIsY0FBYyxFQUFFLFNBQVM7SUFDekIsaUJBQWlCLEVBQUUsOEJBQThCO0lBQ2pELHdCQUF3QixFQUFFLGVBQWU7SUFDekMsc0JBQXNCLEVBQUUsVUFBVTtJQUNsQyxlQUFlLEVBQUUsVUFBVTtJQUMzQix1QkFBdUIsRUFBRSxrQkFBa0I7SUFDM0Msa0JBQWtCLEVBQUUsYUFBYTtJQUNqQyxpQkFBaUIsRUFBRSxXQUFXO0lBQzlCLG1CQUFtQixFQUFFLFNBQVM7SUFDOUIsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixxQkFBcUIsRUFBRSwwQkFBMEI7SUFDakQsMEJBQTBCLEVBQUUscUJBQXFCO0lBQ2pELHVCQUF1QixFQUFFLG1CQUFtQjtJQUM1QyxxQkFBcUIsRUFBRSxpQkFBaUI7SUFDeEMsbUJBQW1CLEVBQUUsNENBQTRDO0lBQ2pFLG1CQUFtQixFQUFFLGFBQWE7SUFDbEMsZ0JBQWdCLEVBQUUsVUFBVTtJQUM1Qix3QkFBd0IsRUFBRSx5QkFBeUI7SUFDbkQsc0JBQXNCLEVBQUUsd0JBQXdCO0lBQ2hELHlCQUF5QixFQUFFLDBFQUEwRTtJQUNyRyxzQkFBc0IsRUFBRSxzQ0FBc0M7SUFDOUQsaUJBQWlCLEVBQUUsb0JBQW9CO0lBQ3ZDLHVCQUF1QixFQUNyQix3SUFBd0k7SUFDMUksc0JBQXNCLEVBQUUsK0RBQStEO0lBRXZGLGNBQWMsRUFBRSxxQkFBcUI7SUFDckMsZUFBZSxFQUFFLFVBQVU7SUFDM0Isb0JBQW9CLEVBQUUsMEJBQTBCO0lBQ2hELG1CQUFtQixFQUFFLFNBQVM7SUFDOUIsbUJBQW1CLEVBQUUsZUFBZTtJQUNwQyxzQkFB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O0lBQ2hGLDBCQUEwQixFQUFFLHdEQUF3RDtDQUNyRixDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsT0FBZ0IsRUFDaEIsR0FBVyxFQUNYLFlBQW9DLEVBQUU7SUFFdEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDbkQsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFZLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBZTtJQUMxQyxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDCpzEwLjM6IFwiRXZlcnkgc3RyaW5nIHBhc3NlcyB0aHJvdWdoIGFuIGkxOG4gY2F0YWxvZzsgZW4tVVMgc2hpcHMsIGNhdGFsb2dcbiAqIGZvcm1hdCBkb2N1bWVudGVkIGZvciBjb21tdW5pdHkgbG9jYWxlcy5cIlxuICpcbiAqIEEgZmxhdCBrZXktdG8tc3RyaW5nIG1hcCByYXRoZXIgdGhhbiBuZXN0ZWQgb2JqZWN0cywgYmVjYXVzZSBuZXN0aW5nIGxvb2tzXG4gKiB0aWRpZXIgYW5kIG1ha2VzIGEgbWlzc2luZyBrZXkgYSBydW50aW1lIGNyYXNoIG9uIGB1bmRlZmluZWQub2YuYS5jaGFpbmBcbiAqIHJhdGhlciB0aGFuIGEgdmlzaWJsZSBmYWxsYmFjay5cbiAqXG4gKiBBIG1pc3Npbmcga2V5IHJlbmRlcnMgdGhlIEtFWSwgbm90IGFuIGVtcHR5IHN0cmluZy4gQSBibGFuayBidXR0b24gaXMgYSBidWdcbiAqIG5vYm9keSBjYW4gcmVwb3J0OyBhIGJ1dHRvbiByZWFkaW5nIGBzaWduSW4uc3VibWl0YCBpcyBvbmUgYW55b25lIGNhbi5cbiAqL1xuXG5pbXBvcnQgeyBQT0xJQ1lfU1RSSU5HUyB9IGZyb20gJ0BhdGxhc2F1dGgvanMnO1xuXG5leHBvcnQgdHlwZSBDYXRhbG9nID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IGNvbnN0IEVOX1VTOiBDYXRhbG9nID0ge1xuICAnc2lnbkluLnRpdGxlJzogJ1NpZ24gaW4nLFxuICAnc2lnbkluLnN1YnRpdGxlJzogJ3RvIGNvbnRpbnVlIHRvIHthcHBsaWNhdGlvbn0nLFxuICAnc2lnbkluLmlkZW50aWZpZXJMYWJlbCc6ICdFbWFpbCBhZGRyZXNzJyxcbiAgJ3NpZ25Jbi5wYXNzd29yZExhYmVsJzogJ1Bhc3N3b3JkJyxcbiAgJ3NpZ25Jbi5zdWJtaXQnOiAnQ29udGludWUnLFxuICAnc2lnbkluLmZvcmdvdFBhc3N3b3JkJzogJ0ZvcmdvdCBwYXNzd29yZD8nLFxuICAnc2lnbkluLm5vQWNjb3VudCc6ICdObyBhY2NvdW50PycsXG4gICdzaWduSW4ubGFzdFVzZWQnOiAnTGFzdCB1c2VkJyxcbiAgJ3NpZ25Jbi5zaWduVXBMaW5rJzogJ1NpZ24gdXAnLFxuICAnc2lnbkluLm9yRGl2aWRlcic6ICdvcicsXG4gICdzaWduSW4uc29jaWFsQnV0dG9uJzogJ0NvbnRpbnVlIHdpdGgge3Byb3ZpZGVyfScsXG4gICdzaWduSW4uY29udGludWVXaXRoQXRsYXMnOiAnQ29udGludWUgd2l0aCBBdGxhcycsXG4gICdzaWduSW4uZW1haWxDb2RlTGFiZWwnOiAnVmVyaWZpY2F0aW9uIGNvZGUnLFxuICAnc2lnbkluLnVzZUVtYWlsQ29kZSc6ICdFbWFpbCBtZSBhIGNvZGUnLFxuICAnc2lnbkluLmNvZGVTZW50VG8nOiAnV2Ugc2VudCBhIGNvZGUgdG8ge2VtYWlsfS4gRW50ZXIgaXQgYmVsb3cuJyxcbiAgJ3NpZ25Jbi5yZXNlbmRDb2RlJzogJ1Jlc2VuZCBjb2RlJyxcbiAgJ3NpZ25Jbi5zZW5kaW5nJzogJ1NlbmRpbmfigKYnLFxuICAnc2lnbkluLmVtYWlsQ29kZU9wdGlvbic6ICdFbWFpbCBtZSBhIGNvZGUgaW5zdGVhZCcsXG4gICdzaWduSW4ucGFzc2tleUJ1dHRvbic6ICdTaWduIGluIHdpdGggYSBwYXNza2V5JyxcbiAgJ3NpZ25Jbi5wYXNza2V5Q2FuY2VsbGVkJzogXCJQYXNza2V5IHNpZ24taW4gZGlkbid0IGZpbmlzaC4gVHJ5IGFnYWluLCBvciB1c2UgYW5vdGhlciB3YXkgdG8gc2lnbiBpbi5cIixcbiAgJ3NpZ25Jbi5tYWdpY0xpbmtTZW50JzogJ0NoZWNrIHlvdXIgZW1haWwgZm9yIGEgc2lnbi1pbiBsaW5rLicsXG4gICdzaWduSW4uc2lnbmVkSW4nOiAnWW91XFwncmUgc2lnbmVkIGluLicsXG4gICdzaWduSW4uc2Vzc2lvbk5vdEtlcHQnOlxuICAgICdZb3Ugc2lnbmVkIGluLCBidXQgdGhpcyBicm93c2VyIGRpZG5cXCd0IGtlZXAgdGhlIHNlc3Npb24uIElmIGl0IGJsb2NrcyB0aGlyZC1wYXJ0eSBjb29raWVzLCBhbGxvdyBjb29raWVzIGZvciB0aGlzIHNpdGUgYW5kIHRyeSBhZ2Fpbi4nLFxuICAnc2lnbkluLmNoZWNrT3RoZXJUYWInOiAnWW91IGNhbiBjbG9zZSB0aGlzIHRhYiDigJQgeW91IGFyZSBzaWduZWQgaW4gd2hlcmUgeW91IHN0YXJ0ZWQuJyxcblxuICAnc2lnblVwLnRpdGxlJzogJ0NyZWF0ZSB5b3VyIGFjY291bnQnLFxuICAnc2lnblVwLnN1Ym1pdCc6ICdDb250aW51ZScsXG4gICdzaWduVXAuaGF2ZUFjY291bnQnOiAnQWxyZWFkeSBoYXZlIGFuIGFjY291bnQ/JyxcbiAgJ3NpZ25VcC5zaWduSW5MaW5rJzogJ1NpZ24gaW4nLFxuICAnc2lnblVwLmVtYWlsTGFiZWwnOiAnRW1haWwgYWRkcmVzcycsXG4gICdzaWduVXAucGFzc3dvcmRMYWJlbCc6ICdQYXNzd29yZCcsXG4gICdzaWduVXAub3B0aW9uYWxGaWVsZCc6ICd7bGFiZWx9IChvcHRpb25hbCknLFxuICAnc2lnblVwLnNlbGVjdFBsYWNlaG9sZGVyJzogJ1NlbGVjdOKApicsXG4gICdzaWduVXAuY29uc2VudEFncmVlJzogJ0kgYWdyZWUgdG8gdGhlJyxcbiAgJ3NpZ25VcC5jb25zZW50Tm90aWNlJzogJ0J5IGNvbnRpbnVpbmcgeW91IGFncmVlIHRvIHRoZScsXG4gICdzaWduVXAudGVybXMnOiAnVGVybXMgb2YgU2VydmljZScsXG4gICdzaWduVXAucHJpdmFjeSc6ICdQcml2YWN5IFBvbGljeScsXG4gICdzaWduVXAuYW5kJzogJ2FuZCcsXG4gIC8vID0gRU1BSUxfVU5BVkFJTEFCTEVfTUVTU0FHRSBmcm9tIEBhdGxhc2F1dGgvanMuXG4gICdzaWduVXAuZW1haWxVbmF2YWlsYWJsZSc6XG4gICAgXCJUaGlzIGFwcCBjYW4ndCBzZW5kIGVtYWlsIHJpZ2h0IG5vdy4gVHJ5IGFub3RoZXIgc2lnbi1pbiBtZXRob2Qgb3IgY29udGFjdCB0aGUgYXBwIG93bmVyLlwiLFxuICAnc2lnblVwLnBhc3NrZXlPcHRpb24nOiAnU2lnbiB1cCB3aXRoIGEgcGFzc2tleSBpbnN0ZWFkJyxcbiAgJ3NpZ25VcC5wYXNzd29yZE9wdGlvbic6ICdTaWduIHVwIHdpdGggYSBwYXNzd29yZCBpbnN0ZWFkJyxcbiAgJ3NpZ25VcC5wYXNza2V5SW50cm8nOiBcIk5vIHBhc3N3b3JkIG5lZWRlZDogeW91J2xsIHNpZ24gaW4gd2l0aCBhIHBhc3NrZXkgc2F2ZWQgb24gdGhpcyBkZXZpY2Ugb3IgaW4geW91ciBwYXNzd29yZCBtYW5hZ2VyLlwiLFxuICAnc2lnblVwLnBhc3NrZXlQcm9tcHQnOiAnQ3JlYXRlIGEgcGFzc2tleSB0byBmaW5pc2ggc2V0dGluZyB1cCB5b3VyIGFjY291bnQuJyxcbiAgJ3NpZ25VcC5wYXNza2V5Q3JlYXRlJzogJ0NyZWF0ZSBwYXNza2V5JyxcbiAgJ3NpZ25VcC5wYXNza2V5Q2FuY2VsbGVkJzogXCJUaGUgcGFzc2tleSB3YXNuJ3QgY3JlYXRlZC4gVHJ5IGFnYWluIHdoZW4geW91J3JlIHJlYWR5LlwiLFxuICAnc2lnblVwLmxpbmtTZW50VG8nOiAnV2Ugc2VudCBhIGNvbmZpcm1hdGlvbiBsaW5rIHRvIHtlbWFpbH0uIE9wZW4gaXQgb24gYW55IGRldmljZTsgdGhpcyBwYWdlIGNvbnRpbnVlcyBvbiBpdHMgb3duLicsXG5cbiAgJ2NhcHRjaGEucHJvbXB0JzogJ0NvbXBsZXRlIHRoZSBzZWN1cml0eSBjaGVjayB0byBjb250aW51ZS4nLFxuICAnY2FwdGNoYS5yZXF1aXJlZCc6ICdQbGVhc2UgY29tcGxldGUgdGhlIHNlY3VyaXR5IGNoZWNrLCB0aGVuIHRyeSBhZ2Fpbi4nLFxuICAnY2FwdGNoYS5mYWlsZWQnOiBcIlRoZSBzZWN1cml0eSBjaGVjayBkaWRuJ3QgcGFzcy4gUGxlYXNlIHRyeSBhZ2Fpbi5cIixcbiAgJ2NhcHRjaGEuY2hlY2tpbmcnOiAnQ2hlY2tpbmcgeW91ciBicm93c2Vy4oCmJyxcbiAgJ2NhcHRjaGEudmVyaWZpZWQnOiAnU2VjdXJpdHkgY2hlY2sgY29tcGxldGUuJyxcbiAgJ2NhcHRjaGEucHV6emxlUHJvbXB0JzogXCJTZWxlY3QgZXZlcnkgcGljdHVyZSB0aGF0IHNob3dzIHRoZSBzYW1lIHNoYXBlIGFzIHRoaXMgb25lLiBDb2xvdXIgYW5kIHNpemUgZG9uJ3QgbWF0dGVyLlwiLFxuICAnY2FwdGNoYS5wdXp6bGVDb25maXJtJzogJ0NvbmZpcm0nLFxuICAnY2FwdGNoYS5wdXp6bGVUaWxlJzogJ1BpY3R1cmUge259JyxcbiAgJ2NhcHRjaGEucHV6emxlQWx0ZXJuYXRpdmUnOiBcIkNhbid0IGRvIHRoZSBwaWN0dXJlIGNoZWNrPyBVc2UgYSBsb25nZXIgYXV0b21hdGljIGNoZWNrIGluc3RlYWQuXCIsXG5cbiAgJ21mYS50aXRsZSc6ICdUd28tc3RlcCB2ZXJpZmljYXRpb24nLFxuICAnbWZhLnN1YnRpdGxlJzogJ0VudGVyIHRoZSBjb2RlIGZyb20geW91ciBhdXRoZW50aWNhdG9yIGFwcC4nLFxuICAnbWZhLmNvZGVMYWJlbCc6ICdDb2RlJyxcbiAgJ21mYS5lbnJvbGxGaXJzdENvZGVMYWJlbCc6ICdDb2RlIGZyb20geW91ciBhdXRoZW50aWNhdG9yIGFwcCcsXG4gICdtZmEuZW5yb2xsU2Vjb25kQ29kZUxhYmVsJzogJ1RoZSBuZXh0IGNvZGUgaXQgc2hvd3MnLFxuICAnbWZhLnVzZVBhc3NrZXknOiAnVXNlIGEgcGFzc2tleSBpbnN0ZWFkJyxcbiAgJ21mYS51c2VCYWNrdXBDb2RlJzogJ1VzZSBhIHJlY292ZXJ5IGNvZGUnLFxuICAnbWZhLnN1Ym1pdCc6ICdWZXJpZnknLFxuICAnbWZhLmVucm9sbENob29zZSc6ICdTZXQgdXAgYSBzZWNvbmQgc3RlcCBmb3Igc2lnbmluZyBpbi4nLFxuICAnbWZhLmVucm9sbFRvdHBPcHRpb24nOiAnVXNlIGFuIGF1dGhlbnRpY2F0b3IgYXBwJyxcbiAgJ21mYS5lbnJvbGxTbXNPcHRpb24nOiAnVXNlIHRleHQgbWVzc2FnZXMnLFxuICAnbWZhLmVucm9sbFNjYW4nOiAnU2NhbiB0aGlzIFFSIGNvZGUgd2l0aCB5b3VyIGF1dGhlbnRpY2F0b3IgYXBwLCBvciBlbnRlciB0aGUgc2V0dXAga2V5LicsXG4gICdtZmEuZW5yb2xsUXJBbHQnOiAnUVIgY29kZSBmb3IgeW91ciBhdXRoZW50aWNhdG9yIGFwcCcsXG4gICdtZmEuZW5yb2xsU2V0dXBLZXknOiAnU2V0dXAga2V5JyxcbiAgJ21mYS5lbnJvbGxQcmVwYXJpbmcnOiAnU2V0dGluZyB1cOKApicsXG4gICdtZmEucGhvbmVMYWJlbCc6ICdNb2JpbGUgbnVtYmVyJyxcbiAgJ21mYS5waG9uZUhpbnQnOiAnSW5jbHVkZSB0aGUgY291bnRyeSBjb2RlLCBmb3IgZXhhbXBsZSArMTQxNTU1NTAxMDEuJyxcbiAgJ21mYS5zZW5kQ29kZSc6ICdUZXh0IG1lIGEgY29kZScsXG4gICdtZmEuY29kZVRleHRlZFRvJzogJ0VudGVyIHRoZSBjb2RlIHdlIHRleHRlZCB0byB7cGhvbmV9LicsXG4gICdtZmEuc21zQ29kZU9wdGlvbic6ICdUZXh0IG1lIGEgY29kZSBpbnN0ZWFkJyxcbiAgJ21mYS5yZWNvdmVyeUNvZGVzVGl0bGUnOiAnU2F2ZSB5b3VyIHJlY292ZXJ5IGNvZGVzJyxcbiAgJ21mYS5yZWNvdmVyeUNvZGVzSGVscCc6IFwiRWFjaCBjb2RlIHdvcmtzIG9uY2UuIElmIHlvdSBjYW4ndCB1c2UgeW91ciBzZWNvbmQgc3RlcCwgc2lnbiBpbiB3aXRoIG9uZSBvZiB0aGVzZS4gS2VlcCB0aGVtIHNvbWV3aGVyZSBzYWZlOiB0aGV5IHdvbid0IGJlIHNob3duIGFnYWluLlwiLFxuICAnbWZhLnJlY292ZXJ5Q29kZXNDb3B5JzogJ0NvcHkgY29kZXMnLFxuICAnbWZhLnJlY292ZXJ5Q29kZXNDb3BpZWQnOiAnQ29waWVkLicsXG4gICdtZmEucmVjb3ZlcnlDb2Rlc0Rvd25sb2FkJzogJ0Rvd25sb2FkIGFzIC50eHQnLFxuICAnbWZhLnJlY292ZXJ5Q29kZXNTYXZlZCc6IFwiSSd2ZSBzYXZlZCBteSBjb2Rlc1wiLFxuXG4gICdyZXNldC50aXRsZSc6ICdSZXNldCB5b3VyIHBhc3N3b3JkJyxcbiAgJ3Jlc2V0LnN1Ym1pdCc6ICdTZW5kIHJlc2V0IGNvZGUnLFxuICAncmVzZXQubmV3UGFzc3dvcmRMYWJlbCc6ICdOZXcgcGFzc3dvcmQnLFxuXG4gICd1c2VyQnV0dG9uLm1hbmFnZUFjY291bnQnOiAnTWFuYWdlIGFjY291bnQnLFxuICAndXNlckJ1dHRvbi5zaWduT3V0JzogJ1NpZ24gb3V0JyxcbiAgJ3VzZXJCdXR0b24uc2lnbk91dEFsbCc6ICdTaWduIG91dCBvZiBhbGwgZGV2aWNlcycsXG5cbiAgJ3VzZXJQcm9maWxlLnRpdGxlJzogJ0FjY291bnQnLFxuICAndXNlclByb2ZpbGUucHJvZmlsZVNlY3Rpb24nOiAnUHJvZmlsZScsXG4gICd1c2VyUHJvZmlsZS5lbWFpbHNTZWN0aW9uJzogJ0VtYWlsIGFkZHJlc3NlcycsXG4gICd1c2VyUHJvZmlsZS5zZWN1cml0eVNlY3Rpb24nOiAnU2VjdXJpdHknLFxuICAndXNlclByb2ZpbGUuZGV2aWNlc1NlY3Rpb24nOiAnQWN0aXZlIGRldmljZXMnLFxuICAndXNlclByb2ZpbGUuZGFuZ2VyU2VjdGlvbic6ICdEYW5nZXIgem9uZScsXG4gICd1c2VyUHJvZmlsZS5hZGRFbWFpbCc6ICdBZGQgYW4gZW1haWwgYWRkcmVzcycsXG4gICd1c2VyUHJvZmlsZS5tYWtlUHJpbWFyeSc6ICdNYWtlIHByaW1hcnknLFxuICAndXNlclByb2ZpbGUudW52ZXJpZmllZCc6ICdVbnZlcmlmaWVkJyxcbiAgJ3VzZXJQcm9maWxlLnZlcmlmeSc6ICdWZXJpZnknLFxuICAndXNlclByb2ZpbGUudmVyaWZ5Q29uZmlybSc6ICdDb25maXJtJyxcbiAgJ3VzZXJQcm9maWxlLnZlcmlmeUNvZGVQbGFjZWhvbGRlcic6ICdDb2RlIGZyb20gdGhlIGVtYWlsJyxcbiAgJ3VzZXJQcm9maWxlLnZlcmlmeVNlbmRGYWlsZWQnOiAnV2UgY291bGQgbm90IHNlbmQgYSBjb2RlIHJpZ2h0IG5vdy4gVHJ5IGFnYWluIGluIGEgbWludXRlLicsXG4gICd1c2VyUHJvZmlsZS52ZXJpZnlDb2RlUmVqZWN0ZWQnOiAnVGhhdCBjb2RlIHdhcyBub3QgYWNjZXB0ZWQuJyxcbiAgJ3VzZXJQcm9maWxlLnJldm9rZURldmljZSc6ICdTaWduIG91dCcsXG4gICd1c2VyUHJvZmlsZS5kZWxldGVBY2NvdW50JzogJ0RlbGV0ZSBhY2NvdW50JyxcblxuICAnb3JnYW5pemF0aW9uLnN3aXRjaGVyJzogJ1N3aXRjaCBvcmdhbml6YXRpb24nLFxuICAnb3JnYW5pemF0aW9uLnBlcnNvbmFsJzogJ1BlcnNvbmFsIGFjY291bnQnLFxuICAnb3JnYW5pemF0aW9uLm1lbWJlcnMnOiAnTWVtYmVycycsXG4gICdvcmdhbml6YXRpb24uaW52aXRlJzogJ0ludml0ZSBtZW1iZXInLFxuICAnb3JnYW5pemF0aW9uLnJvbGVMYWJlbCc6ICdSb2xlJyxcbiAgJ29yZ2FuaXphdGlvbi5pbnZpdGF0aW9ucyc6ICdJbnZpdGF0aW9ucycsXG4gICdvcmdhbml6YXRpb24uc2V0dGluZ3MnOiAnU2V0dGluZ3MnLFxuICAnb3JnYW5pemF0aW9uLmVtYWlsTGFiZWwnOiAnRW1haWwgYWRkcmVzcycsXG4gICdvcmdhbml6YXRpb24uc2VuZEludml0ZSc6ICdTZW5kIGludml0YXRpb24nLFxuICAnb3JnYW5pemF0aW9uLm5vSW52aXRhdGlvbnMnOiAnTm8gcGVuZGluZyBpbnZpdGF0aW9ucy4nLFxuICAnb3JnYW5pemF0aW9uLnJlbW92ZSc6ICdSZW1vdmUnLFxuICAnb3JnYW5pemF0aW9uLnJldm9rZSc6ICdSZXZva2UnLFxuICAnb3JnYW5pemF0aW9uLnJlc2VuZCc6ICdSZXNlbmQnLFxuICAnb3JnYW5pemF0aW9uLnlvdSc6ICcoeW91KScsXG4gICdvcmdhbml6YXRpb24ubGVhdmUnOiAnTGVhdmUgb3JnYW5pemF0aW9uJyxcbiAgJ29yZ2FuaXphdGlvbi5sZWF2ZUNvbmZpcm0nOiAnTGVhdmUge25hbWV9PyBZb3Ugd2lsbCBsb3NlIGFjY2VzcyB1bnRpbCB5b3UgYXJlIGludml0ZWQgYWdhaW4uJyxcbiAgJ29yZ2FuaXphdGlvbi5kZWxldGUnOiAnRGVsZXRlIG9yZ2FuaXphdGlvbicsXG4gICdvcmdhbml6YXRpb24uZGVsZXRlQ29uZmlybSc6ICdEZWxldGUge25hbWV9IGZvciBldmVyeSBtZW1iZXI/IFRoaXMgY2Fubm90IGJlIHVuZG9uZS4nLFxuICAnb3JnYW5pemF0aW9uLmNvbmZpcm0nOiAnQ29uZmlybScsXG4gICdvcmdhbml6YXRpb24uY2FuY2VsJzogJ0NhbmNlbCcsXG4gICdvcmdhbml6YXRpb24udW5uYW1lZE1lbWJlcic6ICdVbm5hbWVkIG1lbWJlcicsXG4gICdvcmdhbml6YXRpb24ucGFzc3dvcmRQcm9tcHQnOiAnRW50ZXIgeW91ciBwYXNzd29yZCB0byBjb25maXJtLicsXG4gICdvcmdhbml6YXRpb24ucm9sZXMnOiAnUm9sZXMnLFxuICAnb3JnYW5pemF0aW9uLnJvbGVOYW1lJzogJ1JvbGUgbmFtZScsXG4gICdvcmdhbml6YXRpb24ucm9sZUtleSc6ICdSb2xlIGtleSAoZm9yIGV4YW1wbGUgb3JnOmF1ZGl0b3IpJyxcbiAgJ29yZ2FuaXphdGlvbi5yb2xlUGVybWlzc2lvbnMnOiAnUGVybWlzc2lvbnMnLFxuICAnb3JnYW5pemF0aW9uLmNyZWF0ZVJvbGUnOiAnQ3JlYXRlIHJvbGUnLFxuICAnb3JnYW5pemF0aW9uLnNhdmVSb2xlJzogJ1NhdmUgcm9sZScsXG4gICdvcmdhbml6YXRpb24uZWRpdFJvbGUnOiAnRWRpdCcsXG4gICdvcmdhbml6YXRpb24uZGVsZXRlUm9sZSc6ICdEZWxldGUnLFxuICAnb3JnYW5pemF0aW9uLm5vQ3VzdG9tUm9sZXMnOiAnVGhpcyBvcmdhbml6YXRpb24gaGFzIG5vIHJvbGVzIG9mIGl0cyBvd24geWV0LicsXG4gICdpbXBlcnNvbmF0aW9uLmJhbm5lcic6ICdZb3UgYXJlIHNpZ25lZCBpbiBhcyB7bmFtZX0gb24gc29tZW9uZSBlbHNlXFwncyBiZWhhbGYuJyxcbiAgJ2ltcGVyc29uYXRpb24ucmV0dXJuVG9BZG1pbic6ICdSZXR1cm4gdG8gYWRtaW4nLFxuICAnaW1wZXJzb25hdGlvbi5lbmQnOiAnRW5kIGltcGVyc29uYXRpb24nLFxuXG4gIC8vIFBvbGljeSBhY2NlcHRhbmNlICh0ZXJtcywgcHJpdmFjeSwgYW55IHBvbGljeSkuXG4gIC4uLlBPTElDWV9TVFJJTkdTLFxuXG4gICdlcnJvci5nZW5lcmljJzogJ1NvbWV0aGluZyB3ZW50IHdyb25nLiBQbGVhc2UgdHJ5IGFnYWluLicsXG4gICdlcnJvci5uZXR3b3JrJzogJ1dlIGNvdWxkIG5vdCByZWFjaCB0aGUgc2VydmVyLiBDaGVjayB5b3VyIGNvbm5lY3Rpb24uJyxcblxuICAvLyBTZXJ2ZXIgZXJyb3JzLCBieSB0aGUgc3RhYmxlIGByZWFzb25gIHRoZSBGcm9udGVuZCBBUEkgc2VuZHMuIFNob3duIGluc3RlYWRcbiAgLy8gb2YgdGhlIHNlcnZlcidzIGBtZXNzYWdlYCAoc2VlIGBsb2NhbGl6ZWRFcnJvck1lc3NhZ2VgIGluIEBhdGxhc2F1dGgvanMpLlxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9pbmNvcnJlY3QnOiAnVGhvc2UgY3JlZGVudGlhbHMgYXJlIGluY29ycmVjdC4nLFxuICAnZXJyb3IuZm9ybV9jb2RlX2luY29ycmVjdCc6ICdUaGF0IGNvZGUgaXMgaW5jb3JyZWN0LicsXG4gICdlcnJvci5mb3JtX2NvZGVfYWxyZWFkeV91c2VkJzogJ1RoYXQgY29kZSBoYXMgYWxyZWFkeSBiZWVuIHVzZWQuIFdhaXQgZm9yIGEgbmV3IG9uZS4nLFxuICAnZXJyb3IuZm9ybV9jb2RlX2V4cGlyZWQnOiAnVGhhdCBjb2RlIGhhcyBleHBpcmVkLiBSZXF1ZXN0IGEgbmV3IG9uZS4nLFxuICAnZXJyb3IuZm9ybV9jb2RlX21heF9hdHRlbXB0cyc6ICdUb28gbWFueSBpbmNvcnJlY3QgY29kZXMuIFJlcXVlc3QgYSBuZXcgY29kZS4nLFxuICAnZXJyb3IuZm9ybV9saW5rX2ludmFsaWQnOiAnVGhhdCBzaWduLWluIGxpbmsgaXMgaW52YWxpZCBvciBoYXMgYWxyZWFkeSBiZWVuIHVzZWQuJyxcbiAgJ2Vycm9yLmZvcm1faWRlbnRpZmllcl9ub3RfZm91bmQnOiBcIldlIGNvdWxkbid0IGZpbmQgYW4gYWNjb3VudCB3aXRoIHRob3NlIGRldGFpbHMuXCIsXG4gICdlcnJvci5mb3JtX2lkZW50aWZpZXJfZXhpc3RzJzogXCJUaGVyZSdzIGFscmVhZHkgYW4gYWNjb3VudCBmb3IgdGhpcyBlbWFpbC4gU2lnbiBpbiB3aXRoIHttZXRob2RzfS5cIixcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfcHduZWQnOiAnVGhpcyBwYXNzd29yZCBoYXMgYXBwZWFyZWQgaW4gYSBrbm93biBkYXRhIGJyZWFjaC4gUGxlYXNlIGNob29zZSBhIGRpZmZlcmVudCBvbmUuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfdG9vX3Nob3J0JzogJ1Bhc3N3b3JkIG11c3QgYmUgYXQgbGVhc3Qge21pbl9sZW5ndGh9IGNoYXJhY3RlcnMuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfdG9vX2xvbmcnOiAnUGFzc3dvcmQgbXVzdCBiZSBhdCBtb3N0IHttYXhfbGVuZ3RofSBjaGFyYWN0ZXJzLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3JlcXVpcmVzX3VwcGVyY2FzZSc6ICdQYXNzd29yZCBtdXN0IGNvbnRhaW4gYW4gdXBwZXJjYXNlIGxldHRlci4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXF1aXJlc19sb3dlcmNhc2UnOiAnUGFzc3dvcmQgbXVzdCBjb250YWluIGEgbG93ZXJjYXNlIGxldHRlci4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9yZXF1aXJlc19udW1iZXInOiAnUGFzc3dvcmQgbXVzdCBjb250YWluIGEgbnVtYmVyLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3JlcXVpcmVzX3N5bWJvbCc6ICdQYXNzd29yZCBtdXN0IGNvbnRhaW4gYSBzeW1ib2wuJyxcbiAgJ2Vycm9yLmZvcm1fcGFzc3dvcmRfbm90X2FsbG93ZWQnOiAnVGhhdCBwYXNzd29yZCBpcyBub3QgYWxsb3dlZC4gQ2hvb3NlIGEgZGlmZmVyZW50IG9uZS4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9jb250YWluc19pZGVudGlmaWVyJzogJ1Bhc3N3b3JkIG11c3Qgbm90IGNvbnRhaW4geW91ciBlbWFpbCBvciB1c2VybmFtZS4nLFxuICAnZXJyb3IuZm9ybV9wYXNzd29yZF9zYW1lX2FzX2N1cnJlbnQnOiAnWW91ciBuZXcgcGFzc3dvcmQgbXVzdCBiZSBkaWZmZXJlbnQgZnJvbSB5b3VyIGN1cnJlbnQgb25lLicsXG4gICdlcnJvci5mb3JtX3Bhc3N3b3JkX3JldXNlZCc6ICdZb3VyIG5ldyBwYXNzd29yZCBtdXN0IG5vdCBtYXRjaCBhbnkgb2YgeW91ciBsYXN0IHtoaXN0b3J5X2NvdW50fSBwYXNzd29yZHMuJyxcbiAgJ2Vycm9yLnBhc3N3b3JkX2V4cGlyZWQnOiAnWW91ciBwYXNzd29yZCBoYXMgZXhwaXJlZC4gUmVzZXQgaXQgdG8gY29udGludWUuJyxcbiAgJ2Vycm9yLmVtYWlsX25vdF92ZXJpZmllZCc6ICdZb3VyIGVtYWlsIGFkZHJlc3MgaXMgbm90IHZlcmlmaWVkIHlldC4gVmVyaWZ5IGl0IGJlZm9yZSBzaWduaW5nIGluIHdpdGggeW91ciBwYXNzd29yZC4nLFxuICAnZXJyb3Iuc2lnbl9pbl90b2tlbl9pbnZhbGlkJzogJ1RoYXQgc2lnbi1pbiB0b2tlbiBpcyBpbnZhbGlkIG9yIGhhcyBleHBpcmVkLicsXG4gICdlcnJvci50b29fbWFueV9hdHRlbXB0cyc6ICdUb28gbWFueSBmYWlsZWQgYXR0ZW1wdHMuIFRyeSBhZ2FpbiBsYXRlci4nLFxuICAnZXJyb3IudG9vX21hbnlfcmVxdWVzdHMnOiAnVG9vIG1hbnkgcmVxdWVzdHMuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuJyxcbiAgJ2Vycm9yLmNhcHRjaGFfcmVxdWlyZWQnOiAnUGxlYXNlIGNvbXBsZXRlIHRoZSBzZWN1cml0eSBjaGVjaywgdGhlbiB0cnkgYWdhaW4uJyxcbiAgJ2Vycm9yLmNhcHRjaGFfZmFpbGVkJzogXCJUaGUgc2VjdXJpdHkgY2hlY2sgZGlkbid0IHBhc3MuIFBsZWFzZSB0cnkgYWdhaW4uXCIsXG4gICdlcnJvci5jYXB0Y2hhX3VuYXZhaWxhYmxlJzogJ1RoZSBzZWN1cml0eSBjaGVjayBpcyB1bmF2YWlsYWJsZSByaWdodCBub3cuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuJyxcbiAgJ2Vycm9yLmVtYWlsX2RlbGl2ZXJ5X3VuYXZhaWxhYmxlJzogXCJUaGlzIGFwcCBjYW4ndCBzZW5kIGVtYWlsIHJpZ2h0IG5vdy4gVHJ5IGFub3RoZXIgc2lnbi1pbiBtZXRob2Qgb3IgY29udGFjdCB0aGUgYXBwIG93bmVyLlwiLFxuICAnZXJyb3Iuc3RyYXRlZ3lfZGlzYWJsZWQnOiAnVGhpcyBzaWduLWluIG1ldGhvZCBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIGFwcC4nLFxuICAnZXJyb3Iuc2lnbl91cF9yZXN0cmljdGVkJzogJ1NpZ24tdXAgb24gdGhpcyBhcHAgaXMgYnkgaW52aXRhdGlvbiBvbmx5LicsXG4gICdlcnJvci53YWl0bGlzdGVkJzogXCJZb3UncmUgb24gdGhlIHdhaXRsaXN0LiBXZSdsbCBlbWFpbCB5b3Ugd2hlbiBhIHBsYWNlIG9wZW5zIHVwLlwiLFxuICAnZXJyb3IuaWRlbnRpZmllcl9ub3RfYWxsb3dlZCc6ICdUaGlzIGVtYWlsIG9yIHBob25lIG51bWJlciBpcyBub3QgYWxsb3dlZCBvbiB0aGlzIGFwcC4nLFxuICAnZXJyb3IuZGlzcG9zYWJsZV9lbWFpbF9ibG9ja2VkJzogJ1NpZ24tdXAgd2l0aCBhIGRpc3Bvc2FibGUgb3IgdGVtcG9yYXJ5IGVtYWlsIGFkZHJlc3MgaXMgbm90IGFsbG93ZWQuJyxcbiAgJ2Vycm9yLnNzb19yZXF1aXJlZCc6ICdUaGlzIG9yZ2FuaXphdGlvbiByZXF1aXJlcyBzaWduaW5nIGluIHRocm91Z2ggc2luZ2xlIHNpZ24tb24uJyxcbiAgJ2Vycm9yLnNpZ25faW5zX2Rpc2FibGVkJzogJ1NpZ24taW5zIGFyZSB0ZW1wb3JhcmlseSBkaXNhYmxlZC4nLFxuICAnZXJyb3Iuc2lnbl91cHNfZGlzYWJsZWQnOiAnU2lnbi11cHMgYXJlIHRlbXBvcmFyaWx5IGRpc2FibGVkLicsXG4gICdlcnJvci5oaWdoX3Jpc2tfYmxvY2tlZCc6ICdUaGlzIHNpZ24taW4gd2FzIGJsb2NrZWQgYmVjYXVzZSBpdCBsb29rZWQgdW51c3VhbC4nLFxuICAnZXJyb3Iuc21zX3JlZ2lvbl9ibG9ja2VkJzogJ1RleHQgbWVzc2FnZXMgYXJlIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgcGhvbmUgbnVtYmVyLicsXG59O1xuXG4vKipcbiAqIExvb2sgdXAgYSBrZXkgYW5kIGludGVycG9sYXRlIGB7cGxhY2Vob2xkZXJzfWAuXG4gKlxuICogQW4gdW5rbm93biBwbGFjZWhvbGRlciBpcyBsZWZ0IHZpc2libGUgZm9yIHRoZSBzYW1lIHJlYXNvbiBhIG1pc3Npbmcga2V5IGlzOlxuICogYENvbnRpbnVlIHdpdGgge3Byb3ZpZGVyfWAgaW4gdGhlIFVJIGlzIGEgYnVnIHJlcG9ydCB3YWl0aW5nIHRvIGJlIGZpbGVkLFxuICogd2hlcmVhcyBgQ29udGludWUgd2l0aCBgIGlzIG9uZSBub2JvZHkgbm90aWNlcyB1bnRpbCBhIGN1c3RvbWVyIGRvZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGUoXG4gIGNhdGFsb2c6IENhdGFsb2csXG4gIGtleTogc3RyaW5nLFxuICB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fSxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHRlbXBsYXRlID0gY2F0YWxvZ1trZXldID8/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.11.0';
2
+ export const ATLAS_ANGULAR_VERSION = '0.13.0';
3
3
  export const ATLAS_ANGULAR_SDK = { name: '@atlasauth/angular', version: ATLAS_ANGULAR_VERSION };
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxnR0FBZ0c7QUFDaEcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsUUFBUSxDQUFDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFpQixFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXRsYXNTZGtJbmZvIH0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5cbi8qKiBUaGlzIHBhY2thZ2UncyB2ZXJzaW9uLCBzZW50IGFzIGBYLUF0bGFzLVNES2AgKGtlcHQgaW4gc3RlcCB3aXRoIHBhY2thZ2UuanNvbiBieSBhIHRlc3QpLiAqL1xuZXhwb3J0IGNvbnN0IEFUTEFTX0FOR1VMQVJfVkVSU0lPTiA9ICcwLjExLjAnO1xuZXhwb3J0IGNvbnN0IEFUTEFTX0FOR1VMQVJfU0RLOiBBdGxhc1Nka0luZm8gPSB7IG5hbWU6ICdAYXRsYXNhdXRoL2FuZ3VsYXInLCB2ZXJzaW9uOiBBVExBU19BTkdVTEFSX1ZFUlNJT04gfTtcbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxnR0FBZ0c7QUFDaEcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsUUFBUSxDQUFDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFpQixFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXRsYXNTZGtJbmZvIH0gZnJvbSAnQGF0bGFzYXV0aC9qcyc7XG5cbi8qKiBUaGlzIHBhY2thZ2UncyB2ZXJzaW9uLCBzZW50IGFzIGBYLUF0bGFzLVNES2AgKGtlcHQgaW4gc3RlcCB3aXRoIHBhY2thZ2UuanNvbiBieSBhIHRlc3QpLiAqL1xuZXhwb3J0IGNvbnN0IEFUTEFTX0FOR1VMQVJfVkVSU0lPTiA9ICcwLjEzLjAnO1xuZXhwb3J0IGNvbnN0IEFUTEFTX0FOR1VMQVJfU0RLOiBBdGxhc1Nka0luZm8gPSB7IG5hbWU6ICdAYXRsYXNhdXRoL2FuZ3VsYXInLCB2ZXJzaW9uOiBBVExBU19BTkdVTEFSX1ZFUlNJT04gfTtcbiJdfQ==
@@ -4,7 +4,7 @@ import { isPlatformBrowser, DOCUMENT } from '@angular/common';
4
4
  import { toSignal } from '@angular/core/rxjs-interop';
5
5
  import { BehaviorSubject, Subject, combineLatest, firstValueFrom } from 'rxjs';
6
6
  import { map, distinctUntilChanged, filter, take } from 'rxjs/operators';
7
- import { createOrganizationAuditLog, POLICY_STRINGS, TokenCache, SignOutNotifier, resolveFrontendApi, withDevBrowser, catalogLocale, configureReferralCapture, FapiClient, SignOutGuard, localizedErrorMessage, reauthenticate, getTemplateToken, getProviderToken, signOutReasonFromClient, readRedirectResult, completeOAuthPopupLanding, mapOAuthPopupPayload, stripRedirectParams, closeOAuthPopupAfterSignIn, SDK_HEADER, sdkHeaderValue, reportSdkAdvisory, readExpiry, msUntilRefresh, policyTranslator, injectPolicyStyles, mountPolicyClickwrap, mountPolicyConsent, controllerForPending, mountPolicyAcceptStep, joinTitles, formatPolicyDate, PolicyGateController, groupSetupKey, enrollmentSubmitKey, nextStep, awaitingSignUpLink, canDownloadRecoveryCodes, copyRecoveryCodes, downloadRecoveryCodes, createCaptchaController, atlasCaptchaLabels, PolicyAcceptanceController, flowFromPending, initialFlow, createMfaEnrollment, mfaChoicesFrom, fetchInstanceSettings, fetchLastSignInMethod, offeredFirstFactors, prepareFactor, signInCaptchaOptions, flowNeedsCaptcha, planFirstFactor, advanceWithCaptcha, loadPolicies, createSignUp, prepareSecondFactorCode, resendSignUpVerification, createPasskeySignUp, finishPasskeySignUp, pendingRecoveryCodes, acknowledgeRecoveryCodes, shouldKeepPolling, pollAttempt, lastUsedMethodLabel, signUp, confirmPolicies, passkeysSupported, awaitingPasskey, listCibaRequests, getCibaPin, decideCibaRequest, setCibaPin, clearCibaPin, OrganizationProfileController, describeAuditAction, actorFromClaims } from '@atlasauth/js';
7
+ import { createOrganizationAuditLog, POLICY_STRINGS, TokenCache, SignOutNotifier, resolveFrontendApi, withDevBrowser, catalogLocale, configureReferralCapture, FapiClient, SignOutGuard, localizedErrorMessage, reauthenticate, getTemplateToken, getProviderToken, signOutReasonFromClient, readRedirectResult, completeOAuthPopupLanding, mapOAuthPopupPayload, stripRedirectParams, closeOAuthPopupAfterSignIn, SDK_HEADER, sdkHeaderValue, reportSdkAdvisory, readExpiry, msUntilRefresh, policyTranslator, injectPolicyStyles, mountPolicyClickwrap, mountPolicyConsent, controllerForPending, mountPolicyAcceptStep, joinTitles, formatPolicyDate, PolicyGateController, groupSetupKey, enrollmentSubmitKey, nextStep, awaitingSignUpLink, canDownloadRecoveryCodes, copyRecoveryCodes, downloadRecoveryCodes, createCaptchaController, atlasCaptchaLabels, PolicyAcceptanceController, flowFromPending, initialFlow, createMfaEnrollment, createPasskeySignInController, startSignInWithAtlas, mfaChoicesFrom, fetchInstanceSettings, fetchLastSignInMethod, offeredFirstFactors, prepareFactor, signInCaptchaOptions, flowNeedsCaptcha, planFirstFactor, advanceWithCaptcha, loadPolicies, createSignUp, prepareSecondFactorCode, resendSignUpVerification, createPasskeySignUp, finishPasskeySignUp, pendingRecoveryCodes, acknowledgeRecoveryCodes, shouldKeepPolling, pollAttempt, lastUsedMethodLabel, signUp, passkeysSupported, confirmPolicies, awaitingPasskey, listCibaRequests, getCibaPin, decideCibaRequest, setCibaPin, clearCibaPin, OrganizationProfileController, describeAuditAction, actorFromClaims } from '@atlasauth/js';
8
8
  export { FapiClient, SIGN_OUT_EVENT, SignOutError, advance, flowFromPending, getProviderToken, initialFlow, onAtlasSignOut, pollAttempt, prepareFactor, requestForStep, shouldKeepPolling } from '@atlasauth/js';
9
9
  import { evaluate } from '@atlasauth/authz';
10
10
  export { evaluate, hasFromClaims } from '@atlasauth/authz';
@@ -204,12 +204,15 @@ const EN_US = {
204
204
  'signIn.signUpLink': 'Sign up',
205
205
  'signIn.orDivider': 'or',
206
206
  'signIn.socialButton': 'Continue with {provider}',
207
+ 'signIn.continueWithAtlas': 'Continue with Atlas',
207
208
  'signIn.emailCodeLabel': 'Verification code',
208
209
  'signIn.useEmailCode': 'Email me a code',
209
210
  'signIn.codeSentTo': 'We sent a code to {email}. Enter it below.',
210
211
  'signIn.resendCode': 'Resend code',
211
212
  'signIn.sending': 'Sending…',
212
213
  'signIn.emailCodeOption': 'Email me a code instead',
214
+ 'signIn.passkeyButton': 'Sign in with a passkey',
215
+ 'signIn.passkeyCancelled': "Passkey sign-in didn't finish. Try again, or use another way to sign in.",
213
216
  'signIn.magicLinkSent': 'Check your email for a sign-in link.',
214
217
  'signIn.signedIn': 'You\'re signed in.',
215
218
  'signIn.sessionNotKept': 'You signed in, but this browser didn\'t keep the session. If it blocks third-party cookies, allow cookies for this site and try again.',
@@ -389,7 +392,7 @@ function withFallback(locale) {
389
392
  }
390
393
 
391
394
  /** This package's version, sent as `X-Atlas-SDK` (kept in step with package.json by a test). */
392
- const ATLAS_ANGULAR_VERSION = '0.11.0';
395
+ const ATLAS_ANGULAR_VERSION = '0.13.0';
393
396
  const ATLAS_ANGULAR_SDK = { name: '@atlasauth/angular', version: ATLAS_ANGULAR_VERSION };
394
397
 
395
398
  /**
@@ -1639,7 +1642,8 @@ class AttemptFlowComponent {
1639
1642
  const step = this.step();
1640
1643
  switch (step.kind) {
1641
1644
  case 'collect_identifier':
1642
- return [{ kind: 'input', name: 'identifier', labelKey: 'signIn.identifierLabel', type: 'email' }];
1645
+ // `webauthn`: saved passkeys appear in this field's autofill while <atlas-sign-in> holds a conditional request.
1646
+ return [{ kind: 'input', name: 'identifier', labelKey: 'signIn.identifierLabel', type: 'email', autocomplete: 'username webauthn' }];
1643
1647
  case 'collect_first_factor': {
1644
1648
  if (this.preparedFactor === 'email_code') {
1645
1649
  return [{ kind: 'input', name: 'code', labelKey: 'signIn.emailCodeLabel', type: 'text' }];
@@ -1805,6 +1809,7 @@ class AttemptFlowComponent {
1805
1809
  [class]="cls('formFieldInput', 'atlas-input')"
1806
1810
  [type]="f.type"
1807
1811
  [attr.name]="f.name"
1812
+ [attr.autocomplete]="f.autocomplete ?? null"
1808
1813
  [value]="values[f.name] ?? ''"
1809
1814
  (input)="setValue(f.name, $any($event.target).value)"
1810
1815
  />
@@ -2016,6 +2021,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2016
2021
  [class]="cls('formFieldInput', 'atlas-input')"
2017
2022
  [type]="f.type"
2018
2023
  [attr.name]="f.name"
2024
+ [attr.autocomplete]="f.autocomplete ?? null"
2019
2025
  [value]="values[f.name] ?? ''"
2020
2026
  (input)="setValue(f.name, $any($event.target).value)"
2021
2027
  />
@@ -2341,6 +2347,13 @@ class AtlasFlowController {
2341
2347
  * {@link create} sends their acceptances and reloads them after a refusal.
2342
2348
  */
2343
2349
  policies = new PolicyAcceptanceController([]);
2350
+ /**
2351
+ * Passkey sign-in (the "Sign in with a passkey" button and passkey autofill on
2352
+ * the identifier field). The outcome goes through the same completion as every sign-in.
2353
+ */
2354
+ passkey;
2355
+ /** Whether this browser can run WebAuthn; `<atlas-sign-in>` sets it after it is created in a browser. */
2356
+ passkeySupported = signal(false);
2344
2357
  pollTimer = null;
2345
2358
  identifier = '';
2346
2359
  constructor(client, reload, pending,
@@ -2355,9 +2368,36 @@ class AtlasFlowController {
2355
2368
  this.enrollment = createMfaEnrollment(this.client, () => this.mfaChoices());
2356
2369
  this.enrollmentState = signal(this.enrollment.state);
2357
2370
  this.enrollment.subscribe((next) => this.enrollmentState.set(next));
2371
+ this.passkey = createPasskeySignInController({
2372
+ client: this.client,
2373
+ onStart: () => this.state.update((current) => ({ ...current, busy: true, errors: [] })),
2374
+ onResult: (next) => this.finish(next),
2375
+ captcha: () => this.captcha,
2376
+ cancelledMessage: () => this.t('signIn.passkeyCancelled'),
2377
+ });
2358
2378
  this.syncCaptcha();
2359
2379
  this.syncEnrollment();
2360
2380
  }
2381
+ /** Why "Continue with Atlas" could not start (the server's message); null otherwise. */
2382
+ signInWithAtlasError = signal(null);
2383
+ /**
2384
+ * "Continue with Atlas" (when `settings().signInWithAtlas` is set): starts the
2385
+ * SSO sign-in and sends the browser to Atlas.
2386
+ */
2387
+ async signInWithAtlas(connectionId) {
2388
+ if (typeof window === 'undefined')
2389
+ return;
2390
+ this.signInWithAtlasError.set(null);
2391
+ const started = await startSignInWithAtlas(this.client, connectionId, window.location.href);
2392
+ if ('url' in started)
2393
+ window.location.assign(started.url);
2394
+ else
2395
+ this.signInWithAtlasError.set(started.error);
2396
+ }
2397
+ /** "Sign in with a passkey" is offered: the first step, the instance turned passkey sign-in on, and the browser can. */
2398
+ passkeyOffered() {
2399
+ return this.passkeySupported() && !this.state().attempt && this.settings()?.passkeySignIn === true;
2400
+ }
2361
2401
  /** What the app lets the MFA steps offer (from {@link settings}). */
2362
2402
  mfaChoices() {
2363
2403
  return mfaChoicesFrom(this.settings()?.account);
@@ -2632,6 +2672,7 @@ class AtlasFlowController {
2632
2672
  }
2633
2673
  /** Release the poll timer and the captcha widgets — call from the component's `ngOnDestroy`. */
2634
2674
  destroy() {
2675
+ this.passkey.stopAutofill();
2635
2676
  this.stopPolling();
2636
2677
  this.captcha.destroy();
2637
2678
  this.signUpCaptcha.destroy();
@@ -2667,6 +2708,12 @@ class SignInComponent {
2667
2708
  return null;
2668
2709
  return lastUsedMethodLabel(this.flow.lastMethod(), (key) => this.t(key));
2669
2710
  }
2711
+ /** The "Sign in with Atlas" connection, on the first step, when the instance has it on. */
2712
+ atlasConnection() {
2713
+ if (this.flow.state().attempt || this.flow.recoveryCodes())
2714
+ return null;
2715
+ return this.flow.settings()?.signInWithAtlas?.connectionId ?? null;
2716
+ }
2670
2717
  signUpHref() {
2671
2718
  if (this.signUpUrl === null)
2672
2719
  return null;
@@ -2686,7 +2733,16 @@ class SignInComponent {
2686
2733
  flow = new AtlasFlowController(this.atlas.createFapiClient(), () => this.atlas.reload(),
2687
2734
  // Resume mid-flow if an OAuth redirect came back owing a second factor.
2688
2735
  this.atlas.pendingAttempt, (key) => translate(this.atlas.localization, key));
2736
+ // Passkey autofill runs while the first step offers passkeys (a computed, so it re-arms only when that changes).
2737
+ passkeyOffered = computed(() => this.flow.passkeyOffered());
2738
+ passkeyAutofill = effect(() => (this.passkeyOffered() ? this.flow.passkey.armAutofill() : this.flow.passkey.stopAutofill()));
2739
+ submitIdentifier(values) {
2740
+ this.flow.passkey.stopAutofill();
2741
+ void this.flow.submit(values);
2742
+ }
2689
2743
  ngOnInit() {
2744
+ if (typeof window !== 'undefined')
2745
+ this.flow.passkeySupported.set(passkeysSupported());
2690
2746
  // If seeded from a pending attempt that is already pollable, start polling.
2691
2747
  this.flow.syncPolling();
2692
2748
  // §5 the instance's captcha settings (switching captcha on in the dashboard
@@ -2705,6 +2761,14 @@ class SignInComponent {
2705
2761
  {{ t('signIn.lastUsed') }}: {{ label }}
2706
2762
  </p>
2707
2763
  }
2764
+ @if (atlasConnection(); as connectionId) {
2765
+ <button type="button" class="atlas-social-button" data-atlas-provider="atlas" (click)="flow.signInWithAtlas(connectionId)">
2766
+ {{ t('signIn.continueWithAtlas') }}
2767
+ </button>
2768
+ @if (flow.signInWithAtlasError(); as message) {
2769
+ <p class="atlas-error" role="alert">{{ message }}</p>
2770
+ }
2771
+ }
2708
2772
  @if (flow.recoveryCodes(); as codes) {
2709
2773
  <atlas-recovery-codes [codes]="codes" [busy]="flow.state().busy" (saved)="flow.saveRecoveryCodes()"></atlas-recovery-codes>
2710
2774
  } @else {
@@ -2719,7 +2783,7 @@ class SignInComponent {
2719
2783
  [preparedFactor]="flow.preparedFactor()"
2720
2784
  [offerEmailSecondFactor]="flow.settings()?.account?.emailSecondFactor === true"
2721
2785
  [emailedSecondFactor]="flow.emailSecondFactor()"
2722
- (submitFlow)="flow.submit($event)"
2786
+ (submitFlow)="submitIdentifier($event)"
2723
2787
  (chooseFactor)="flow.prepare($event)"
2724
2788
  [offerSmsSecondFactor]="flow.settings() !== null && flow.mfaChoices().sms"
2725
2789
  [textedSecondFactor]="flow.smsSecondFactor()"
@@ -2730,6 +2794,17 @@ class SignInComponent {
2730
2794
  (policyDeclined)="flow.declinePolicy($event)"
2731
2795
  ></atlas-attempt-flow>
2732
2796
  }
2797
+ @if (flow.passkeyOffered() && !flow.recoveryCodes()) {
2798
+ <button
2799
+ type="button"
2800
+ class="atlas-social-button atlas-passkey-button"
2801
+ data-atlas-passkey-sign-in=""
2802
+ [disabled]="flow.state().busy"
2803
+ (click)="flow.passkey.signIn()"
2804
+ >
2805
+ {{ t('signIn.passkeyButton') }}
2806
+ </button>
2807
+ }
2733
2808
  @if (flow.state().attempt?.status !== 'complete' && signUpHref(); as href) {
2734
2809
  <p class="atlas-footer" data-atlas-sign-up-prompt="">
2735
2810
  {{ t('signIn.noAccount') }} <a class="atlas-link" [href]="href">{{ t('signIn.signUpLink') }}</a>
@@ -2750,6 +2825,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2750
2825
  {{ t('signIn.lastUsed') }}: {{ label }}
2751
2826
  </p>
2752
2827
  }
2828
+ @if (atlasConnection(); as connectionId) {
2829
+ <button type="button" class="atlas-social-button" data-atlas-provider="atlas" (click)="flow.signInWithAtlas(connectionId)">
2830
+ {{ t('signIn.continueWithAtlas') }}
2831
+ </button>
2832
+ @if (flow.signInWithAtlasError(); as message) {
2833
+ <p class="atlas-error" role="alert">{{ message }}</p>
2834
+ }
2835
+ }
2753
2836
  @if (flow.recoveryCodes(); as codes) {
2754
2837
  <atlas-recovery-codes [codes]="codes" [busy]="flow.state().busy" (saved)="flow.saveRecoveryCodes()"></atlas-recovery-codes>
2755
2838
  } @else {
@@ -2764,7 +2847,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2764
2847
  [preparedFactor]="flow.preparedFactor()"
2765
2848
  [offerEmailSecondFactor]="flow.settings()?.account?.emailSecondFactor === true"
2766
2849
  [emailedSecondFactor]="flow.emailSecondFactor()"
2767
- (submitFlow)="flow.submit($event)"
2850
+ (submitFlow)="submitIdentifier($event)"
2768
2851
  (chooseFactor)="flow.prepare($event)"
2769
2852
  [offerSmsSecondFactor]="flow.settings() !== null && flow.mfaChoices().sms"
2770
2853
  [textedSecondFactor]="flow.smsSecondFactor()"
@@ -2775,6 +2858,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2775
2858
  (policyDeclined)="flow.declinePolicy($event)"
2776
2859
  ></atlas-attempt-flow>
2777
2860
  }
2861
+ @if (flow.passkeyOffered() && !flow.recoveryCodes()) {
2862
+ <button
2863
+ type="button"
2864
+ class="atlas-social-button atlas-passkey-button"
2865
+ data-atlas-passkey-sign-in=""
2866
+ [disabled]="flow.state().busy"
2867
+ (click)="flow.passkey.signIn()"
2868
+ >
2869
+ {{ t('signIn.passkeyButton') }}
2870
+ </button>
2871
+ }
2778
2872
  @if (flow.state().attempt?.status !== 'complete' && signUpHref(); as href) {
2779
2873
  <p class="atlas-footer" data-atlas-sign-up-prompt="">
2780
2874
  {{ t('signIn.noAccount') }} <a class="atlas-link" [href]="href">{{ t('signIn.signUpLink') }}</a>