bx-rest 0.0.12 → 0.0.14

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.
@@ -0,0 +1,2 @@
1
+ import iHttpAnswerBX from '../typification/rest/base/httpAnswerBX';
2
+ export declare function mapResult<T>(v: iHttpAnswerBX<T> | undefined): T | undefined;
package/map/base.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { BaseServices } from '../services/base';
2
+ import * as i0 from "@angular/core";
3
+ export default class BaseMapServices extends BaseServices {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseMapServices, never>;
5
+ static ɵprov: i0.ɵɵInjectableDeclaration<BaseMapServices>;
6
+ }
@@ -0,0 +1,8 @@
1
+ import BaseMapServices from '../base';
2
+ import { iBXRestHttpListsElement, iBXRestListsElement } from '../../typification/rest/lists/element/get';
3
+ import * as i0 from "@angular/core";
4
+ export default class BXRestListsElementMap extends BaseMapServices {
5
+ get(item: iBXRestHttpListsElement): iBXRestListsElement;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<BXRestListsElementMap, never>;
7
+ static ɵprov: i0.ɵɵInjectableDeclaration<BXRestListsElementMap>;
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bx-rest",
3
- "version": "0.0.12",
3
+ "version": "0.0.14",
4
4
  "description": "bitrix rest api",
5
5
  "keywords": [
6
6
  "bitrxi",
package/public-api.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export * from './services/base';
2
- export * from './request/user/user';
1
+ export * from './request/user';
2
+ export * from './request/lists';
3
+ export * from './request/lists/element';
@@ -0,0 +1,29 @@
1
+ import { Observable } from 'rxjs';
2
+ import iHttpAnswerBX from '../../typification/rest/base/httpAnswerBX';
3
+ import HttpBXServices from '../../services/http/HttpBX';
4
+ import BXRestListsElementMap from '../../map/lists/element';
5
+ import { iBXRestHttpListsElement, iBXRestParamListsElementGet } from '../../typification/rest/lists/element/get';
6
+ import * as i0 from "@angular/core";
7
+ declare class BXRestListsElementBase {
8
+ private http;
9
+ private mapResult;
10
+ url: {
11
+ add: string[];
12
+ delete: string[];
13
+ get: string[];
14
+ update: string[];
15
+ getFileUrl: string[];
16
+ };
17
+ constructor(http: HttpBXServices, mapResult: BXRestListsElementMap);
18
+ get(pram: iBXRestParamListsElementGet): Observable<(iHttpAnswerBX<iBXRestHttpListsElement[]> & {
19
+ result: import("../../typification/rest/lists/element/get").iBXRestListsElement[];
20
+ }) | undefined>;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<BXRestListsElementBase, never>;
22
+ static ɵprov: i0.ɵɵInjectableDeclaration<BXRestListsElementBase>;
23
+ }
24
+ declare const BXRestListsElement_base: typeof BXRestListsElementBase;
25
+ export declare class BXRestListsElement extends BXRestListsElement_base {
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<BXRestListsElement, never>;
27
+ static ɵprov: i0.ɵɵInjectableDeclaration<BXRestListsElement>;
28
+ }
29
+ export {};
@@ -0,0 +1,18 @@
1
+ import * as i0 from "@angular/core";
2
+ export default class BXRestLists {
3
+ url: {
4
+ add: string[];
5
+ delete: string[];
6
+ get: string[];
7
+ update: string[];
8
+ getIblockTypeId: string[];
9
+ };
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<BXRestLists, never>;
11
+ static ɵprov: i0.ɵɵInjectableDeclaration<BXRestLists>;
12
+ }
13
+ declare const BXRestListsRes_base: typeof BXRestLists;
14
+ export declare class BXRestListsRes extends BXRestListsRes_base {
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<BXRestListsRes, never>;
16
+ static ɵprov: i0.ɵɵInjectableDeclaration<BXRestListsRes>;
17
+ }
18
+ export {};
@@ -0,0 +1,59 @@
1
+ import { Observable } from 'rxjs';
2
+ import { iBXGetParam } from '../typification/rest/user/get';
3
+ import HttpBXServices from '../services/http/HttpBX';
4
+ import UserFilterSearch from '../typification/rest/user/UserFilterSearch';
5
+ import { Store } from '@ngrx/store';
6
+ import { storeUsers } from '../store/users';
7
+ import { DatePipe } from '@angular/common';
8
+ import { BitrixApiUserMapServices } from '../services/map/rest/user';
9
+ import SnackBarService from '../services/snack-bar/snack-bar.service';
10
+ import iHttpAnswerBX from '../typification/rest/base/httpAnswerBX';
11
+ import { iBXRestUser, iBXRestUserHttp, iBXRestUserHttpField } from '../typification/rest/user/user';
12
+ import * as i0 from "@angular/core";
13
+ export declare class BXRestUser {
14
+ private http;
15
+ private snackBar;
16
+ private store;
17
+ private userMap;
18
+ private datePipe;
19
+ url: {
20
+ admin: string[];
21
+ get: string[];
22
+ current: string[];
23
+ update: string[];
24
+ search: string[];
25
+ access: string[];
26
+ fields: string[];
27
+ userfield: {
28
+ list: string[];
29
+ };
30
+ };
31
+ def: {
32
+ params: {
33
+ ACTIVE: 1;
34
+ start: 0;
35
+ };
36
+ };
37
+ user$: Observable<storeUsers>;
38
+ constructor(http: HttpBXServices, snackBar: SnackBarService, store: Store<{
39
+ users: storeUsers;
40
+ }>, userMap: BitrixApiUserMapServices, datePipe: DatePipe);
41
+ admin(): Observable<iHttpAnswerBX<boolean> | undefined>;
42
+ get(params?: iBXGetParam): Observable<iHttpAnswerBX<iBXRestUserHttp[]> | undefined>;
43
+ current(update?: boolean): Observable<iBXRestUser | undefined>;
44
+ private getSelfHttp;
45
+ access(access: string[], textError?: string): Observable<iHttpAnswerBX<boolean> | undefined>;
46
+ private saveArrUser;
47
+ search(params: string | UserFilterSearch): Observable<iHttpAnswerBX<iBXRestUserHttp[]> | undefined>;
48
+ fields(): Observable<iHttpAnswerBX<iBXRestUserHttpField> | undefined>;
49
+ update(user: iBXRestUser, fieldUpdate: string[]): Observable<iHttpAnswerBX<iBXRestUserHttp[]> | undefined> | Observable<{}>;
50
+ private setDefParam;
51
+ static ɵfac: i0.ɵɵFactoryDeclaration<BXRestUser, never>;
52
+ static ɵprov: i0.ɵɵInjectableDeclaration<BXRestUser>;
53
+ }
54
+ declare const BXRestUserRes_base: typeof BXRestUser;
55
+ export declare class BXRestUserRes extends BXRestUserRes_base {
56
+ static ɵfac: i0.ɵɵFactoryDeclaration<BXRestUserRes, never>;
57
+ static ɵprov: i0.ɵɵInjectableDeclaration<BXRestUserRes>;
58
+ }
59
+ export {};
@@ -2,7 +2,7 @@ import { DateTimeOptions } from 'luxon/src/datetime';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class BaseServices {
4
4
  toStr(val: any): string;
5
- toNumber(val: any): number;
5
+ toNum(val: any): number;
6
6
  toDate(val: number | string | Date, format?: string, opt?: DateTimeOptions): Date;
7
7
  getBXStrTime(date: Date): string;
8
8
  toISOStringWithTimezone(date: Date): string;
@@ -0,0 +1,28 @@
1
+ import { iBXRestYesNo } from '../../base/YesNo';
2
+ export interface iBXRestParamListsElementGet {
3
+ IBLOCK_TYPE_ID: 'lists' | 'bitrix_processes' | 'lists_socnet';
4
+ IBLOCK_ID: number;
5
+ SOCNET_GROUP_ID?: number;
6
+ ELEMENT_ID?: number;
7
+ FILTER?: {
8
+ [key: string]: any;
9
+ };
10
+ }
11
+ export interface iBXRestListsElement extends iBXRestBaseListsElement {
12
+ BP_PUBLISHED: boolean;
13
+ CREATED_BY: number;
14
+ IBLOCK_ID: number;
15
+ ID: number;
16
+ }
17
+ export interface iBXRestHttpListsElement extends iBXRestBaseListsElement {
18
+ BP_PUBLISHED: iBXRestYesNo;
19
+ CREATED_BY: string;
20
+ IBLOCK_ID: string;
21
+ ID: string;
22
+ }
23
+ export interface iBXRestBaseListsElement {
24
+ CODE: string | null;
25
+ IBLOCK_SECTION_ID: string | null;
26
+ NAME: string;
27
+ [key: string]: any;
28
+ }
@@ -1,279 +0,0 @@
1
- import { of, take } from 'rxjs';
2
- import { first, map, mergeMap, tap } from 'rxjs/operators';
3
- import clone from 'just-clone';
4
- import compare from 'just-compare';
5
- import HttpBXServices from '../../services/http/HttpBX';
6
- import { loadAll, saveArr, saveIDLoadedDepartment, saveSelf } from '../../store/users';
7
- // import DateTrace from 'bx-rest/services/api/trace/metods/date'
8
- import SnackBarService from '../../services/snack-bar/snack-bar.service';
9
- import { $get, $list, $search, $update, $user } from '../../consts/part-name-metods';
10
- import { Injectable } from '@angular/core';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@ngrx/store";
13
- import * as i2 from "../../services/map/rest/user";
14
- import * as i3 from "@angular/common";
15
- export class BXRestUser {
16
- constructor(http, snackBar,
17
- // private img: ImgServices,
18
- //private dateTrace: DateTrace,
19
- store, userMap, datePipe) {
20
- this.http = http;
21
- this.snackBar = snackBar;
22
- this.store = store;
23
- this.userMap = userMap;
24
- this.datePipe = datePipe;
25
- this.url = {
26
- admin: [$user, 'admin'],
27
- get: [$user, $get],
28
- self: [$user, 'current'],
29
- update: [$user, $update],
30
- search: [$user, $search],
31
- access: [$user, 'access'],
32
- // AU - все авторизованные пользователи
33
- // D1 - подразделение с id=1
34
- // G1 - группа с id=1
35
- fields: [$user, 'fields'],
36
- userfield: {
37
- list: [$user, 'userfield', $list]
38
- }
39
- };
40
- this.def = {
41
- params: { ACTIVE: 1, start: 0 }
42
- };
43
- this.user$ = this.store.select('users');
44
- }
45
- get(params = {}) {
46
- let copyParams = clone(params);
47
- this.setDefParam(copyParams);
48
- return this.http.post(this.url.get, copyParams, 'Не удалось получить пользователей')
49
- .pipe(tap(v => {
50
- if (v && v.result) {
51
- this.saveArrUser(v.result);
52
- }
53
- }));
54
- }
55
- getOnePage(page = 1) {
56
- return this.get({ start: (page - 1) * 50 }).pipe(map(v => {
57
- let res = this.http.mapResult(v);
58
- return (res) ? res.map(r => this.userMap.HttpToBX(r)) : undefined;
59
- }));
60
- }
61
- getByID(id, reload = true) {
62
- return this.getByIDs([id], reload).pipe(map(v => (v && v.length) ? v[0] : undefined));
63
- }
64
- getByIDs(ids, reload = true) {
65
- ids = Array.from(new Set(ids));
66
- return this.user$.pipe(take(1), mergeMap(v => {
67
- if (!reload) {
68
- let find = v.data.filter(i => ids.includes(i.ID));
69
- if (find && find.length === ids.length) {
70
- return of(find);
71
- }
72
- }
73
- return this.getAll({ ID: ids, ACTIVE: 2 }).pipe(map(v => (v && v.length) ? v : undefined));
74
- }));
75
- }
76
- getSelf(update = false) {
77
- if (update) {
78
- return this.getSelfHttp();
79
- }
80
- else {
81
- return this.user$.pipe(mergeMap(v => {
82
- if (v && v.self) {
83
- return of(v.self);
84
- }
85
- else {
86
- return this.getSelfHttp();
87
- }
88
- }), first());
89
- }
90
- }
91
- getSelfHttp() {
92
- return this.http.get(this.url.self, {}, 'Не удалось получить пользователя')
93
- .pipe(map(v => {
94
- if (v && v.result) {
95
- return this.userMap.HttpToBX(v.result);
96
- }
97
- return undefined;
98
- }), tap(v => {
99
- if (v) {
100
- this.store.dispatch(saveSelf({ self: v }));
101
- }
102
- }));
103
- }
104
- access(access, textError = 'Не удалось получить права') {
105
- return this.http.get(this.url.access, { ACCESS: access }, textError).pipe(map(v => this.http.mapResult(v)));
106
- }
107
- getByDepartment(id) {
108
- const ids = (typeof id === 'number') ? [id] : id;
109
- return this.user$.pipe(first(), mergeMap(v => {
110
- if (v.load.all) {
111
- return of(clone(v.data.filter(i => ids.find(id => i.UF_DEPARTMENT.includes(id)))));
112
- }
113
- if (ids.every(i => v.load.department.includes(i))) {
114
- return of(clone(v.data.filter(i => ids.find(id => i.UF_DEPARTMENT.includes(id)))));
115
- }
116
- return this.getAll({ UF_DEPARTMENT: ids }).pipe(tap(_ => {
117
- this.store.dispatch(saveIDLoadedDepartment({ id: ids }));
118
- }));
119
- }));
120
- }
121
- getAll(params = {}) {
122
- if (!Object.keys(params).length) {
123
- params = clone(this.def.params);
124
- }
125
- const saveAllUser = compare(params, this.def.params);
126
- return this.user$.pipe(take(1), mergeMap(v => {
127
- if (v.load.all) {
128
- if (compare(this.def.params, params)) {
129
- return of(clone(v.data));
130
- }
131
- }
132
- return this.getEndArray(params).pipe(take(1), map(v => {
133
- if (v && v.result) {
134
- let cl = clone(v.result);
135
- return this.saveArrUser(cl);
136
- }
137
- return undefined;
138
- }));
139
- }), tap(v => {
140
- if (v && v.length && saveAllUser) {
141
- this.store.dispatch(loadAll({ load: true }));
142
- }
143
- params.start = this.def.params.start;
144
- }));
145
- }
146
- getAllByPersonalBirthday(day = undefined, month = undefined, checkWeekend = false) {
147
- return this.http.timeNowOnServer().pipe(mergeMap(date => {
148
- if (date) {
149
- let daySent = (day) ? day : date.getDate();
150
- let start = date.getFullYear() + 1;
151
- let monthSent = (month) ? month : date.getMonth() + 1;
152
- let arr = Array.from(Array(200).keys()).map(_ => {
153
- start--;
154
- let res = this.datePipe.transform(new Date(start, monthSent - 1, daySent), 'YYYY-MM-dd');
155
- return (res) ? res : '';
156
- });
157
- // TODO: Упростить
158
- if (checkWeekend && date.getDay() === 1) {
159
- start = date.getFullYear() + 1;
160
- arr.push(...Array.from(Array(200).keys()).map(_ => {
161
- start--;
162
- let res = this.datePipe.transform(new Date(start, monthSent - 1, daySent - 1), 'YYYY-MM-dd');
163
- return (res) ? res : '';
164
- }));
165
- start = date.getFullYear() + 1;
166
- arr.push(...Array.from(Array(200).keys()).map(_ => {
167
- start--;
168
- let res = this.datePipe.transform(new Date(start, monthSent - 1, daySent - 2), 'YYYY-MM-dd');
169
- return (res) ? res : '';
170
- }));
171
- }
172
- return this.getAll({ PERSONAL_BIRTHDAY: arr });
173
- }
174
- this.snackBar.warning('Не удалось получить время сервера');
175
- return of(undefined);
176
- }));
177
- }
178
- saveArrUser(users) {
179
- let result = [];
180
- for (const user of users) {
181
- result.push(this.userMap.HttpToBX(user));
182
- }
183
- this.store.dispatch(saveArr({ arr: result }));
184
- return result;
185
- }
186
- search(params) {
187
- if (typeof params === 'string') {
188
- params = { FIND: params };
189
- }
190
- if (typeof params.ACTIVE !== 'boolean') {
191
- params.ACTIVE = true;
192
- }
193
- return this.http.get(this.url.search, params, 'Сервер не отвечает на запрос поиска')
194
- .pipe(map(v => {
195
- if (v && v.result) {
196
- const mapResult = this.http.mapResult(v);
197
- if (mapResult) {
198
- return this.saveArrUser(mapResult);
199
- }
200
- }
201
- return undefined;
202
- }));
203
- }
204
- fields() {
205
- return this.http.get(this.url.fields).pipe(map(v => this.http.mapResult(v)));
206
- }
207
- update(user, fieldUpdate) {
208
- if (fieldUpdate && fieldUpdate.length) {
209
- let sendData = {
210
- ID: user.ID,
211
- };
212
- const userBX = this.userMap.BXtoHttp(user);
213
- for (const field of fieldUpdate) {
214
- if (userBX[field]) {
215
- sendData[field] = userBX[field];
216
- }
217
- else {
218
- this.snackBar.error('Одно из указанных полей отправлено не верно');
219
- }
220
- }
221
- return this.http.post(this.url.update, sendData, 'Не удалось обновить пользователя с ID' + user.ID);
222
- }
223
- else {
224
- this.snackBar.error('Не указано ни одно поле для редактирования пользователя');
225
- return of({});
226
- }
227
- }
228
- getEndArray(params = {}) {
229
- return this.get(params).pipe(mergeMap(items => {
230
- if (items && items.result && typeof items.result === 'object') {
231
- if (items.next) {
232
- params.start = items.next;
233
- return this.getEndArray(params).pipe(map(vEnd => {
234
- if (vEnd && items.result && vEnd.result) {
235
- return { result: [...items.result, ...vEnd.result] };
236
- }
237
- return (items) ? items : undefined;
238
- }));
239
- }
240
- return of(items);
241
- }
242
- else {
243
- return of(undefined);
244
- }
245
- }));
246
- }
247
- // getUrlCompressedImage(url: string, width: number, height: number) {
248
- // return this.img.getUrlCompressed(url, width, height)
249
- // }
250
- setDefParam(params) {
251
- if (!params.hasOwnProperty('ACTIVE')) {
252
- params.ACTIVE = this.def.params.ACTIVE;
253
- }
254
- if (params.ACTIVE && params.ACTIVE === 2) {
255
- delete params.ACTIVE;
256
- }
257
- if (!params.hasOwnProperty('start')) {
258
- params.start = this.def.params.start;
259
- }
260
- if (params.UF_DEPARTMENT && !params.UF_DEPARTMENT.length) {
261
- delete params.UF_DEPARTMENT;
262
- }
263
- }
264
- getInfoAboutCustomFieldsBX() {
265
- return this.http.get(this.url.userfield.list).pipe(map(v => this.http.mapResult(v)));
266
- }
267
- itIsAdmin() {
268
- return this.http.get(this.url.admin).pipe(map(v => this.http.mapResult(v)));
269
- }
270
- }
271
- BXRestUser.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestUser, deps: [{ token: HttpBXServices }, { token: SnackBarService }, { token: i1.Store }, { token: i2.BitrixApiUserMapServices }, { token: i3.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable });
272
- BXRestUser.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestUser, providedIn: 'root' });
273
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestUser, decorators: [{
274
- type: Injectable,
275
- args: [{
276
- providedIn: 'root'
277
- }]
278
- }], ctorParameters: function () { return [{ type: HttpBXServices }, { type: SnackBarService }, { type: i1.Store }, { type: i2.BitrixApiUserMapServices }, { type: i3.DatePipe }]; } });
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3JlcXVlc3QvdXNlci91c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMxRCxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFBO0FBRWxDLE9BQU8sY0FBYyxNQUFNLDRCQUE0QixDQUFBO0FBSXZELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBYyxNQUFNLG1CQUFtQixDQUFBO0FBSWxHLGlFQUFpRTtBQUNqRSxPQUFPLGVBQWUsTUFBTSw0Q0FBNEMsQ0FBQTtBQUd4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRXBGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7Ozs7O0FBSzFDLE1BQU0sT0FBTyxVQUFVO0lBdUJuQixZQUNZLElBQW9CLEVBQ3BCLFFBQXlCO0lBQ2xDLDRCQUE0QjtJQUMzQiwrQkFBK0I7SUFDdkIsS0FBbUMsRUFDbkMsT0FBaUMsRUFDakMsUUFBa0I7UUFObEIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFHekIsVUFBSyxHQUFMLEtBQUssQ0FBOEI7UUFDbkMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFDakMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTdCOUIsUUFBRyxHQUFHO1lBQ0YsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFF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QU07MkZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7MERBbEJNLGNBQWMsWUFTZCxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRha2UgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZmlyc3QsIG1hcCwgbWVyZ2VNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IGNsb25lIGZyb20gJ2p1c3QtY2xvbmUnXG5pbXBvcnQgY29tcGFyZSBmcm9tICdqdXN0LWNvbXBhcmUnXG5pbXBvcnQgeyBpQlhHZXRQYXJhbSB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L3VzZXIvZ2V0J1xuaW1wb3J0IEh0dHBCWFNlcnZpY2VzIGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAvSHR0cEJYJ1xuaW1wb3J0IFVzZXJGaWx0ZXJTZWFyY2ggZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvdXNlci9Vc2VyRmlsdGVyU2VhcmNoJ1xuLy8gaW1wb3J0IEltZ1NlcnZpY2VzIGZyb20gJ2J4LXJlc3Qvc2VydmljZXMvYXBpL2JpdHJpeC9jdXN0b20vaW1nJ1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSdcbmltcG9ydCB7IGxvYWRBbGwsIHNhdmVBcnIsIHNhdmVJRExvYWRlZERlcGFydG1lbnQsIHNhdmVTZWxmLCBzdG9yZVVzZXJzIH0gZnJvbSAnLi4vLi4vc3RvcmUvdXNlcnMnXG5pbXBvcnQgeyBpQ3VzdG9tVXNlckZpZWxkSW5mbyB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L3VzZXIvQ3VzdG9tVXNlckZpZWxkSW5mbydcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgQml0cml4QXBpVXNlck1hcFNlcnZpY2VzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFwL3Jlc3QvdXNlcidcbi8vIGltcG9ydCBEYXRlVHJhY2UgZnJvbSAnYngtcmVzdC9zZXJ2aWNlcy9hcGkvdHJhY2UvbWV0b2RzL2RhdGUnXG5pbXBvcnQgU25hY2tCYXJTZXJ2aWNlIGZyb20gJy4uLy4uL3NlcnZpY2VzL3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSdcbmltcG9ydCBpSHR0cEFuc3dlckJYIGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2Jhc2UvaHR0cEFuc3dlckJYJ1xuaW1wb3J0IHsgaUJYUmVzdFVzZXIsIGlCWFJlc3RVc2VySHR0cCwgaUJYUmVzdFVzZXJIdHRwRmllbGQgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC91c2VyL3VzZXInXG5pbXBvcnQgeyAkZ2V0LCAkbGlzdCwgJHNlYXJjaCwgJHVwZGF0ZSwgJHVzZXIgfSBmcm9tICcuLi8uLi9jb25zdHMvcGFydC1uYW1lLW1ldG9kcydcbmltcG9ydCB7IFVzZXJGaWx0ZXIgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC91c2VyL3VzZXJGaWx0ZXInXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQlhSZXN0VXNlciB7XG4gICAgdXJsID0ge1xuICAgICAgICBhZG1pbjogWyR1c2VyLCAnYWRtaW4nXSxcbiAgICAgICAgZ2V0OiBbJHVzZXIsICRnZXRdLFxuICAgICAgICBzZWxmOiBbJHVzZXIsICdjdXJyZW50J10sXG4gICAgICAgIHVwZGF0ZTogWyR1c2VyLCAkdXBkYXRlXSxcbiAgICAgICAgc2VhcmNoOiBbJHVzZXIsICRzZWFyY2hdLFxuICAgICAgICBhY2Nlc3M6IFskdXNlciwgJ2FjY2VzcyddLCAvLyBVMSAtINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDRgSBpZCA9MVxuICAgICAgICAvLyBBVSAtINCy0YHQtSDQsNCy0YLQvtGA0LjQt9C+0LLQsNC90L3Ri9C1INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQuFxuICAgICAgICAvLyBEMSAtINC/0L7QtNGA0LDQt9C00LXQu9C10L3QuNC1INGBIGlkPTFcbiAgICAgICAgLy8gRzEgLSDQs9GA0YPQv9C/0LAg0YEgaWQ9MVxuICAgICAgICBmaWVsZHM6IFskdXNlciwgJ2ZpZWxkcyddLFxuICAgICAgICB1c2VyZmllbGQ6IHtcbiAgICAgICAgICAgIGxpc3Q6IFskdXNlciwgJ3VzZXJmaWVsZCcsICRsaXN0XVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVmOiB7IHBhcmFtczogeyBBQ1RJVkU6IDEsIHN0YXJ0OiAwIH0gfSA9IHtcbiAgICAgICAgcGFyYW1zOiB7QUNUSVZFOiAxLCBzdGFydDogMH1cbiAgICB9XG5cbiAgICB1c2VyJDogT2JzZXJ2YWJsZTxzdG9yZVVzZXJzPlxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cEJYU2VydmljZXMsXG4gICAgICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcbiAgICAgICAvLyBwcml2YXRlIGltZzogSW1nU2VydmljZXMsXG4gICAgICAgIC8vcHJpdmF0ZSBkYXRlVHJhY2U6IERhdGVUcmFjZSxcbiAgICAgICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8eyB1c2Vyczogc3RvcmVVc2VycyB9PixcbiAgICAgICAgcHJpdmF0ZSB1c2VyTWFwOiBCaXRyaXhBcGlVc2VyTWFwU2VydmljZXMsXG4gICAgICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlXG4gICAgKSB7XG4gICAgICAgIHRoaXMudXNlciQgPSB0aGlzLnN0b3JlLnNlbGVjdCgndXNlcnMnKVxuICAgIH1cblxuICAgIGdldChwYXJhbXM6IGlCWEdldFBhcmFtID0ge30pOiBPYnNlcnZhYmxlPGlIdHRwQW5zd2VyQlg8aUJYUmVzdFVzZXJIdHRwW10+IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGxldCBjb3B5UGFyYW1zID0gY2xvbmUocGFyYW1zKVxuICAgICAgICB0aGlzLnNldERlZlBhcmFtKGNvcHlQYXJhbXMpXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxpSHR0cEFuc3dlckJYPGlCWFJlc3RVc2VySHR0cFtdPiB8IHVuZGVmaW5lZD5cbiAgICAgICAgKHRoaXMudXJsLmdldCwgY29weVBhcmFtcywgJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0L/QvtC70YPRh9C40YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuScpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAodiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2ICYmIHYucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmVBcnJVc2VyKHYucmVzdWx0KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICB9XG5cbiAgICBnZXRPbmVQYWdlKHBhZ2U6IG51bWJlciA9IDEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KHtzdGFydDogKHBhZ2UgLSAxKSAqIDUwfSkucGlwZShcbiAgICAgICAgICAgIG1hcCh2ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzID0gdGhpcy5odHRwLm1hcFJlc3VsdCh2KVxuICAgICAgICAgICAgICAgIHJldHVybiAocmVzKSA/IHJlcy5tYXAociA9PiB0aGlzLnVzZXJNYXAuSHR0cFRvQlgocikpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgZ2V0QnlJRChpZDogbnVtYmVyLCByZWxvYWQgPSB0cnVlKTogT2JzZXJ2YWJsZTxpQlhSZXN0VXNlciB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCeUlEcyhbaWRdLCByZWxvYWQpLnBpcGUobWFwKHYgPT4gKHYgJiYgdi5sZW5ndGgpID8gdlswXSA6IHVuZGVmaW5lZCkpXG4gICAgfVxuXG4gICAgZ2V0QnlJRHMoaWRzOiBudW1iZXJbXSwgcmVsb2FkID0gdHJ1ZSk6IE9ic2VydmFibGU8aUJYUmVzdFVzZXJbXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZHMgPSBBcnJheS5mcm9tKG5ldyBTZXQoaWRzKSlcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlciQucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBtZXJnZU1hcCh2ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlbG9hZCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmluZCA9IHYuZGF0YS5maWx0ZXIoaSA9PiBpZHMuaW5jbHVkZXMoaS5JRCkpXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaW5kICYmIGZpbmQubGVuZ3RoID09PSBpZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmluZClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBbGwoe0lEOiBpZHMsIEFDVElWRTogMn0pLnBpcGUobWFwKHYgPT4gKHYgJiYgdi5sZW5ndGgpID8gdiA6IHVuZGVmaW5lZCkpXG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgZ2V0U2VsZih1cGRhdGUgPSBmYWxzZSkge1xuICAgICAgICBpZiAodXBkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxmSHR0cCgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51c2VyJC5waXBlKFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKHYgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodiAmJiB2LnNlbGYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih2LnNlbGYpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxmSHR0cCgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaXJzdCgpXG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRTZWxmSHR0cCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8aUh0dHBBbnN3ZXJCWDxpQlhSZXN0VXNlckh0dHA+PlxuICAgICAgICAodGhpcy51cmwuc2VsZiwge30sICfQndC1INGD0LTQsNC70L7RgdGMINC/0L7Qu9GD0YfQuNGC0Ywg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCh2ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYgJiYgdi5yZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnVzZXJNYXAuSHR0cFRvQlgodi5yZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRhcCh2ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goc2F2ZVNlbGYoe3NlbGY6IHZ9KSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgIH1cblxuICAgIGFjY2VzcyhhY2Nlc3M6IHN0cmluZ1tdLCB0ZXh0RXJyb3IgPSAn0J3QtSDRg9C00LDQu9C+0YHRjCDQv9C+0LvRg9GH0LjRgtGMINC/0YDQsNCy0LAnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGlIdHRwQW5zd2VyQlg8Ym9vbGVhbj4gfCB1bmRlZmluZWQ+KHRoaXMudXJsLmFjY2Vzcywge0FDQ0VTUzogYWNjZXNzfSwgdGV4dEVycm9yKS5waXBlKFxuICAgICAgICAgICAgbWFwKHYgPT4gdGhpcy5odHRwLm1hcFJlc3VsdCh2KSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIGdldEJ5RGVwYXJ0bWVudChpZDogbnVtYmVyW10gfCBudW1iZXIpOiBPYnNlcnZhYmxlPGlCWFJlc3RVc2VyIFtdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IGlkczogbnVtYmVyW10gPSAodHlwZW9mIGlkID09PSAnbnVtYmVyJykgPyBbaWRdIDogaWRcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlciQucGlwZShcbiAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICBtZXJnZU1hcChcbiAgICAgICAgICAgICAgICB2ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYubG9hZC5hbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihjbG9uZSh2LmRhdGEuZmlsdGVyKGkgPT4gaWRzLmZpbmQoaWQgPT4gaS5VRl9ERVBBUlRNRU5ULmluY2x1ZGVzKGlkKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaWRzLmV2ZXJ5KGkgPT4gdi5sb2FkLmRlcGFydG1lbnQuaW5jbHVkZXMoaSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoY2xvbmUodi5kYXRhLmZpbHRlcihpID0+IGlkcy5maW5kKGlkID0+IGkuVUZfREVQQVJUTUVOVC5pbmNsdWRlcyhpZCkpKSkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWxsKHtVRl9ERVBBUlRNRU5UOiBpZHN9KS5waXBlKHRhcChfID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goc2F2ZUlETG9hZGVkRGVwYXJ0bWVudCh7aWQ6IGlkc30pKVxuICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgZ2V0QWxsKHBhcmFtczogaUJYR2V0UGFyYW0gPSB7fSk6IE9ic2VydmFibGU8aUJYUmVzdFVzZXIgW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhwYXJhbXMpLmxlbmd0aCkge1xuICAgICAgICAgICAgcGFyYW1zID0gY2xvbmUodGhpcy5kZWYucGFyYW1zKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2F2ZUFsbFVzZXIgPSBjb21wYXJlKHBhcmFtcywgdGhpcy5kZWYucGFyYW1zKVxuICAgICAgICByZXR1cm4gdGhpcy51c2VyJC5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIG1lcmdlTWFwKHYgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2LmxvYWQuYWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wYXJlKHRoaXMuZGVmLnBhcmFtcywgcGFyYW1zKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGNsb25lKHYuZGF0YSkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRFbmRBcnJheShwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgICAgIG1hcCh2ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ICYmIHYucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNsID0gY2xvbmUodi5yZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZUFyclVzZXIoY2wpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKHYgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2ICYmIHYubGVuZ3RoICYmIHNhdmVBbGxVc2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobG9hZEFsbCh7bG9hZDogdHJ1ZX0pKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYXJhbXMuc3RhcnQgPSB0aGlzLmRlZi5wYXJhbXMuc3RhcnRcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBnZXRBbGxCeVBlcnNvbmFsQmlydGhkYXkoZGF5OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsIG1vbnRoOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsIGNoZWNrV2Vla2VuZCA9IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAudGltZU5vd09uU2VydmVyKCkucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKGRhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXlTZW50ID0gKGRheSkgPyBkYXkgOiBkYXRlLmdldERhdGUoKVxuICAgICAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAxXG4gICAgICAgICAgICAgICAgICAgIGxldCBtb250aFNlbnQgPSAobW9udGgpID8gbW9udGggOiBkYXRlLmdldE1vbnRoKCkgKyAxXG4gICAgICAgICAgICAgICAgICAgIGxldCBhcnI6IHN0cmluZ1tdID0gQXJyYXkuZnJvbShBcnJheSgyMDApLmtleXMoKSkubWFwKF8gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQtLVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcyA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5ldyBEYXRlKHN0YXJ0LCBtb250aFNlbnQgLSAxLCBkYXlTZW50KSwgJ1lZWVktTU0tZGQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXMpID8gcmVzIDogJydcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzog0KPQv9GA0L7RgdGC0LjRgtGMXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGVja1dlZWtlbmQgJiYgZGF0ZS5nZXREYXkoKSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAxXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnIucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5BcnJheS5mcm9tKEFycmF5KDIwMCkua2V5cygpKS5tYXAoXyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcyA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5ldyBEYXRlKHN0YXJ0LCBtb250aFNlbnQgLSAxLCBkYXlTZW50IC0gMSksICdZWVlZLU1NLWRkJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXMpID8gcmVzIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAxXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnIucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5BcnJheS5mcm9tKEFycmF5KDIwMCkua2V5cygpKS5tYXAoXyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcyA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5ldyBEYXRlKHN0YXJ0LCBtb250aFNlbnQgLSAxLCBkYXlTZW50IC0gMiksICdZWVlZLU1NLWRkJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXMpID8gcmVzIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEFsbCh7UEVSU09OQUxfQklSVEhEQVk6IGFycn0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIud2FybmluZygn0J3QtSDRg9C00LDQu9C+0YHRjCDQv9C+0LvRg9GH0LjRgtGMINCy0YDQtdC80Y8g0YHQtdGA0LLQtdGA0LAnKVxuICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgc2F2ZUFyclVzZXIodXNlcnM6IGlCWFJlc3RVc2VySHR0cFtdKSB7XG4gICAgICAgIGxldCByZXN1bHQ6IGlCWFJlc3RVc2VyIFtdID0gW11cbiAgICAgICAgZm9yIChjb25zdCB1c2VyIG9mIHVzZXJzKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLnVzZXJNYXAuSHR0cFRvQlgodXNlcikpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChzYXZlQXJyKHthcnI6IHJlc3VsdH0pKVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICBzZWFyY2gocGFyYW1zOiBzdHJpbmcgfCBVc2VyRmlsdGVyU2VhcmNoKTogT2JzZXJ2YWJsZTxpQlhSZXN0VXNlciBbXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAodHlwZW9mIHBhcmFtcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHtGSU5EOiBwYXJhbXN9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBwYXJhbXMuQUNUSVZFICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHBhcmFtcy5BQ1RJVkUgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8aUh0dHBBbnN3ZXJCWDxpQlhSZXN0VXNlckh0dHBbXT4+KHRoaXMudXJsLnNlYXJjaCwgcGFyYW1zLCAn0KHQtdGA0LLQtdGAINC90LUg0L7RgtCy0LXRh9Cw0LXRgiDQvdCwINC30LDQv9GA0L7RgSDQv9C+0LjRgdC60LAnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHYgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodiAmJiB2LnJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwUmVzdWx0ID0gdGhpcy5odHRwLm1hcFJlc3VsdCh2KVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcFJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNhdmVBcnJVc2VyKG1hcFJlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICB9XG5cbiAgICBmaWVsZHMoKTogT2JzZXJ2YWJsZTxpQlhSZXN0VXNlckh0dHBGaWVsZCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxpSHR0cEFuc3dlckJYPGlCWFJlc3RVc2VySHR0cEZpZWxkPj4odGhpcy51cmwuZmllbGRzKS5waXBlKFxuICAgICAgICAgICAgbWFwKHYgPT4gdGhpcy5odHRwLm1hcFJlc3VsdCh2KSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHVwZGF0ZSh1c2VyOiBpQlhSZXN0VXNlciwgZmllbGRVcGRhdGU6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxpSHR0cEFuc3dlckJYPGlCWFJlc3RVc2VySHR0cFtdPiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoZmllbGRVcGRhdGUgJiYgZmllbGRVcGRhdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgc2VuZERhdGE6IGFueSA9IHtcbiAgICAgICAgICAgICAgICBJRDogdXNlci5JRCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHVzZXJCWCA9IHRoaXMudXNlck1hcC5CWHRvSHR0cCh1c2VyKVxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZFVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIGlmICh1c2VyQlhbZmllbGRdKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbmREYXRhW2ZpZWxkXSA9IHVzZXJCWFtmaWVsZF1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLmVycm9yKCfQntC00L3QviDQuNC3INGD0LrQsNC30LDQvdC90YvRhSDQv9C+0LvQtdC5INC+0YLQv9GA0LDQstC70LXQvdC+INC90LUg0LLQtdGA0L3QvicpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMudXJsLnVwZGF0ZSwgc2VuZERhdGEsICfQndC1INGD0LTQsNC70L7RgdGMINC+0LHQvdC+0LLQuNGC0Ywg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINGBIElEJyArIHVzZXIuSUQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLmVycm9yKCfQndC1INGD0LrQsNC30LDQvdC+INC90Lgg0L7QtNC90L4g0L/QvtC70LUg0LTQu9GPINGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPJylcbiAgICAgICAgICAgIHJldHVybiBvZih7fSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEVuZEFycmF5KHBhcmFtczogVXNlckZpbHRlciA9IHt9KTogT2JzZXJ2YWJsZTxpSHR0cEFuc3dlckJYPGlCWFJlc3RVc2VySHR0cFtdPiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQocGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtcyAmJiBpdGVtcy5yZXN1bHQgJiYgdHlwZW9mIGl0ZW1zLnJlc3VsdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLm5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5zdGFydCA9IGl0ZW1zLm5leHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEVuZEFycmF5KHBhcmFtcykucGlwZShtYXAodkVuZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZFbmQgJiYgaXRlbXMucmVzdWx0ICYmIHZFbmQucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7cmVzdWx0OiBbLi4uaXRlbXMucmVzdWx0LCAuLi52RW5kLnJlc3VsdF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoaXRlbXMpID8gaXRlbXMgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihpdGVtcylcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgLy8gZ2V0VXJsQ29tcHJlc3NlZEltYWdlKHVybDogc3RyaW5nLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikge1xuICAgIC8vICAgICByZXR1cm4gdGhpcy5pbWcuZ2V0VXJsQ29tcHJlc3NlZCh1cmwsIHdpZHRoLCBoZWlnaHQpXG4gICAgLy8gfVxuXG4gICAgc2V0RGVmUGFyYW0ocGFyYW1zOiBpQlhHZXRQYXJhbSkge1xuICAgICAgICBpZiAoIXBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnQUNUSVZFJykpIHtcbiAgICAgICAgICAgIHBhcmFtcy5BQ1RJVkUgPSB0aGlzLmRlZi5wYXJhbXMuQUNUSVZFXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtcy5BQ1RJVkUgJiYgcGFyYW1zLkFDVElWRSA9PT0gMikge1xuICAgICAgICAgICAgZGVsZXRlIHBhcmFtcy5BQ1RJVkVcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnc3RhcnQnKSkge1xuICAgICAgICAgICAgcGFyYW1zLnN0YXJ0ID0gdGhpcy5kZWYucGFyYW1zLnN0YXJ0XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyYW1zLlVGX0RFUEFSVE1FTlQgJiYgIXBhcmFtcy5VRl9ERVBBUlRNRU5ULmxlbmd0aCkge1xuICAgICAgICAgICAgZGVsZXRlIHBhcmFtcy5VRl9ERVBBUlRNRU5UXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJbmZvQWJvdXRDdXN0b21GaWVsZHNCWCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8aUh0dHBBbnN3ZXJCWDxpQ3VzdG9tVXNlckZpZWxkSW5mb1tdPj4odGhpcy51cmwudXNlcmZpZWxkLmxpc3QpLnBpcGUoXG4gICAgICAgICAgICBtYXAodiA9PiB0aGlzLmh0dHAubWFwUmVzdWx0KHYpKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgaXRJc0FkbWluKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxpSHR0cEFuc3dlckJYPGJvb2xlYW4+Pih0aGlzLnVybC5hZG1pbikucGlwZShcbiAgICAgICAgICAgIG1hcCh2ID0+IHRoaXMuaHR0cC5tYXBSZXN1bHQodikpXG4gICAgICAgIClcbiAgICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VzdG9tVXNlckZpZWxkSW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3R5cGlmaWNhdGlvbi9yZXN0L3VzZXIvQ3VzdG9tVXNlckZpZWxkSW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaUJYUmVzdFVzZXJLZXkgfSBmcm9tICcuLi8uLi8uLi90eXBpZmljYXRpb24vcmVzdC91c2VyL3VzZXInXHJcbmltcG9ydCB7IGlCWFJlc3RZZXNObyB9IGZyb20gJy4uLy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2Jhc2UvWWVzTm8nXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIGlDdXN0b21Vc2VyRmllbGRJbmZvIHtcclxuICBJRDogc3RyaW5nLFxyXG4gIEVOVElUWV9JRDogXCJVU0VSXCIsXHJcbiAgRklFTERfTkFNRTogaUJYUmVzdFVzZXJLZXksXHJcbiAgVVNFUl9UWVBFX0lEOiBpQ3VzdG9tVXNlckZpZWxkSW5mb1R5cGUsXHJcbiAgWE1MX0lEOiBzdHJpbmcgfCBudWxsLFxyXG4gIFNPUlQ6IHN0cmluZyxcclxuICBNVUxUSVBMRTogaUJYUmVzdFllc05vLFxyXG4gIE1BTkRBVE9SWTogaUJYUmVzdFllc05vLFxyXG4gIFNIT1dfRklMVEVSOiAnRScgfCAnTicsIC8vID8/PyDRjdGC0L4g0YfRgtC+INCy0L7QvtCx0YnQtT9cclxuICBTSE9XX0lOX0xJU1Q6IGlCWFJlc3RZZXNObyxcclxuICBFRElUX0lOX0xJU1Q6IGlCWFJlc3RZZXNObyxcclxuICBJU19TRUFSQ0hBQkxFOiBpQlhSZXN0WWVzTm8sXHJcbiAgU0VUVElOR1M6XHJcbiAgICBpQ3VzdG9tVXNlckZpZWxkSW5mb1NFVFRJTkdTVHlwZVN0cmluZ1xyXG4gICAgfCBpQ3VzdG9tVXNlckZpZWxkSW5mb1NFVFRJTkdTVHlwZUZpbGVcclxuICAgIHwgaUN1c3RvbVVzZXJGaWVsZEluZm9TRVRUSU5HU1R5cGVFbnVtZXJhdGlvblxyXG4gICAgfCBpQ3VzdG9tVXNlckZpZWxkSW5mb1NFVFRJTkdTVHlwZURhdGV0aW1lXHJcbiAgTElTVD86IGlDdXN0b21Vc2VyRmllbGRJbmZvU0VUVElOR1NUeXBlRW51bWVyYXRpb25MSVNUW10sXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgaUN1c3RvbVVzZXJGaWVsZEluZm9TRVRUSU5HU1R5cGVTdHJpbmcge1xyXG4gIFNJWkU6IG51bWJlcixcclxuICBST1dTOiBudW1iZXIsXHJcbiAgUkVHRVhQOiBzdHJpbmcgfCBudWxsLFxyXG4gIE1JTl9MRU5HVEg6IG51bWJlcixcclxuICBNQVhfTEVOR1RIOiBudW1iZXIsXHJcbiAgREVGQVVMVF9WQUxVRTogc3RyaW5nIHwgbnVsbFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIGlDdXN0b21Vc2VyRmllbGRJbmZvU0VUVElOR1NUeXBlRmlsZSB7XHJcbiAgU0laRTogbnVtYmVyLFxyXG4gIExJU1RfV0lEVEg6IG51bWJlcixcclxuICBMSVNUX0hFSUdIVDogbnVtYmVyLFxyXG4gIE1BWF9TSE9XX1NJWkU6IG51bWJlcixcclxuICBNQVhfQUxMT1dFRF9TSVpFOiBudW1iZXIsXHJcbiAgRVhURU5TSU9OUzogYW55W10sIC8vIFRPRE86INCf0L7Qt9C20LUg0L7Qv9C40YHQsNGC0YxcclxuICBUQVJHRVRfQkxBTks6IGlCWFJlc3RZZXNOb1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIGlDdXN0b21Vc2VyRmllbGRJbmZvU0VUVElOR1NUeXBlRW51bWVyYXRpb24ge1xyXG4gIERJU1BMQVk6ICdVSScgfCAnRElBTE9HJyxcclxuICBMSVNUX0hFSUdIVDogbnVtYmVyLFxyXG4gIENBUFRJT05fTk9fVkFMVUU6IHN0cmluZyxcclxuICBTSE9XX05PX1ZBTFVFOiBpQlhSZXN0WWVzTm9cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBpQ3VzdG9tVXNlckZpZWxkSW5mb1NFVFRJTkdTVHlwZUVudW1lcmF0aW9uTElTVHtcclxuICBJRDogc3RyaW5nLFxyXG4gIFNPUlQ6IHN0cmluZyxcclxuICBWQUxVRTogc3RyaW5nLFxyXG4gIERFRjogaUJYUmVzdFllc05vXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgaUN1c3RvbVVzZXJGaWVsZEluZm9TRVRUSU5HU1R5cGVEYXRldGltZSB7XHJcbiAgREVGQVVMVF9WQUxVRToge1xyXG4gICAgVFlQRTogJ05PTkUnLFxyXG4gICAgVkFMVUU6IHN0cmluZ1xyXG4gIH0sXHJcbiAgXCJVU0VfU0VDT05EXCI6IGlCWFJlc3RZZXNObyxcclxuICBcIlVTRV9USU1FWk9ORVwiOiBpQlhSZXN0WWVzTm9cclxufVxyXG5cclxuXHJcbmV4cG9ydCB0eXBlIGlDdXN0b21Vc2VyRmllbGRJbmZvVHlwZSA9ICdzdHJpbmcnIHwgJ2ZpbGUnIHwgJ2VudW1lcmF0aW9uJyB8ICdkYXRldGltZSdcclxuXHJcblxyXG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlckZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3R5cGlmaWNhdGlvbi9yZXN0L3VzZXIvdXNlckZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaUJYUmVzdFllc05vIH0gZnJvbSAnLi4vYmFzZS9ZZXNObydcbmltcG9ydCB7IGlCWFJlc3RCYXNlUGFyYW0gfSBmcm9tICcuLi9zdXBwb3J0L3BhcmFtJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJGaWx0ZXIgZXh0ZW5kcyBpQlhSZXN0QmFzZVBhcmFte1xuICAgIElEPzogbnVtYmVyW10gfCBudW1iZXIsIC8vINC/0L4gSURcbiAgICBQRVJTT05BTF9CSVJUSERBWT86IHN0cmluZyB8IHN0cmluZ1tdXG4gICAgb3JkZXI/OiAnQVNDJyB8ICdERVNDJywgLy8g0YHQvtGA0YLQuNGA0L7QstC60LBcbiAgICBVRl9ERVBBUlRNRU5UPzogbnVtYmVyW10sICAvLyDQv9GA0LjQvdCw0LTQu9C10LbQvdC+0YHRgtGMINC6INGB0YLRgNGD0LrRgtGD0YDQtSDQutC+0LzQv9Cw0L3QuNC4XG4gICAgVUZfUEhPTkVfSU5ORVI/OiBzdHJpbmcsIC8vINCy0L3Rg9GC0YDQtdC90L3QuNC5INGC0LXQu9C10YTQvtC90L3Ri9C5INC90L7QvNC10YBcbiAgICBJU19PTkxJTkU/OiBpQlhSZXN0WWVzTm8sICAvLyDQv9C+0LfQstC+0LvRj9C10YIg0L/QvtC60LDQt9Cw0YLRjCDRgtC+0LvRjNC60L4g0LDQstGC0L7RgNC40LfQvtCy0LDQvdC90YvRhSDQuNC70Lgg0L3QtdGCINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5XG4gICAgTkFNRV9TRUFSQ0g/OiBzdHJpbmcsIC8vINCx0YvRgdGC0YDRi9C5INC/0L7QuNGB0Log0L/QviDQv9C10YDRgdC+0L3QsNC70YzQvdGL0Lwg0LTQsNC90L3Ri9C8XG4gICAgVVNFUl9UWVBFPzogJ2VtcGxveWVlJyB8ICdleHRyYW5ldCcgfCAnZW1haWwnLCAvLyDQotC40L8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLiDQnNC+0LbQtdGCINC/0YDQuNC90LjQvNCw0YLRjCDRgdC70LXQtNGD0Y7RidC40LUg0LfQvdCw0YfQtdC90LjRjzpcbiAgICAvLyBlbXBsb3llZSAtINGB0L7RgtGA0YPQtNC90LjQuixcbiAgICAvLyBleHRyYW5ldCAtINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDRjdC60YHRgtGA0LDQvdC10YLQsCxcbiAgICAvLyBlbWFpbCAtINC/0L7Rh9GC0L7QstGL0Lkg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMXG4gICAgQUNUSVZFPzogMiB8IDEgfCAwIC8vINC/0YDQuCDQt9C90LDRh9C10L3QuNC4IDEg0LjRgdC60LvRjtGH0LDQtdGCINC40Lcg0LfQsNC/0YDQvtGB0LAg0YPQstC+0LvQtdC90L3Ri9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LiAyIC0g0LXRgdC70Lgg0L3Rg9C20L3RiyDQuCDRgtC1INC4INGC0LVcbn1cbiJdfQ==
@@ -1,63 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { iBXGetParam } from '../../typification/rest/user/get';
3
- import HttpBXServices from '../../services/http/HttpBX';
4
- import UserFilterSearch from '../../typification/rest/user/UserFilterSearch';
5
- import { Store } from '@ngrx/store';
6
- import { storeUsers } from '../../store/users';
7
- import { iCustomUserFieldInfo } from '../../typification/rest/user/CustomUserFieldInfo';
8
- import { DatePipe } from '@angular/common';
9
- import { BitrixApiUserMapServices } from '../../services/map/rest/user';
10
- import SnackBarService from '../../services/snack-bar/snack-bar.service';
11
- import iHttpAnswerBX from '../../typification/rest/base/httpAnswerBX';
12
- import { iBXRestUser, iBXRestUserHttp, iBXRestUserHttpField } from '../../typification/rest/user/user';
13
- import { UserFilter } from '../../typification/rest/user/userFilter';
14
- import * as i0 from "@angular/core";
15
- export declare class BXRestUser {
16
- private http;
17
- private snackBar;
18
- private store;
19
- private userMap;
20
- private datePipe;
21
- url: {
22
- admin: string[];
23
- get: string[];
24
- self: string[];
25
- update: string[];
26
- search: string[];
27
- access: string[];
28
- fields: string[];
29
- userfield: {
30
- list: string[];
31
- };
32
- };
33
- def: {
34
- params: {
35
- ACTIVE: 1;
36
- start: 0;
37
- };
38
- };
39
- user$: Observable<storeUsers>;
40
- constructor(http: HttpBXServices, snackBar: SnackBarService, store: Store<{
41
- users: storeUsers;
42
- }>, userMap: BitrixApiUserMapServices, datePipe: DatePipe);
43
- get(params?: iBXGetParam): Observable<iHttpAnswerBX<iBXRestUserHttp[]> | undefined>;
44
- getOnePage(page?: number): Observable<iBXRestUser[] | undefined>;
45
- getByID(id: number, reload?: boolean): Observable<iBXRestUser | undefined>;
46
- getByIDs(ids: number[], reload?: boolean): Observable<iBXRestUser[] | undefined>;
47
- getSelf(update?: boolean): Observable<iBXRestUser | undefined>;
48
- getSelfHttp(): Observable<iBXRestUser | undefined>;
49
- access(access: string[], textError?: string): Observable<boolean | undefined>;
50
- getByDepartment(id: number[] | number): Observable<iBXRestUser[] | undefined>;
51
- getAll(params?: iBXGetParam): Observable<iBXRestUser[] | undefined>;
52
- getAllByPersonalBirthday(day?: number | undefined, month?: number | undefined, checkWeekend?: boolean): Observable<iBXRestUser[] | undefined>;
53
- saveArrUser(users: iBXRestUserHttp[]): iBXRestUser[];
54
- search(params: string | UserFilterSearch): Observable<iBXRestUser[] | undefined>;
55
- fields(): Observable<iBXRestUserHttpField | undefined>;
56
- update(user: iBXRestUser, fieldUpdate: string[]): Observable<iHttpAnswerBX<iBXRestUserHttp[]> | undefined>;
57
- getEndArray(params?: UserFilter): Observable<iHttpAnswerBX<iBXRestUserHttp[]> | undefined>;
58
- setDefParam(params: iBXGetParam): void;
59
- getInfoAboutCustomFieldsBX(): Observable<iCustomUserFieldInfo[] | undefined>;
60
- itIsAdmin(): Observable<boolean | undefined>;
61
- static ɵfac: i0.ɵɵFactoryDeclaration<BXRestUser, never>;
62
- static ɵprov: i0.ɵɵInjectableDeclaration<BXRestUser>;
63
- }