@libs-ui/services-http-request 0.2.305 → 0.2.306-10

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.
@@ -34,7 +34,7 @@ export const returnListObject = (data, functionGetData) => {
34
34
  return {
35
35
  code: 200,
36
36
  data: data || [],
37
- paging: {}
37
+ paging: {},
38
38
  };
39
39
  },
40
40
  listObservable: () => {
@@ -44,7 +44,7 @@ export const returnListObject = (data, functionGetData) => {
44
44
  return of({
45
45
  code: 200,
46
46
  data: data || [],
47
- paging: {}
47
+ paging: {},
48
48
  }).pipe(delay(250));
49
49
  },
50
50
  listPaging: async (params) => {
@@ -112,7 +112,7 @@ export const returnDetailObject = (httpParams, data, functionGetData, ignoreSpli
112
112
  }
113
113
  data = dataResult.data;
114
114
  return await filterData(fieldKey, data, keys || keysPrams, dataResponseOject, ignoreSplit, splitOperator);
115
- }
115
+ },
116
116
  };
117
117
  };
118
118
  const filterData = (fieldKey, data, keys, dataResponseOject, ignoreSplit, splitOperator) => {
@@ -120,7 +120,7 @@ const filterData = (fieldKey, data, keys, dataResponseOject, ignoreSplit, splitO
120
120
  return {
121
121
  code: 200,
122
122
  data: undefined,
123
- paging: {}
123
+ paging: {},
124
124
  };
125
125
  }
126
126
  data = data || [];
@@ -143,16 +143,16 @@ const filterData = (fieldKey, data, keys, dataResponseOject, ignoreSplit, splitO
143
143
  return {
144
144
  code: 200,
145
145
  data: result.length ? (dataResponseOject ? result[0] : result) : undefined,
146
- paging: {}
146
+ paging: {},
147
147
  };
148
148
  };
149
149
  const per_page = 20;
150
- const total_items = (per_page * 150) + 15;
150
+ const total_items = per_page * 150 + 15;
151
151
  export const getConfigListDataDemo = (httpParamsDetail = new UtilsHttpParamsRequest(), objectData, functionBuildObject) => {
152
152
  if (!objectData) {
153
153
  objectData = {
154
154
  id: '',
155
- name: 'item positon index '
155
+ name: 'item positon index ',
156
156
  };
157
157
  }
158
158
  const data = [...Array(total_items).keys()].map((_, index) => {
@@ -160,7 +160,7 @@ export const getConfigListDataDemo = (httpParamsDetail = new UtilsHttpParamsRequ
160
160
  return functionBuildObject(`${+index + 1}`);
161
161
  }
162
162
  const obj = {};
163
- Object.keys(objectData).forEach(key => {
163
+ Object.keys(objectData).forEach((key) => {
164
164
  set(obj, key, `${objectData[key]}${+index + 1}`);
165
165
  });
166
166
  return obj;
@@ -169,7 +169,7 @@ export const getConfigListDataDemo = (httpParamsDetail = new UtilsHttpParamsRequ
169
169
  const detailService = returnDetailObject(httpParamsDetail, data, undefined, false, ';');
170
170
  return {
171
171
  list: listService.listPaging,
172
- detailByData: detailService.detailByData
172
+ detailByData: detailService.detailByData,
173
173
  };
174
174
  };
175
175
  /**
@@ -188,8 +188,8 @@ export const pagingToList = (data, page, per_page) => {
188
188
  page: page,
189
189
  per_page: per_page,
190
190
  total_items: 0,
191
- total_pages: 0
192
- }
191
+ total_pages: 0,
192
+ },
193
193
  };
194
194
  }
195
195
  const start = (page - 1) * per_page;
@@ -203,8 +203,8 @@ export const pagingToList = (data, page, per_page) => {
203
203
  page: page > total_pages ? total_pages : page,
204
204
  per_page: per_page,
205
205
  total_items: data.length,
206
- total_pages: total_pages
207
- }
206
+ total_pages: total_pages,
207
+ },
208
208
  };
209
209
  };
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLW1vY2t1cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvaHR0cC1yZXF1ZXN0L3NyYy9hcGktbW9ja3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBQyxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQWMsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRW5FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUVILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBaUIsRUFBRSxlQUFrQyxFQUFFLEVBQUU7SUFDeEYsT0FBTztRQUNMLElBQUksRUFBRSxLQUFLLElBQXdELEVBQUU7WUFDbkUsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxHQUFHLGVBQWUsRUFBRSxDQUFDO1lBQzNCLENBQUM7WUFDRCxNQUFNLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNoQyxPQUFPO2dCQUNMLElBQUksRUFBRSxHQUFHO2dCQUNULElBQUksRUFBRyxJQUFZLElBQUksRUFBRTtnQkFDekIsTUFBTSxFQUFFLEVBQUU7YUFDWCxDQUFDO1FBQ0osQ0FBQztRQUNELGNBQWMsRUFBRSxHQUEwRCxFQUFFO1lBQzFFLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksR0FBRyxlQUFlLEVBQUUsQ0FBQztZQUMzQixDQUFDO1lBRUQsT0FBTyxFQUFFLENBQUM7Z0JBQ1IsSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsSUFBSSxFQUFHLElBQVksSUFBSSxFQUFFO2dCQUN6QixNQUFNLEVBQUUsRUFBRTthQUNYLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcs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MUMsT0FBTztRQUNMLElBQUksRUFBRSxHQUFHO1FBQ1QsSUFBSSxFQUFFLFVBQVU7UUFDaEIsTUFBTSxFQUFFO1lBQ04sSUFBSSxFQUFFLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUM3QyxRQUFRLEVBQUUsUUFBUTtZQUNsQixXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDeEIsV0FBVyxFQUFFLFdBQVc7U0FDekI7S0FDRixDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSUh0dHBSZXNwb25zZSB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgVXRpbHNIdHRwUGFyYW1zUmVxdWVzdCwgZ2V0LCBpc05pbCwgc2V0LGlzRXF1YWwgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWxheSwgbGFzdFZhbHVlRnJvbSwgb2YsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogVHLhuqMgduG7gSBjw6FjIHBoxrDGoW5nIHRo4bupYyDEkeG7gyB44butIGzDvSBkYW5oIHPDoWNoIGThu68gbGnhu4d1IG1vY2tcbiAqIEBwYXJhbSBkYXRhIC0gTeG6o25nIGThu68gbGnhu4d1IG3hurdjIMSR4buLbmggxJHhu4MgbW9ja1xuICogQHBhcmFtIGZ1bmN0aW9uR2V0RGF0YSAtIEjDoG0gdMO5eSBjaOG7jW4gxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UgxJHhu5luZyB0aGF5IHbDrCBz4butIGThu6VuZyBkYXRhIG3hurdjIMSR4buLbmhcbiAqIEByZXR1cm5zIMSQ4buRaSB0xrDhu6NuZyBjaOG7qWEgY8OhYyBwaMawxqFuZyB0aOG7qWM6XG4gKiAgIC0gbGlzdDogVHLhuqMgduG7gSBQcm9taXNlIHbhu5tpIHRvw6BuIGLhu5kgZOG7ryBsaeG7h3UgKGPDsyBkZWxheSAyNTBtcylcbiAqICAgLSBsaXN0T2JzZXJ2YWJsZTogVHLhuqMgduG7gSBPYnNlcnZhYmxlIHbhu5tpIHRvw6BuIGLhu5kgZOG7ryBsaeG7h3UgKGPDsyBkZWxheSAyNTBtcylcbiAqICAgLSBsaXN0UGFnaW5nOiBUcuG6oyB24buBIFByb21pc2UgduG7m2kgZOG7ryBsaeG7h3UgxJHDoyBwaMOibiB0cmFuZyBk4buxYSB0csOqbiBwYXJhbXMgKGPDsyBkZWxheSAyNTBtcylcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1vY2tEYXRhID0gW3sgaWQ6IDEsIG5hbWU6ICdJdGVtIDEnIH0sIHsgaWQ6IDIsIG5hbWU6ICdJdGVtIDInIH1dO1xuICogY29uc3QgbGlzdFNlcnZpY2UgPSByZXR1cm5MaXN0T2JqZWN0KG1vY2tEYXRhKTtcbiAqIFxuICogLy8gTOG6pXkgdG/DoG4gYuG7mSBk4buvIGxp4buHdVxuICogY29uc3QgYWxsRGF0YSA9IGF3YWl0IGxpc3RTZXJ2aWNlLmxpc3QoKTtcbiAqIFxuICogLy8gTOG6pXkgZOG7ryBsaeG7h3UgcGjDom4gdHJhbmdcbiAqIGNvbnN0IHBhcmFtcyA9IG5ldyBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0KCk7XG4gKiBwYXJhbXMuc2V0KCdwYWdlJywgJzEnKTtcbiAqIHBhcmFtcy5zZXQoJ3Blcl9wYWdlJywgJzEwJyk7XG4gKiBjb25zdCBwYWdlZERhdGEgPSBhd2FpdCBsaXN0U2VydmljZS5saXN0UGFnaW5nKHBhcmFtcyk7XG4gKiBgYGBcbiAqL1xuXG5leHBvcnQgY29uc3QgcmV0dXJuTGlzdE9iamVjdCA9IChkYXRhPzogQXJyYXk8YW55PiwgZnVuY3Rpb25HZXREYXRhPzogKCkgPT4gQXJyYXk8YW55PikgPT4ge1xuICByZXR1cm4ge1xuICAgIGxpc3Q6IGFzeW5jIDxUeXBlUmVzcG9uc2U+KCk6IFByb21pc2U8SUh0dHBSZXNwb25zZTxUeXBlUmVzcG9uc2U+PiA9PiB7XG4gICAgICBpZiAoZnVuY3Rpb25HZXREYXRhKSB7XG4gICAgICAgIGRhdGEgPSBmdW5jdGlvbkdldERhdGEoKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGxhc3RWYWx1ZUZyb20odGltZXIoMjUwKSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2RlOiAyMDAsXG4gICAgICAgIGRhdGE6IChkYXRhIGFzIGFueSkgfHwgW10sXG4gICAgICAgIHBhZ2luZzoge31cbiAgICAgIH07XG4gICAgfSxcbiAgICBsaXN0T2JzZXJ2YWJsZTogPFR5cGVSZXNwb25zZT4oKTogT2JzZXJ2YWJsZTxJSHR0cFJlc3BvbnNlPFR5cGVSZXNwb25zZT4+ID0+IHtcbiAgICAgIGlmIChmdW5jdGlvbkdldERhdGEpIHtcbiAgICAgICAgZGF0YSA9IGZ1bmN0aW9uR2V0RGF0YSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2Yoe1xuICAgICAgICBjb2RlOiAyMDAsXG4gICAgICAgIGRhdGE6IChkYXRhIGFzIGFueSkgfHwgW10sXG4gICAgICAgIHBhZ2luZzoge31cbiAgICAgIH0pLnBpcGUoZGVsYXkoMjUwKSk7XG4gICAgfSxcbiAgICBsaXN0UGFnaW5nOiBhc3luYyA8VHlwZVJlc3BvbnNlPihwYXJhbXM6IFV0aWxzSHR0cFBhcmFtc1JlcXVlc3QpOiBQcm9taXNlPElIdHRwUmVzcG9uc2U8VHlwZVJlc3BvbnNlPj4gPT4ge1xuICAgICAgaWYgKGZ1bmN0aW9uR2V0RGF0YSkge1xuICAgICAgICBkYXRhID0gZnVuY3Rpb25HZXREYXRhKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYWdlID0gcGFyc2VJbnQocGFyYW1zLmdldCgncGFnZScpIHx8ICcxJyk7XG4gICAgICBjb25zdCBwZXJfcGFnZSA9IHBhcnNlSW50KHBhcmFtcy5nZXQoJ3Blcl9wYWdlJykgfHwgJzMwJyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBwYWdpbmdUb0xpc3QoZGF0YSBhcyBBcnJheTxhbnk+LCBwYWdlLCBwZXJfcGFnZSk7XG5cbiAgICAgIGF3YWl0IGxhc3RWYWx1ZUZyb20odGltZXIoMjUwKSk7XG5cbiAgICAgIHJldHVybiByZXN1bHQgYXMgSUh0dHBSZXNwb25zZTxUeXBlUmVzcG9uc2U+O1xuICAgIH0sXG4gIH1cbn07XG5cbi8qKlxuICogVOG6oW8gbeG7mXQgxJHhu5FpIHTGsOG7o25nIG1vY2sgZGV0YWlsIHbhu5tpIGPDoWMgcGjGsMahbmcgdGjhu6ljIMSR4buDIGzhuqV5IGLhuqNuIGdoaSByacOqbmcgbOG6uyB0aGVvIGtow7NhLlxuICogSOG7lyB0cuG7oyBj4bqjIG3huqNuZyBk4buvIGxp4buHdSB0xKluaCB2w6AgY8OhYyBow6BtIGThu68gbGnhu4d1IMSR4buZbmcuXG4gKiBcbiAqIEB0ZW1wbGF0ZSBUeXBlUmVzcG9uc2UgLSBLaeG7g3UgZOG7ryBsaeG7h3UgcGjhuqNuIGjhu5NpIG1vbmcgxJHhu6NpXG4gKiBAdGVtcGxhdGUgVHlwZVBhcmFtcyAtIEtp4buDdSB0aGFtIHPhu5EgSFRUUCAobeG6t2MgxJHhu4tuaCBsw6AgYW55KVxuICogXG4gKiBAcGFyYW0gaHR0cFBhcmFtcyAtIFRoYW0gc+G7kSBIVFRQIGNo4bupYTpcbiAqICAgLSBrZXlzOiBLaMOzYSAoaG/hurdjIGPDoWMga2jDs2EpIGPhuqduIHTDrG0ga2nhur9tXG4gKiAgIC0gZmllbGRLZXk6IFTDqm4gdHLGsOG7nW5nIMSR4buDIHNvIGto4bubcCAobeG6t2MgxJHhu4tuaCBsw6AgJ2lkJylcbiAqICAgLSBkYXRhUmVzcG9uc2VPamVjdDogQ+G7nSBib29sZWFuIMSR4buDIMSR4buLbmggZOG6oW5nIMSR4buRaSB0xrDhu6NuZyBwaOG6o24gaOG7k2lcbiAqIEBwYXJhbSBkYXRhIC0gTeG6o25nIGThu68gbGnhu4d1IHTEqW5oIHTDuXkgY2jhu41uIMSR4buDIHTDrG0ga2nhur9tXG4gKiBAcGFyYW0gZnVuY3Rpb25HZXREYXRhIC0gSMOgbSB0w7l5IGNo4buNbiB0cuG6oyB24buBIGThu68gbGnhu4d1IChjw7MgdGjhu4MgbMOgIFByb21pc2UgaG/hurdjIE9ic2VydmFibGUpXG4gKiBAcGFyYW0gaWdub3JlU3BsaXQgLSBO4bq/dSB0cnVlLCBjb2kga2V5cyBuaMawIG3hu5l0IGdpw6EgdHLhu4sgxJHGoW4gdGhheSB2w6wgdMOhY2ggY2h14buXaVxuICogQHBhcmFtIHNwbGl0T3BlcmF0b3IgLSBUb8OhbiB04butIHTDuXkgY2jhu4luaCDEkeG7gyB0w6FjaCBrZXlzICht4bq3YyDEkeG7i25oIGzDoCBk4bqldSBwaOG6qXkpXG4gKiBcbiAqIEByZXR1cm5zIMSQ4buRaSB0xrDhu6NuZyB24bubaSBjw6FjIHBoxrDGoW5nIHRo4bupYzpcbiAqICAgLSBkZXRhaWxCeURhdGE6IFTDrG0ga2nhur9tIHRow7RuZyBxdWEgbeG6o25nIGThu68gbGnhu4d1IHTEqW5oIMSRxrDhu6NjIGN1bmcgY+G6pXBcbiAqICAgLSBkZXRhaWxCeUZ1bmN0aW9uOiBH4buNaSBmdW5jdGlvbkdldERhdGEgxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UgbeG7m2ksIHNhdSDEkcOzIHTDrG0ga2nhur9tXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBwYXJhbXMgPSBuZXcgVXRpbHNIdHRwUGFyYW1zUmVxdWVzdCh7ZnJvbU9iamVjdDp7a2V5czonMScsZmllbGRLZXk6J2lkJ319KTtcbiAqIGNvbnN0IG1vY2tEZXRhaWwgPSByZXR1cm5EZXRhaWxPYmplY3Q8VXNlcj4ocGFyYW1zLCB1c2VyRGF0YSk7XG4gKiBjb25zdCB1c2VyID0gYXdhaXQgbW9ja0RldGFpbC5kZXRhaWxCeURhdGEoKTtcbiAqIGBgYFxuICovXG5cblxuZXhwb3J0IGNvbnN0IHJldHVybkRldGFpbE9iamVjdCA9IDxUeXBlUmVzcG9uc2UsIFR5cGVQYXJhbXMgPSBhbnk+KGh0dHBQYXJhbXM6IFV0aWxzSHR0cFBhcmFtc1JlcXVlc3Q8VHlwZVBhcmFtcz4gfCBIdHRwUGFyYW1zLCBkYXRhPzogQXJyYXk8YW55PiwgZnVuY3Rpb25HZXREYXRhPzogKCkgPT4gUHJvbWlzZTxJSHR0cFJlc3BvbnNlPFR5cGVSZXNwb25zZT4+IHwgT2JzZXJ2YWJsZTxJSHR0cFJlc3BvbnNlPFR5cGVSZXNwb25zZT4+LCBpZ25vcmVTcGxpdD86IGJvb2xlYW4sIHNwbGl0T3BlcmF0b3I/OiBzdHJpbmcpID0+IHtcbiAgY29uc3Qga2V5c1ByYW1zOiBhbnkgPSBodHRwUGFyYW1zLmdldCgna2V5cycpO1xuICBjb25zdCBmaWVsZEtleTogc3RyaW5nID0gaHR0cFBhcmFtcy5nZXQoJ2ZpZWxkS2V5JykgfHwgJ2lkJztcbiAgY29uc3QgZGF0YVJlc3BvbnNlT2plY3Q6IGFueSA9IGh0dHBQYXJhbXMuZ2V0KCdkYXRhUmVzcG9uc2VPamVjdCcpO1xuXG4gIHJldHVybiB7XG4gICAgZGV0YWlsQnlEYXRhOiBhc3luYyAoa2V5cz86IGFueSk6IFByb21pc2U8SUh0dHBSZXNwb25zZTxUeXBlUmVzcG9uc2U+PiA9PiB7XG4gICAgICByZXR1cm4gZmlsdGVyRGF0YTxUeXBlUmVzcG9uc2U+KGZpZWxkS2V5LCBkYXRhLCBrZXlzID8/IGtleXNQcmFtcywgZGF0YVJlc3BvbnNlT2plY3QsIGlnbm9yZVNwbGl0LCBzcGxpdE9wZXJhdG9yKTtcbiAgICB9LFxuXG4gICAgZGV0YWlsQnlGdW5jdGlvbjogYXN5bmMgKGtleXM/OiBhbnkpOiBQcm9taXNlPElIdHRwUmVzcG9uc2U8VHlwZVJlc3BvbnNlPj4gPT4ge1xuICAgICAgaWYgKCFmdW5jdGlvbkdldERhdGEpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGZpbHRlckRhdGE8VHlwZVJlc3BvbnNlPihmaWVsZEtleSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGRhdGFSZXNwb25zZU9qZWN0LCBpZ25vcmVTcGxpdCwgc3BsaXRPcGVyYXRvcik7XG4gICAgICB9XG5cbiAgICAgIGxldCBkYXRhUmVzdWx0OiBhbnkgPSBmdW5jdGlvbkdldERhdGEoKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGRhdGFSZXN1bHRbJ3N1YnNjcmliZSddKSB7XG4gICAgICAgICAgZGF0YVJlc3VsdCA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oZGF0YVJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGFSZXN1bHRbJ3RoZW4nXSkge1xuICAgICAgICAgIGRhdGFSZXN1bHQgPSBhd2FpdCBkYXRhUmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgIGRhdGFSZXN1bHQgPSB7IGRhdGE6IFtdIH07XG4gICAgICB9XG5cbiAgICAgIGRhdGEgPSBkYXRhUmVzdWx0LmRhdGE7XG5cbiAgICAgIHJldHVybiBhd2FpdCBmaWx0ZXJEYXRhPFR5cGVSZXNwb25zZT4oZmllbGRLZXksIGRhdGEsIGtleXMgfHwga2V5c1ByYW1zLCBkYXRhUmVzcG9uc2VPamVjdCwgaWdub3JlU3BsaXQsIHNwbGl0T3BlcmF0b3IpO1xuICAgIH1cbiAgfTtcbn1cblxuY29uc3QgZmlsdGVyRGF0YSA9IDxUeXBlUmVzcG9uc2U+KGZpZWxkS2V5OiBzdHJpbmcsIGRhdGE/OiBBcnJheTxhbnk+LCBrZXlzPzogYW55LCBkYXRhUmVzcG9uc2VPamVjdD86IGJvb2xlYW4sIGlnbm9yZVNwbGl0PzogYm9vbGVhbiwgc3BsaXRPcGVyYXRvcj86IHN0cmluZyk6IElIdHRwUmVzcG9uc2U8VHlwZVJlc3BvbnNlPiA9PiB7XG4gIGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcgfHwgaXNOaWwoa2V5cykgfHwga2V5cyA9PT0gJycpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29kZTogMjAwLFxuICAgICAgZGF0YTogdW5kZWZpbmVkLFxuICAgICAgcGFnaW5nOiB7fVxuICAgIH07XG4gIH1cblxuICBkYXRhID0gZGF0YSB8fCBbXTtcblxuICBpZiAoIShkYXRhIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgZGF0YSA9IFtkYXRhXTtcbiAgfVxuICBjb25zdCByZXN1bHQ6IGFueSA9IFtdO1xuXG4gIGlmICghaWdub3JlU3BsaXQgJiYgdHlwZW9mIGtleXMgPT09ICdzdHJpbmcnKSB7XG4gICAga2V5cyA9IGtleXMuc3BsaXQoc3BsaXRPcGVyYXRvciB8fCAnLCcpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBrZXlzID09PSAnbnVtYmVyJyB8fCB0eXBlb2Yga2V5cyA9PT0gJ2Jvb2xlYW4nIHx8ICh0eXBlb2Yga2V5cyA9PT0gJ3N0cmluZycgJiYgaWdub3JlU3BsaXQpKSB7XG4gICAga2V5cyA9IFtrZXlzXTtcbiAgfVxuXG4gIGtleXMuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZXN1bHRGaWx0ZXIgPSBkYXRhPy5maWx0ZXIoKGVsRGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkgPT4gaXNFcXVhbChnZXQoZWxEYXRhLCBmaWVsZEtleSksIGtleSwgeyBpZ25vcmVFeGFjdGx5RGF0YVR5cGU6IHRydWUgfSkpO1xuXG4gICAgaWYgKHJlc3VsdEZpbHRlciAmJiByZXN1bHRGaWx0ZXIubGVuZ3RoKSB7XG4gICAgICByZXN1bHQucHVzaCguLi5yZXN1bHRGaWx0ZXIpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjb2RlOiAyMDAsXG4gICAgZGF0YTogcmVzdWx0Lmxlbmd0aCA/IChkYXRhUmVzcG9uc2VPamVjdCA/IHJlc3VsdFswXSA6IHJlc3VsdCkgOiB1bmRlZmluZWQsXG4gICAgcGFnaW5nOiB7fVxuICB9O1xufVxuXG5jb25zdCBwZXJfcGFnZSA9IDIwO1xuY29uc3QgdG90YWxfaXRlbXMgPSAocGVyX3BhZ2UgKiAxNTApICsgMTU7XG5cblxuZXhwb3J0IGNvbnN0IGdldENvbmZpZ0xpc3REYXRhRGVtbyA9IChodHRwUGFyYW1zRGV0YWlsOiBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0PGFueT4gPSBuZXcgVXRpbHNIdHRwUGFyYW1zUmVxdWVzdCgpLCBvYmplY3REYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgZnVuY3Rpb25CdWlsZE9iamVjdD86IChudW1JbmNyZW1lbnQ6IHN0cmluZykgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPikgPT4ge1xuICBpZiAoIW9iamVjdERhdGEpIHtcbiAgICBvYmplY3REYXRhID0ge1xuICAgICAgaWQ6ICcnLFxuICAgICAgbmFtZTogJ2l0ZW0gcG9zaXRvbiBpbmRleCAnXG4gICAgfVxuICB9XG5cbiAgY29uc3QgZGF0YSA9IFsuLi5BcnJheSh0b3RhbF9pdGVtcykua2V5cygpXS5tYXAoKF8sIGluZGV4KSA9PiB7XG5cbiAgICBpZiAoZnVuY3Rpb25CdWlsZE9iamVjdCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uQnVpbGRPYmplY3QoYCR7K2luZGV4ICsgMX1gKVxuICAgIH1cbiAgICBjb25zdCBvYmogPSB7fTtcbiAgICBPYmplY3Qua2V5cyhvYmplY3REYXRhKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBzZXQob2JqLCBrZXksIGAke29iamVjdERhdGFba2V5XX0keytpbmRleCArIDF9YCk7XG4gICAgfSlcbiAgICByZXR1cm4gb2JqO1xuICB9KTtcblxuICBjb25zdCBsaXN0U2VydmljZSA9IHJldHVybkxpc3RPYmplY3QoZGF0YSk7XG4gIGNvbnN0IGRldGFpbFNlcnZpY2UgPSByZXR1cm5EZXRhaWxPYmplY3QoaHR0cFBhcmFtc0RldGFpbCwgZGF0YSwgdW5kZWZpbmVkLCBmYWxzZSwgJzsnKTtcbiAgcmV0dXJuIHtcbiAgICBsaXN0OiBsaXN0U2VydmljZS5saXN0UGFnaW5nLFxuICAgIGRldGFpbEJ5RGF0YTogZGV0YWlsU2VydmljZS5kZXRhaWxCeURhdGFcbiAgfTtcbn1cblxuLyoqXG4gKiBIw6BtIHBow6JuIHRyYW5nIGThu68gbGnhu4d1IHThu6sgbeG7mXQgbeG6o25nXG4gKiBAcGFyYW0gZGF0YSAtIE3huqNuZyBk4buvIGxp4buHdSBj4bqnbiBwaMOibiB0cmFuZ1xuICogQHBhcmFtIHBhZ2UgLSBT4buRIHRyYW5nIGhp4buHbiB04bqhaSAoYuG6r3QgxJHhuqd1IHThu6sgMSlcbiAqIEBwYXJhbSBwZXJfcGFnZSAtIFPhu5EgbMaw4bujbmcgaXRlbSB0csOqbiBt4buXaSB0cmFuZ1xuICogQHJldHVybnMgxJDhu5FpIHTGsOG7o25nIGNo4bupYSBk4buvIGxp4buHdSDEkcOjIHBow6JuIHRyYW5nIHbDoCB0aMO0bmcgdGluIHBow6JuIHRyYW5nXG4gKi9cbmV4cG9ydCBjb25zdCBwYWdpbmdUb0xpc3QgPSAoZGF0YTogQXJyYXk8YW55PiwgcGFnZTogbnVtYmVyLCBwZXJfcGFnZTogbnVtYmVyKSA9PiB7XG4gIGlmICghZGF0YSB8fCAhQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2RlOiAyMDAsXG4gICAgICBkYXRhOiBbXSxcbiAgICAgIHBhZ2luZzoge1xuICAgICAgICBwYWdlOiBwYWdlLFxuICAgICAgICBwZXJfcGFnZTogcGVyX3BhZ2UsXG4gICAgICAgIHRvdGFsX2l0ZW1zOiAwLFxuICAgICAgICB0b3RhbF9wYWdlczogMFxuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBzdGFydCA9IChwYWdlIC0gMSkgKiBwZXJfcGFnZTtcbiAgY29uc3QgZW5kID0gc3RhcnQgKyBwZXJfcGFnZTtcbiAgY29uc3QgdG90YWxfcGFnZXMgPSBNYXRoLmNlaWwoZGF0YS5sZW5ndGggLyBwZXJfcGFnZSk7XG4gIGNvbnN0IGRhdGFCeVBhZ2UgPSBkYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICByZXR1cm4ge1xuICAgIGNvZGU6IDIwMCxcbiAgICBkYXRhOiBkYXRhQnlQYWdlLFxuICAgIHBhZ2luZzoge1xuICAgICAgcGFnZTogcGFnZSA+IHRvdGFsX3BhZ2VzID8gdG90YWxfcGFnZXMgOiBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlcl9wYWdlLFxuICAgICAgdG90YWxfaXRlbXM6IGRhdGEubGVuZ3RoLFxuICAgICAgdG90YWxfcGFnZXM6IHRvdGFsX3BhZ2VzXG4gICAgfVxuICB9XG59XG5cblxuXG4iXX0=
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLW1vY2t1cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvaHR0cC1yZXF1ZXN0L3NyYy9hcGktbW9ja3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQWMsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRW5FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUVILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBaUIsRUFBRSxlQUFrQyxFQUFFLEVBQUU7SUFDeEYsT0FBTztRQUNMLElBQUksRUFBRSxLQUFLLElBQXdELEVBQUU7WUFDbkUsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxHQUFHLGVBQWUsRUFBRSxDQUFDO1lBQzNCLENBQUM7WUFDRCxNQUFNLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNoQyxPQUFPO2dCQUNMLElBQUksRUFBRSxHQUFHO2dCQUNULElBQUksRUFBRyxJQUFZLElBQUksRUFBRTtnQkFDekIsTUFBTSxFQUFFLEVBQUU7YUFDWCxDQUFDO1FBQ0osQ0FBQztRQUNELGNBQWMsRUFBRSxHQUEwRCxFQUFFO1lBQzFFLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksR0FBRyxlQUFlLEVBQUUsQ0FBQztZQUMzQixDQUFDO1lBRUQsT0FBTyxFQUFFLENBQUM7Z0JBQ1IsSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsSUFBSSxFQUFHLElBQVksSUFBSSxFQUFFO2dCQUN6QixNQUFNLEVBQUUsRUFBRTthQUNYLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcs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QzFDLE9BQU87UUFDTCxJQUFJLEVBQUUsR0FBRztRQUNULElBQUksRUFBRSxVQUFVO1FBQ2hCLE1BQU0sRUFBRTtZQUNOLElBQUksRUFBRSxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDN0MsUUFBUSxFQUFFLFFBQVE7WUFDbEIsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ3hCLFdBQVcsRUFBRSxXQUFXO1NBQ3pCO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IElIdHRwUmVzcG9uc2UgfSBmcm9tICdAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzJztcbmltcG9ydCB7IFV0aWxzSHR0cFBhcmFtc1JlcXVlc3QsIGdldCwgaXNOaWwsIHNldCwgaXNFcXVhbCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGRlbGF5LCBsYXN0VmFsdWVGcm9tLCBvZiwgdGltZXIgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBUcuG6oyB24buBIGPDoWMgcGjGsMahbmcgdGjhu6ljIMSR4buDIHjhu60gbMO9IGRhbmggc8OhY2ggZOG7ryBsaeG7h3UgbW9ja1xuICogQHBhcmFtIGRhdGEgLSBN4bqjbmcgZOG7ryBsaeG7h3UgbeG6t2MgxJHhu4tuaCDEkeG7gyBtb2NrXG4gKiBAcGFyYW0gZnVuY3Rpb25HZXREYXRhIC0gSMOgbSB0w7l5IGNo4buNbiDEkeG7gyBs4bqleSBk4buvIGxp4buHdSDEkeG7mW5nIHRoYXkgdsOsIHPhu60gZOG7pW5nIGRhdGEgbeG6t2MgxJHhu4tuaFxuICogQHJldHVybnMgxJDhu5FpIHTGsOG7o25nIGNo4bupYSBjw6FjIHBoxrDGoW5nIHRo4bupYzpcbiAqICAgLSBsaXN0OiBUcuG6oyB24buBIFByb21pc2UgduG7m2kgdG/DoG4gYuG7mSBk4buvIGxp4buHdSAoY8OzIGRlbGF5IDI1MG1zKVxuICogICAtIGxpc3RPYnNlcnZhYmxlOiBUcuG6oyB24buBIE9ic2VydmFibGUgduG7m2kgdG/DoG4gYuG7mSBk4buvIGxp4buHdSAoY8OzIGRlbGF5IDI1MG1zKVxuICogICAtIGxpc3RQYWdpbmc6IFRy4bqjIHbhu4EgUHJvbWlzZSB24bubaSBk4buvIGxp4buHdSDEkcOjIHBow6JuIHRyYW5nIGThu7FhIHRyw6puIHBhcmFtcyAoY8OzIGRlbGF5IDI1MG1zKVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtb2NrRGF0YSA9IFt7IGlkOiAxLCBuYW1lOiAnSXRlbSAxJyB9LCB7IGlkOiAyLCBuYW1lOiAnSXRlbSAyJyB9XTtcbiAqIGNvbnN0IGxpc3RTZXJ2aWNlID0gcmV0dXJuTGlzdE9iamVjdChtb2NrRGF0YSk7XG4gKlxuICogLy8gTOG6pXkgdG/DoG4gYuG7mSBk4buvIGxp4buHdVxuICogY29uc3QgYWxsRGF0YSA9IGF3YWl0IGxpc3RTZXJ2aWNlLmxpc3QoKTtcbiAqXG4gKiAvLyBM4bqleSBk4buvIGxp4buHdSBwaMOibiB0cmFuZ1xuICogY29uc3QgcGFyYW1zID0gbmV3IFV0aWxzSHR0cFBhcmFtc1JlcXVlc3QoKTtcbiAqIHBhcmFtcy5zZXQoJ3BhZ2UnLCAnMScpO1xuICogcGFyYW1zLnNldCgncGVyX3BhZ2UnLCAnMTAnKTtcbiAqIGNvbnN0IHBhZ2VkRGF0YSA9IGF3YWl0IGxpc3RTZXJ2aWNlLmxpc3RQYWdpbmcocGFyYW1zKTtcbiAqIGBgYFxuICovXG5cbmV4cG9ydCBjb25zdCByZXR1cm5MaXN0T2JqZWN0ID0gKGRhdGE/OiBBcnJheTxhbnk+LCBmdW5jdGlvbkdldERhdGE/OiAoKSA9PiBBcnJheTxhbnk+KSA9PiB7XG4gIHJldHVybiB7XG4gICAgbGlzdDogYXN5bmMgPFR5cGVSZXNwb25zZT4oKTogUHJvbWlzZTxJSHR0cFJlc3BvbnNlPFR5cGVSZXNwb25zZT4+ID0+IHtcbiAgICAgIGlmIChmdW5jdGlvbkdldERhdGEpIHtcbiAgICAgICAgZGF0YSA9IGZ1bmN0aW9uR2V0RGF0YSgpO1xuICAgICAgfVxuICAgICAgYXdhaXQgbGFzdFZhbHVlRnJvbSh0aW1lcigyNTApKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvZGU6IDIwMCxcbiAgICAgICAgZGF0YTogKGRhdGEgYXMgYW55KSB8fCBbXSxcbiAgICAgICAgcGFnaW5nOiB7fSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBsaXN0T2JzZXJ2YWJsZTogPFR5cGVSZXNwb25zZT4oKTogT2JzZXJ2YWJsZTxJSHR0cFJlc3BvbnNlPFR5cGVSZXNwb25zZT4+ID0+IHtcbiAgICAgIGlmIChmdW5jdGlvbkdldERhdGEpIHtcbiAgICAgICAgZGF0YSA9IGZ1bmN0aW9uR2V0RGF0YSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2Yoe1xuICAgICAgICBjb2RlOiAyMDAsXG4gICAgICAgIGRhdGE6IChkYXRhIGFzIGFueSkgfHwgW10sXG4gICAgICAgIHBhZ2luZzoge30sXG4gICAgICB9KS5waXBlKGRlbGF5KDI1MCkpO1xuICAgIH0sXG4gICAgbGlzdFBhZ2luZzogYXN5bmMgPFR5cGVSZXNwb25zZT4ocGFyYW1zOiBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0KTogUHJvbWlzZTxJSHR0cFJlc3BvbnNlPFR5cGVSZXNwb25zZT4+ID0+IHtcbiAgICAgIGlmIChmdW5jdGlvbkdldERhdGEpIHtcbiAgICAgICAgZGF0YSA9IGZ1bmN0aW9uR2V0RGF0YSgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFnZSA9IHBhcnNlSW50KHBhcmFtcy5nZXQoJ3BhZ2UnKSB8fCAnMScpO1xuICAgICAgY29uc3QgcGVyX3BhZ2UgPSBwYXJzZUludChwYXJhbXMuZ2V0KCdwZXJfcGFnZScpIHx8ICczMCcpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGFnaW5nVG9MaXN0KGRhdGEgYXMgQXJyYXk8YW55PiwgcGFnZSwgcGVyX3BhZ2UpO1xuXG4gICAgICBhd2FpdCBsYXN0VmFsdWVGcm9tKHRpbWVyKDI1MCkpO1xuXG4gICAgICByZXR1cm4gcmVzdWx0IGFzIElIdHRwUmVzcG9uc2U8VHlwZVJlc3BvbnNlPjtcbiAgICB9LFxuICB9O1xufTtcblxuLyoqXG4gKiBU4bqhbyBt4buZdCDEkeG7kWkgdMaw4bujbmcgbW9jayBkZXRhaWwgduG7m2kgY8OhYyBwaMawxqFuZyB0aOG7qWMgxJHhu4MgbOG6pXkgYuG6o24gZ2hpIHJpw6puZyBs4bq7IHRoZW8ga2jDs2EuXG4gKiBI4buXIHRy4bujIGPhuqMgbeG6o25nIGThu68gbGnhu4d1IHTEqW5oIHbDoCBjw6FjIGjDoG0gZOG7ryBsaeG7h3UgxJHhu5luZy5cbiAqXG4gKiBAdGVtcGxhdGUgVHlwZVJlc3BvbnNlIC0gS2nhu4N1IGThu68gbGnhu4d1IHBo4bqjbiBo4buTaSBtb25nIMSR4bujaVxuICogQHRlbXBsYXRlIFR5cGVQYXJhbXMgLSBLaeG7g3UgdGhhbSBz4buRIEhUVFAgKG3hurdjIMSR4buLbmggbMOgIGFueSlcbiAqXG4gKiBAcGFyYW0gaHR0cFBhcmFtcyAtIFRoYW0gc+G7kSBIVFRQIGNo4bupYTpcbiAqICAgLSBrZXlzOiBLaMOzYSAoaG/hurdjIGPDoWMga2jDs2EpIGPhuqduIHTDrG0ga2nhur9tXG4gKiAgIC0gZmllbGRLZXk6IFTDqm4gdHLGsOG7nW5nIMSR4buDIHNvIGto4bubcCAobeG6t2MgxJHhu4tuaCBsw6AgJ2lkJylcbiAqICAgLSBkYXRhUmVzcG9uc2VPamVjdDogQ+G7nSBib29sZWFuIMSR4buDIMSR4buLbmggZOG6oW5nIMSR4buRaSB0xrDhu6NuZyBwaOG6o24gaOG7k2lcbiAqIEBwYXJhbSBkYXRhIC0gTeG6o25nIGThu68gbGnhu4d1IHTEqW5oIHTDuXkgY2jhu41uIMSR4buDIHTDrG0ga2nhur9tXG4gKiBAcGFyYW0gZnVuY3Rpb25HZXREYXRhIC0gSMOgbSB0w7l5IGNo4buNbiB0cuG6oyB24buBIGThu68gbGnhu4d1IChjw7MgdGjhu4MgbMOgIFByb21pc2UgaG/hurdjIE9ic2VydmFibGUpXG4gKiBAcGFyYW0gaWdub3JlU3BsaXQgLSBO4bq/dSB0cnVlLCBjb2kga2V5cyBuaMawIG3hu5l0IGdpw6EgdHLhu4sgxJHGoW4gdGhheSB2w6wgdMOhY2ggY2h14buXaVxuICogQHBhcmFtIHNwbGl0T3BlcmF0b3IgLSBUb8OhbiB04butIHTDuXkgY2jhu4luaCDEkeG7gyB0w6FjaCBrZXlzICht4bq3YyDEkeG7i25oIGzDoCBk4bqldSBwaOG6qXkpXG4gKlxuICogQHJldHVybnMgxJDhu5FpIHTGsOG7o25nIHbhu5tpIGPDoWMgcGjGsMahbmcgdGjhu6ljOlxuICogICAtIGRldGFpbEJ5RGF0YTogVMOsbSBraeG6v20gdGjDtG5nIHF1YSBt4bqjbmcgZOG7ryBsaeG7h3UgdMSpbmggxJHGsOG7o2MgY3VuZyBj4bqlcFxuICogICAtIGRldGFpbEJ5RnVuY3Rpb246IEfhu41pIGZ1bmN0aW9uR2V0RGF0YSDEkeG7gyBs4bqleSBk4buvIGxp4buHdSBt4bubaSwgc2F1IMSRw7MgdMOsbSBraeG6v21cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcGFyYW1zID0gbmV3IFV0aWxzSHR0cFBhcmFtc1JlcXVlc3Qoe2Zyb21PYmplY3Q6e2tleXM6JzEnLGZpZWxkS2V5OidpZCd9fSk7XG4gKiBjb25zdCBtb2NrRGV0YWlsID0gcmV0dXJuRGV0YWlsT2JqZWN0PFVzZXI+KHBhcmFtcywgdXNlckRhdGEpO1xuICogY29uc3QgdXNlciA9IGF3YWl0IG1vY2tEZXRhaWwuZGV0YWlsQnlEYXRhKCk7XG4gKiBgYGBcbiAqL1xuXG5leHBvcnQgY29uc3QgcmV0dXJuRGV0YWlsT2JqZWN0ID0gPFR5cGVSZXNwb25zZSwgVHlwZVBhcmFtcyA9IGFueT4oXG4gIGh0dHBQYXJhbXM6IFV0aWxzSHR0cFBhcmFtc1JlcXVlc3Q8VHlwZVBhcmFtcz4gfCBIdHRwUGFyYW1zLFxuICBkYXRhPzogQXJyYXk8YW55PixcbiAgZnVuY3Rpb25HZXREYXRhPzogKCkgPT4gUHJvbWlzZTxJSHR0cFJlc3BvbnNlPFR5cGVSZXNwb25zZT4+IHwgT2JzZXJ2YWJsZTxJSHR0cFJlc3BvbnNlPFR5cGVSZXNwb25zZT4+LFxuICBpZ25vcmVTcGxpdD86IGJvb2xlYW4sXG4gIHNwbGl0T3BlcmF0b3I/OiBzdHJpbmdcbikgPT4ge1xuICBjb25zdCBrZXlzUHJhbXM6IGFueSA9IGh0dHBQYXJhbXMuZ2V0KCdrZXlzJyk7XG4gIGNvbnN0IGZpZWxkS2V5OiBzdHJpbmcgPSBodHRwUGFyYW1zLmdldCgnZmllbGRLZXknKSB8fCAnaWQnO1xuICBjb25zdCBkYXRhUmVzcG9uc2VPamVjdDogYW55ID0gaHR0cFBhcmFtcy5nZXQoJ2RhdGFSZXNwb25zZU9qZWN0Jyk7XG5cbiAgcmV0dXJuIHtcbiAgICBkZXRhaWxCeURhdGE6IGFzeW5jIChrZXlzPzogYW55KTogUHJvbWlzZTxJSHR0cFJlc3BvbnNlPFR5cGVSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiBmaWx0ZXJEYXRhPFR5cGVSZXNwb25zZT4oZmllbGRLZXksIGRhdGEsIGtleXMgPz8ga2V5c1ByYW1zLCBkYXRhUmVzcG9uc2VPamVjdCwgaWdub3JlU3BsaXQsIHNwbGl0T3BlcmF0b3IpO1xuICAgIH0sXG5cbiAgICBkZXRhaWxCeUZ1bmN0aW9uOiBhc3luYyAoa2V5cz86IGFueSk6IFByb21pc2U8SUh0dHBSZXNwb25zZTxUeXBlUmVzcG9uc2U+PiA9PiB7XG4gICAgICBpZiAoIWZ1bmN0aW9uR2V0RGF0YSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZmlsdGVyRGF0YTxUeXBlUmVzcG9uc2U+KGZpZWxkS2V5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZGF0YVJlc3BvbnNlT2plY3QsIGlnbm9yZVNwbGl0LCBzcGxpdE9wZXJhdG9yKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRhdGFSZXN1bHQ6IGFueSA9IGZ1bmN0aW9uR2V0RGF0YSgpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBpZiAoZGF0YVJlc3VsdFsnc3Vic2NyaWJlJ10pIHtcbiAgICAgICAgICBkYXRhUmVzdWx0ID0gYXdhaXQgbGFzdFZhbHVlRnJvbShkYXRhUmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YVJlc3VsdFsndGhlbiddKSB7XG4gICAgICAgICAgZGF0YVJlc3VsdCA9IGF3YWl0IGRhdGFSZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgZGF0YVJlc3VsdCA9IHsgZGF0YTogW10gfTtcbiAgICAgIH1cblxuICAgICAgZGF0YSA9IGRhdGFSZXN1bHQuZGF0YTtcblxuICAgICAgcmV0dXJuIGF3YWl0IGZpbHRlckRhdGE8VHlwZVJlc3BvbnNlPihmaWVsZEtleSwgZGF0YSwga2V5cyB8fCBrZXlzUHJhbXMsIGRhdGFSZXNwb25zZU9qZWN0LCBpZ25vcmVTcGxpdCwgc3BsaXRPcGVyYXRvcik7XG4gICAgfSxcbiAgfTtcbn07XG5cbmNvbnN0IGZpbHRlckRhdGEgPSA8VHlwZVJlc3BvbnNlPihmaWVsZEtleTogc3RyaW5nLCBkYXRhPzogQXJyYXk8YW55Piwga2V5cz86IGFueSwgZGF0YVJlc3BvbnNlT2plY3Q/OiBib29sZWFuLCBpZ25vcmVTcGxpdD86IGJvb2xlYW4sIHNwbGl0T3BlcmF0b3I/OiBzdHJpbmcpOiBJSHR0cFJlc3BvbnNlPFR5cGVSZXNwb25zZT4gPT4ge1xuICBpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnIHx8IGlzTmlsKGtleXMpIHx8IGtleXMgPT09ICcnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6IDIwMCxcbiAgICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICAgIHBhZ2luZzoge30sXG4gICAgfTtcbiAgfVxuXG4gIGRhdGEgPSBkYXRhIHx8IFtdO1xuXG4gIGlmICghKGRhdGEgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICBkYXRhID0gW2RhdGFdO1xuICB9XG4gIGNvbnN0IHJlc3VsdDogYW55ID0gW107XG5cbiAgaWYgKCFpZ25vcmVTcGxpdCAmJiB0eXBlb2Yga2V5cyA9PT0gJ3N0cmluZycpIHtcbiAgICBrZXlzID0ga2V5cy5zcGxpdChzcGxpdE9wZXJhdG9yIHx8ICcsJyk7XG4gIH1cblxuICBpZiAodHlwZW9mIGtleXMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBrZXlzID09PSAnYm9vbGVhbicgfHwgKHR5cGVvZiBrZXlzID09PSAnc3RyaW5nJyAmJiBpZ25vcmVTcGxpdCkpIHtcbiAgICBrZXlzID0gW2tleXNdO1xuICB9XG5cbiAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHJlc3VsdEZpbHRlciA9IGRhdGE/LmZpbHRlcigoZWxEYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSA9PiBpc0VxdWFsKGdldChlbERhdGEsIGZpZWxkS2V5KSwga2V5LCB7IGlnbm9yZUV4YWN0bHlEYXRhVHlwZTogdHJ1ZSB9KSk7XG5cbiAgICBpZiAocmVzdWx0RmlsdGVyICYmIHJlc3VsdEZpbHRlci5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdC5wdXNoKC4uLnJlc3VsdEZpbHRlcik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGNvZGU6IDIwMCxcbiAgICBkYXRhOiByZXN1bHQubGVuZ3RoID8gKGRhdGFSZXNwb25zZU9qZWN0ID8gcmVzdWx0WzBdIDogcmVzdWx0KSA6IHVuZGVmaW5lZCxcbiAgICBwYWdpbmc6IHt9LFxuICB9O1xufTtcblxuY29uc3QgcGVyX3BhZ2UgPSAyMDtcbmNvbnN0IHRvdGFsX2l0ZW1zID0gcGVyX3BhZ2UgKiAxNTAgKyAxNTtcblxuZXhwb3J0IGNvbnN0IGdldENvbmZpZ0xpc3REYXRhRGVtbyA9IChodHRwUGFyYW1zRGV0YWlsOiBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0PGFueT4gPSBuZXcgVXRpbHNIdHRwUGFyYW1zUmVxdWVzdCgpLCBvYmplY3REYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgZnVuY3Rpb25CdWlsZE9iamVjdD86IChudW1JbmNyZW1lbnQ6IHN0cmluZykgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPikgPT4ge1xuICBpZiAoIW9iamVjdERhdGEpIHtcbiAgICBvYmplY3REYXRhID0ge1xuICAgICAgaWQ6ICcnLFxuICAgICAgbmFtZTogJ2l0ZW0gcG9zaXRvbiBpbmRleCAnLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBkYXRhID0gWy4uLkFycmF5KHRvdGFsX2l0ZW1zKS5rZXlzKCldLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICBpZiAoZnVuY3Rpb25CdWlsZE9iamVjdCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uQnVpbGRPYmplY3QoYCR7K2luZGV4ICsgMX1gKTtcbiAgICB9XG4gICAgY29uc3Qgb2JqOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgT2JqZWN0LmtleXMob2JqZWN0RGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBzZXQob2JqLCBrZXksIGAke29iamVjdERhdGFba2V5XX0keytpbmRleCArIDF9YCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG9iajtcbiAgfSk7XG5cbiAgY29uc3QgbGlzdFNlcnZpY2UgPSByZXR1cm5MaXN0T2JqZWN0KGRhdGEpO1xuICBjb25zdCBkZXRhaWxTZXJ2aWNlID0gcmV0dXJuRGV0YWlsT2JqZWN0KGh0dHBQYXJhbXNEZXRhaWwsIGRhdGEsIHVuZGVmaW5lZCwgZmFsc2UsICc7Jyk7XG4gIHJldHVybiB7XG4gICAgbGlzdDogbGlzdFNlcnZpY2UubGlzdFBhZ2luZyxcbiAgICBkZXRhaWxCeURhdGE6IGRldGFpbFNlcnZpY2UuZGV0YWlsQnlEYXRhLFxuICB9O1xufTtcblxuLyoqXG4gKiBIw6BtIHBow6JuIHRyYW5nIGThu68gbGnhu4d1IHThu6sgbeG7mXQgbeG6o25nXG4gKiBAcGFyYW0gZGF0YSAtIE3huqNuZyBk4buvIGxp4buHdSBj4bqnbiBwaMOibiB0cmFuZ1xuICogQHBhcmFtIHBhZ2UgLSBT4buRIHRyYW5nIGhp4buHbiB04bqhaSAoYuG6r3QgxJHhuqd1IHThu6sgMSlcbiAqIEBwYXJhbSBwZXJfcGFnZSAtIFPhu5EgbMaw4bujbmcgaXRlbSB0csOqbiBt4buXaSB0cmFuZ1xuICogQHJldHVybnMgxJDhu5FpIHTGsOG7o25nIGNo4bupYSBk4buvIGxp4buHdSDEkcOjIHBow6JuIHRyYW5nIHbDoCB0aMO0bmcgdGluIHBow6JuIHRyYW5nXG4gKi9cbmV4cG9ydCBjb25zdCBwYWdpbmdUb0xpc3QgPSAoZGF0YTogQXJyYXk8YW55PiwgcGFnZTogbnVtYmVyLCBwZXJfcGFnZTogbnVtYmVyKSA9PiB7XG4gIGlmICghZGF0YSB8fCAhQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2RlOiAyMDAsXG4gICAgICBkYXRhOiBbXSxcbiAgICAgIHBhZ2luZzoge1xuICAgICAgICBwYWdlOiBwYWdlLFxuICAgICAgICBwZXJfcGFnZTogcGVyX3BhZ2UsXG4gICAgICAgIHRvdGFsX2l0ZW1zOiAwLFxuICAgICAgICB0b3RhbF9wYWdlczogMCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICBjb25zdCBzdGFydCA9IChwYWdlIC0gMSkgKiBwZXJfcGFnZTtcbiAgY29uc3QgZW5kID0gc3RhcnQgKyBwZXJfcGFnZTtcbiAgY29uc3QgdG90YWxfcGFnZXMgPSBNYXRoLmNlaWwoZGF0YS5sZW5ndGggLyBwZXJfcGFnZSk7XG4gIGNvbnN0IGRhdGFCeVBhZ2UgPSBkYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICByZXR1cm4ge1xuICAgIGNvZGU6IDIwMCxcbiAgICBkYXRhOiBkYXRhQnlQYWdlLFxuICAgIHBhZ2luZzoge1xuICAgICAgcGFnZTogcGFnZSA+IHRvdGFsX3BhZ2VzID8gdG90YWxfcGFnZXMgOiBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlcl9wYWdlLFxuICAgICAgdG90YWxfaXRlbXM6IGRhdGEubGVuZ3RoLFxuICAgICAgdG90YWxfcGFnZXM6IHRvdGFsX3BhZ2VzLFxuICAgIH0sXG4gIH07XG59O1xuIl19
@@ -107,8 +107,8 @@ export class LibsUiHttpRequestService {
107
107
  UtilsCache.ClearAsync(keyCache, true);
108
108
  }
109
109
  /**
110
- * @return trả về trạng thái đã load hết item chưa (ví dụ: dựa vào tham số này để quyết định có tiếp tục gọi api khi scroll ko) .
111
- */
110
+ * @return trả về trạng thái đã load hết item chưa (ví dụ: dựa vào tham số này để quyết định có tiếp tục gọi api khi scroll ko) .
111
+ */
112
112
  updateArguments(argumentsValue, objectGetDataUpdate, pagingStore, keySearch, searchOnline, loadedLastItem, guideAutoUpdateArgumentsValue) {
113
113
  if (!argumentsValue || !(argumentsValue instanceof Array) || loadedLastItem) {
114
114
  return true;
@@ -131,7 +131,7 @@ export class LibsUiHttpRequestService {
131
131
  this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, sortOrderType);
132
132
  }
133
133
  if (other && other.length) {
134
- other.forEach(config => this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, config));
134
+ other.forEach((config) => this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, config));
135
135
  }
136
136
  if (detailById) {
137
137
  detailById.fieldGetValue = detailById.fieldGetValue || detailById.fieldGetValue.trim() || 'key';
@@ -147,7 +147,7 @@ export class LibsUiHttpRequestService {
147
147
  };
148
148
  const valuePage = +this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, page);
149
149
  const valueLastPage = +get(objectGetDataUpdate, 'paging.total_pages');
150
- if (valuePage && Number(valuePage).valueOf() > Number(valueLastPage).valueOf() || valueLastPage === 0) {
150
+ if ((valuePage && Number(valuePage).valueOf() > Number(valueLastPage).valueOf()) || valueLastPage === 0) {
151
151
  return true;
152
152
  }
153
153
  }
@@ -192,7 +192,7 @@ export class LibsUiHttpRequestService {
192
192
  if (!pagingStore || pageValue === undefined) {
193
193
  break;
194
194
  }
195
- const { page, total_pages, } = pagingStore;
195
+ const { page, total_pages } = pagingStore;
196
196
  const nextPage = (page || 0) + 1;
197
197
  if (nextPage && Number(nextPage).valueOf() > Number(total_pages).valueOf()) {
198
198
  return true;
@@ -226,7 +226,7 @@ export class LibsUiHttpRequestService {
226
226
  if (fieldUpdate) {
227
227
  let resultOfFieldUpdate = get(argumentsValue, fieldUpdate);
228
228
  if (resultOfFieldUpdate instanceof HttpParams) {
229
- resultOfFieldUpdate = resultOfFieldUpdate.set((config.subFieldUpdate || 'search'), value);
229
+ resultOfFieldUpdate = resultOfFieldUpdate.set(config.subFieldUpdate || 'search', value);
230
230
  set(argumentsValue, fieldUpdate, resultOfFieldUpdate);
231
231
  return value;
232
232
  }
@@ -250,8 +250,8 @@ export class LibsUiHttpRequestService {
250
250
  total_pages: 1,
251
251
  before: '',
252
252
  after: '',
253
- fake: true
254
- }
253
+ fake: true,
254
+ },
255
255
  };
256
256
  }
257
257
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiHttpRequestService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -263,4 +263,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
263
263
  providedIn: 'root',
264
264
  }]
265
265
  }], ctorParameters: () => [] });
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaHR0cC1yZXF1ZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLHdCQUF3QixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU1yQyxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLGdDQUFnQztJQUN4QixZQUFZLENBQW1CO0lBQ3ZDLHVDQUF1QztJQUMvQixjQUFjLEdBQXdCLEVBQUUsQ0FBQztJQUVqRCw0Q0FBNEM7SUFDcEMsa0JBQWtCLEdBQXdCLEVBQUUsQ0FBQztJQUVyRDtRQUNFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyxjQUFjLENBQUMsYUFBa0M7UUFDMUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLGFBQWEsRUFBRSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFXLGtCQUFrQixDQUFDLGtCQUF1QztRQUNuRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLGtCQUFrQixFQUFFLENBQUM7SUFDbEYsQ0FBQztJQUVPLGdCQUFnQixDQUFDLElBQVk7UUFDbkMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUs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QUM7SUFFTSxxQkFBcUI7UUFDMUIsT0FBTztZQUNMLE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsQ0FBQztnQkFDUCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxNQUFNLEVBQUUsRUFBRTtnQkFDVixLQUFLLEVBQUUsRUFBRTtnQkFDVCxJQUFJLEVBQUUsSUFBSTthQUNYO1NBQ0YsQ0FBQztJQUNKLENBQUM7d0dBclRVLHdCQUF3Qjs0R0FBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVBhZ2luZyB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgVXRpbHNDYWNoZSwgZ2V0LCBnZXRLZXlDYWNoZUJ5QXJyYXlPYmplY3QsIGlzRW1wdHksIHNldCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSwgSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlQ29uZmlnLCBJSHR0cFJlcXVlc3RDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvaW5kZXgnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpSHR0cFJlcXVlc3RTZXJ2aWNlIHtcbiAgLyoqIENo4bupYSBk4buvIGxp4buHdSBjYWNoZSBtZW1vcnkgKi9cbiAgcHJpdmF0ZSBzZXJ2aWNlU3RvcmU6IE1hcDxzdHJpbmcsIGFueT47XG4gIC8qKiBDaOG7qWEgY8OhYyBzZXJ2aWNlIGNvbW1vbiBiYXNlIGFwaSAqL1xuICBwcml2YXRlIHNlcnZpY2VzQ29tbW9uOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbiAgLyoqIENo4bupYSBjw6FjIHNlcnZpY2UgY2FsbCBhcGkgxJHhur9uIGJhY2tlbmQgKi9cbiAgcHJpdmF0ZSBzZXJ2aWNlc0FwaU1vZHVsZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNlcnZpY2VTdG9yZSA9IG5ldyBNYXAoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgU2VydmljZXNDb21tb24oc2VydmljZUNvbW1vbjogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHRoaXMuc2VydmljZXNDb21tb24gPSB7IC4uLnRoaXMuc2VydmljZXNDb21tb24sIC4uLnNlcnZpY2VDb21tb24gfTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgU2VydmljZXNBcGlNb2R1bGVzKHNlcnZpY2VzQXBpTW9kdWxlczogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHRoaXMuc2VydmljZXNBcGlNb2R1bGVzID0geyAuLi50aGlzLnNlcnZpY2VzQXBpTW9kdWxlcywgLi4uc2VydmljZXNBcGlNb2R1bGVzIH07XG4gIH1cblxuICBwcml2YXRlIGdldFNlcnZpY2VCeU5hbWUobmFtZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFuYW1lIHx8ICFuYW1lLnRyaW0oKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgnY29tbW9uJykpIHtcblxuICAgICAgaWYgKCF0aGlzLnNlcnZpY2VzQ29tbW9uKSB7XG4gICAgICAgIHRocm93ICdzZXJ2aWNlIGNvbW1vbiBpcyBFbXB0eSwgcGxlYXNlIGluamVjdCBNb0xpYnNDb3JlVUlIdHRwUmVxdWVzdFNlcnZpY2UgYW5kIGNhbGwgU2VydmljZXNDb21tb24gdXBkYXRlIDEnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlc0NvbW1vbltuYW1lXTtcbiAgICB9XG5cbiAgICBpZiAobmFtZS5zdGFydHNXaXRoKCdhcGlNb2R1bGUnKSkge1xuICAgICAgaWYgKCF0aGlzLnNlcnZpY2VzQXBpTW9kdWxlcykge1xuICAgICAgICB0aHJvdyAnc2VydmljZSBtb2R1bGUgaXMgRW1wdHksIHBsZWFzZSBpbmplY3QgTW9MaWJzQ29yZVVJSHR0cFJlcXVlc3RTZXJ2aWNlIGFuZCBjYWxsIHNlcnZpY2VzTW9kdWxlcyB1cGRhdGUgMic7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VzQXBpTW9kdWxlc1tuYW1lXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2hBbGxTZXJ2aWNlKCkge1xuICAgIGlmICghdGhpcy5zZXJ2aWNlc0FwaU1vZHVsZXMpIHtcbiAgICAgIHRocm93ICdzZXJ2aWNlIGNvbW1vbiBpcyBFbXB0eSwgcGxlYXNlIGluamVjdCBNb0xpYnNDb3JlVUlIdHRwUmVxdWVzdFNlcnZpY2UgYW5kIGNhbGwgc2VydmljZXNNb2R1bGVzIHVwZGF0ZSAzJztcbiAgICB9XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLnNlcnZpY2VzQXBpTW9kdWxlcykuZm9yRWFjaCgobmFtZVNlcnZpY2U6IHN0cmluZykgPT4gKHRoaXMuc2VydmljZXNBcGlNb2R1bGVzIGFzIGFueSlbbmFtZVNlcnZpY2VdLnJlZnJlc2hBUElVcmwgJiYgKHRoaXMuc2VydmljZXNBcGlNb2R1bGVzIGFzIGFueSlbbmFtZVNlcnZpY2VdLnJlZnJlc2hBUElVcmwoKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2FsbEFwaTxUID0gYW55PihodHRwUmVxdWVzdENvbmZpZzogSUh0dHBSZXF1ZXN0Q29uZmlnKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCFodHRwUmVxdWVzdENvbmZpZyB8fCAoIWh0dHBSZXF1ZXN0Q29uZmlnLnNlcnZpY2VOYW1lICYmICFodHRwUmVxdWVzdENvbmZpZy5zZXJ2aWNlT3RoZXIpIHx8ICFodHRwUmVxdWVzdENvbmZpZy5mdW5jdGlvbk5hbWUpIHtcbiAgICAgIHRocm93ICdodHRwIHJlcXVlc3QgY29uZmlnIG5vdCBleGFjdGx5IGh0dHBSZXF1ZXN0Q29uZmlnJztcbiAgICB9XG4gICAgY29uc3QgeyBzZXJ2aWNlTmFtZSwgc2VydmljZU90aGVyLCBrZXlDYWNoZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudHNWYWx1ZSB9ID0gaHR0cFJlcXVlc3RDb25maWc7XG5cbiAgICBpZiAoIXNlcnZpY2VPdGhlciAmJiAoIXNlcnZpY2VOYW1lIHx8ICFzZXJ2aWNlTmFtZS50cmltKCkpKSB7XG4gICAgICB0aHJvdyBgaHR0cCByZXF1ZXN0IGNvbmZpZyBub3QgZXhhY3RseSBzZXJ2aWNlT3RoZXIgb3Igc2VydmljZU5hbWVgO1xuICAgIH1cbiAgICBjb25zdCBzZXJ2aWNlSW5zdGFuY2U6IGFueSA9IHRoaXMuZ2V0U2VydmljZUJ5TmFtZShzZXJ2aWNlTmFtZSB8fCAnJykgfHwgc2VydmljZU90aGVyO1xuXG4gICAgaWYgKCFzZXJ2aWNlSW5zdGFuY2UpIHtcbiAgICAgIHRocm93IGBodHRwIHJlcXVlc3Qgbm90Zm91bmQgc2VydmljZUluc3RhbmNlIG5hbWU6ICR7c2VydmljZU5hbWV9YDtcbiAgICB9XG4gICAgY29uc3QgbWV0aG9kSW5zdGFuY2UgPSBzZXJ2aWNlSW5zdGFuY2VbZnVuY3Rpb25OYW1lXTtcblxuICAgIGlmICghbWV0aG9kSW5zdGFuY2UpIHtcbiAgICAgIHRocm93IGBodHRwIHJlcXVlc3QgY29uZmlnIG5vdGZvdW5kIG1ldGhvZEluc3RhbmNlIG5hbWU6ICR7ZnVuY3Rpb25OYW1lfWA7XG4gICAgfVxuICAgIGNvbnN0IGtleUNhY2hlTUQ1OiBzdHJpbmcgPSBnZXRLZXlDYWNoZUJ5QXJyYXlPYmplY3Qoa2V5Q2FjaGUgfHwgJycsIGFyZ3VtZW50c1ZhbHVlKTtcbiAgICBjb25zdCBjYWNoZURhdGEgPSBhd2FpdCB0aGlzLmdldENhY2hlRGF0YShodHRwUmVxdWVzdENvbmZpZywga2V5Q2FjaGVNRDUpO1xuXG4gICAgaWYgKGNhY2hlRGF0YSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjYWNoZURhdGEpO1xuICAgIH1cblxuICAgIGxldCBjYWxsUmVzcG9uc2UgPSBtZXRob2RJbnN0YW5jZS5hcHBseShzZXJ2aWNlSW5zdGFuY2UsIGFyZ3VtZW50c1ZhbHVlKTtcbiAgICBpZiAoIWNhbGxSZXNwb25zZS50aGVuKSB7XG4gICAgICBjYWxsUmVzcG9uc2UgPSBsYXN0VmFsdWVGcm9tKGNhbGxSZXNwb25zZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgY2FsbFJlc3BvbnNlO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2V0Q2FjaGVEYXRhKHJlcywgaHR0cFJlcXVlc3RDb25maWcsIGtleUNhY2hlTUQ1KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q2FjaGVEYXRhKGh0dHBSZXF1ZXN0Q29uZmlnOiBJSHR0cFJlcXVlc3RDb25maWcsIGtleUNhY2hlOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IGNhY2hlVHlwZSwgY29udmVydFJlc3BvbnNlRGF0YSB9ID0gaHR0cFJlcXVlc3RDb25maWc7XG5cbiAgICBpZiAoIWNhY2hlVHlwZSB8fCAha2V5Q2FjaGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChjYWNoZVR5cGUgPT09ICdzZXJ2aWNlJykge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuc2VydmljZVN0b3JlLmdldChrZXlDYWNoZSk7XG5cbiAgICAgIHJldHVybiBkYXRhID8gKGNvbnZlcnRSZXNwb25zZURhdGEgPyBjb252ZXJ0UmVzcG9uc2VEYXRhKGRhdGEpIDogZGF0YSkgOiBkYXRhO1xuICAgIH1cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgVXRpbHNDYWNoZS5HZXRBc3luYyhrZXlDYWNoZSwgdW5kZWZpbmVkLCB0cnVlKTtcblxuICAgIHJldHVybiBkYXRhID8gKGNvbnZlcnRSZXNwb25zZURhdGEgPyBjb252ZXJ0UmVzcG9uc2VEYXRhKGRhdGEpIDogZGF0YSkgOiBkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRDYWNoZURhdGEoZGF0YTogYW55LCBodHRwUmVxdWVzdENvbmZpZzogSUh0dHBSZXF1ZXN0Q29uZmlnLCBrZXlDYWNoZTogc3RyaW5nKSB7XG4gICAgY29uc3QgeyBjYWNoZVR5cGUsIGNsZWFyQ2FjaGUsIGNvbnZlcnRSZXNwb25zZURhdGEgfSA9IGh0dHBSZXF1ZXN0Q29uZmlnO1xuXG4gICAgaWYgKCFjYWNoZVR5cGUgfHwgIWtleUNhY2hlKSB7XG4gICAgICByZXR1cm4gY29udmVydFJlc3BvbnNlRGF0YSA/IGNvbnZlcnRSZXNwb25zZURhdGEoZGF0YSkgOiBkYXRhO1xuICAgIH1cbiAgICBpZiAoY2xlYXJDYWNoZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5jbGVhckNhY2hlKGNhY2hlVHlwZSwga2V5Q2FjaGUpO1xuICAgIH1cbiAgICBpZiAoY2FjaGVUeXBlID09PSAnc2VydmljZScpIHtcbiAgICAgIHRoaXMuc2VydmljZVN0b3JlLnNldChrZXlDYWNoZSwgZGF0YSk7XG5cbiAgICAgIHJldHVybiBjb252ZXJ0UmVzcG9uc2VEYXRhID8gY29udmVydFJlc3BvbnNlRGF0YShkYXRhKSA6IGRhdGE7XG4gICAgfVxuICAgIGF3YWl0IFV0aWxzQ2FjaGUuU2V0QXN5bmMoa2V5Q2FjaGUsIGRhdGEsIChodHRwUmVxdWVzdENvbmZpZy50aW1lQ2FjaGUgfHwgNSkgKiA2MCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gY29udmVydFJlc3BvbnNlRGF0YSA/IGNvbnZlcnRSZXNwb25zZURhdGEoZGF0YSkgOiBkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckNhY2hlKGNhY2hlVHlwZTogJ3NlcnZpY2UnIHwgJ2xvY2FsLXN0b3JlJywga2V5Q2FjaGU6IHN0cmluZykge1xuICAgIGlmIChjYWNoZVR5cGUgPT09ICdzZXJ2aWNlJykge1xuICAgICAgdGhpcy5zZXJ2aWNlU3RvcmUuZGVsZXRlKGtleUNhY2hlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBVdGlsc0NhY2hlLkNsZWFyQXN5bmMoa2V5Q2FjaGUsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICogQHJldHVybiB0cuG6oyB24buBIHRy4bqhbmcgdGjDoWkgxJHDoyBsb2FkIGjhur90IGl0ZW0gY2jGsGEgKHbDrSBk4bulOiBk4buxYSB2w6BvIHRoYW0gc+G7kSBuw6B5IMSR4buDIHF1eeG6v3QgxJHhu4tuaCBjw7MgdGnhur9wIHThu6VjIGfhu41pIGFwaSBraGkgc2Nyb2xsIGtvKSAuXG4gICovXG4gIHB1YmxpYyB1cGRhdGVBcmd1bWVudHMoYXJndW1lbnRzVmFsdWU6IEFycmF5PGFueT4sIG9iamVjdEdldERhdGFVcGRhdGU6IFJlY29yZDxzdHJpbmcsIGFueT4sIHBhZ2luZ1N0b3JlOiBJUGFnaW5nLCBrZXlTZWFyY2g6IHN0cmluZywgc2VhcmNoT25saW5lOiBib29sZWFuLCBsb2FkZWRMYXN0SXRlbTogYm9vbGVhbiwgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWU/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUpOiBib29sZWFuIHtcbiAgICBpZiAoIWFyZ3VtZW50c1ZhbHVlIHx8ICEoYXJndW1lbnRzVmFsdWUgaW5zdGFuY2VvZiBBcnJheSkgfHwgbG9hZGVkTGFzdEl0ZW0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUFyZ3VtZW50c0RlZmF1bHQoYXJndW1lbnRzVmFsdWUsIHRydWUsIHBhZ2luZ1N0b3JlLCBrZXlTZWFyY2gsIHNlYXJjaE9ubGluZSk7XG4gICAgfVxuICAgIGNvbnN0IHsgcGFnaW5nLCBzZWFyY2gsIG90aGVyLCBkZXRhaWxCeUlkLCBzb3J0T3JkZXJUeXBlLCBzb3J0T3JkZXJCeSB9ID0gZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWU7XG5cbiAgICBpZiAoc2VhcmNoKSB7XG4gICAgICBzZWFyY2guZmllbGRHZXRWYWx1ZSA9ICdrZXlTZWFyY2gnO1xuICAgICAgdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgeyBrZXlTZWFyY2ggfSwgc2VhcmNoKTtcbiAgICB9XG4gICAgaWYgKG9iamVjdEdldERhdGFVcGRhdGU/Llsnc3RvcmVQYXJhbXNDYWxsQXBpJ10gJiYgdHlwZW9mIG9iamVjdEdldERhdGFVcGRhdGU/Llsnc3RvcmVQYXJhbXNDYWxsQXBpJ10gPT09ICdvYmplY3QnICYmICEob2JqZWN0R2V0RGF0YVVwZGF0ZT8uWydzdG9yZVBhcmFtc0NhbGxBcGknXSBhcyBhbnkpLmluc3RhbmNlU29ydCkge1xuICAgICAgb2JqZWN0R2V0RGF0YVVwZGF0ZVsnc3RvcmVQYXJhbXNDYWxsQXBpJ10gPSB7IC4uLm9iamVjdEdldERhdGFVcGRhdGVbJ3N0b3JlUGFyYW1zQ2FsbEFwaSddLCBpbnN0YW5jZVNvcnQ6IHt9IH07XG4gICAgfVxuICAgIGlmIChzb3J0T3JkZXJCeSkge1xuICAgICAgdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgc29ydE9yZGVyQnkpO1xuICAgIH1cbiAgICBpZiAoc29ydE9yZGVyVHlwZSkge1xuICAgICAgdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgc29ydE9yZGVyVHlwZSk7XG4gICAgfVxuICAgIGlmIChvdGhlciAmJiBvdGhlci5sZW5ndGgpIHtcbiAgICAgIG90aGVyLmZvckVhY2goY29uZmlnID0+IHRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIGNvbmZpZykpO1xuICAgIH1cbiAgICBpZiAoZGV0YWlsQnlJZCkge1xuICAgICAgZGV0YWlsQnlJZC5maWVsZEdldFZhbHVlID0gZGV0YWlsQnlJZC5maWVsZEdldFZhbHVlIHx8IGRldGFpbEJ5SWQuZmllbGRHZXRWYWx1ZS50cmltKCkgfHwgJ2tleSc7XG4gICAgICB0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBkZXRhaWxCeUlkKTtcbiAgICB9XG5cbiAgICBpZiAoaXNFbXB0eShwYWdpbmcpKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVBcmd1bWVudHNEZWZhdWx0KGFyZ3VtZW50c1ZhbHVlLCBmYWxzZSwgcGFnaW5nU3RvcmUgfHwgdGhpcy5mYWtlUmVzcG9uc2VQYWdpbmdBcGkoKVsncGFnaW5nJ10sIGtleVNlYXJjaCwgc2VhcmNoT25saW5lKTtcbiAgICB9XG4gICAgY29uc3QgeyBwYWdlLCBiZWZvcmUsIGFmdGVyIH0gPSBwYWdpbmc7XG5cbiAgICBpZiAocGFnZSAmJiBvYmplY3RHZXREYXRhVXBkYXRlKSB7XG4gICAgICBwYWdlLnByZXByb2Nlc3NvciA9ICh2YWx1ZTogbnVtYmVyKTogbnVtYmVyID0+IHtcblxuICAgICAgICByZXR1cm4gKyt2YWx1ZTtcbiAgICAgIH07XG4gICAgICBjb25zdCB2YWx1ZVBhZ2UgPSArdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgcGFnZSk7XG4gICAgICBjb25zdCB2YWx1ZUxhc3RQYWdlID0gK2dldChvYmplY3RHZXREYXRhVXBkYXRlIGFzIGFueSwgJ3BhZ2luZy50b3RhbF9wYWdlcycpO1xuXG4gICAgICBpZiAodmFsdWVQYWdlICYmIE51bWJlcih2YWx1ZVBhZ2UpLnZhbHVlT2YoKSA+IE51bWJlcih2YWx1ZUxhc3RQYWdlKS52YWx1ZU9mKCkgfHwgdmFsdWVMYXN0UGFnZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGJlZm9yZSAmJiBvYmplY3RHZXREYXRhVXBkYXRlICYmICF0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBiZWZvcmUpICYmICFnZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSwgJ3BhZ2luZy5mYWtlJykpIHtcbiAgICAgIHNldChvYmplY3RHZXREYXRhVXBkYXRlLCAncGFnaW5nLmZha2UnLCBmYWxzZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoYWZ0ZXIgJiYgb2JqZWN0R2V0RGF0YVVwZGF0ZSAmJiAhdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgYWZ0ZXIpICYmICFnZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSwgJ3BhZ2luZy5mYWtlJykpIHtcbiAgICAgIHNldChvYmplY3RHZXREYXRhVXBkYXRlLCAncGFnaW5nLmZha2UnLCBmYWxzZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghYXJndW1lbnRzVmFsdWUgfHwgIWFyZ3VtZW50c1ZhbHVlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBcmd1bWVudHNEZWZhdWx0KGFyZ3VtZW50c1ZhbHVlOiBBcnJheTxhbnk+LCB1cGRhdGVTZWFyY2g6IGJvb2xlYW4sIHBhZ2luZ1N0b3JlOiBJUGFnaW5nLCBrZXlTZWFyY2g6IHN0cmluZywgc2VhcmNoT25saW5lOiBib29sZWFuKSB7XG4gICAgaWYgKCFhcmd1bWVudHNWYWx1ZSB8fCAhYXJndW1lbnRzVmFsdWUubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGluZGV4IGluIGFyZ3VtZW50c1ZhbHVlKSB7XG4gICAgICBsZXQgYXJndW1lbnRWYWx1ZSA9IGFyZ3VtZW50c1ZhbHVlW2luZGV4XTtcblxuICAgICAgaWYgKCEoYXJndW1lbnRWYWx1ZSBpbnN0YW5jZW9mIEh0dHBQYXJhbXMpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFnZVZhbHVlID0gYXJndW1lbnRWYWx1ZS5nZXQoJ3BhZ2UnKTtcblxuICAgICAgaWYgKHNlYXJjaE9ubGluZSAmJiB1cGRhdGVTZWFyY2gpIHtcbiAgICAgICAgYXJndW1lbnRWYWx1ZSA9IGFyZ3VtZW50VmFsdWUuc2V0KCdzZWFyY2gnLCBrZXlTZWFyY2gpO1xuICAgICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3VtZW50VmFsdWUuaGFzKCdiZWZvcmUnKSkge1xuICAgICAgICBhcmd1bWVudFZhbHVlID0gYXJndW1lbnRWYWx1ZS5zZXQoJ2JlZm9yZScsIHBhZ2luZ1N0b3JlPy5iZWZvcmUpO1xuICAgICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3VtZW50VmFsdWUuaGFzKCdhZnRlcicpKSB7XG4gICAgICAgIGFyZ3VtZW50VmFsdWUgPSBhcmd1bWVudFZhbHVlLnNldCgnYWZ0ZXInLCBwYWdpbmdTdG9yZT8uYWZ0ZXIpO1xuICAgICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKE51bWJlcihwYWdlVmFsdWUpLnZhbHVlT2YoKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoIXBhZ2luZ1N0b3JlIHx8IHBhZ2VWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHBhZ2UsIHRvdGFsX3BhZ2VzLCB9ID0gcGFnaW5nU3RvcmU7XG4gICAgICBjb25zdCBuZXh0UGFnZSA9IChwYWdlIHx8IDApICsgMTtcblxuICAgICAgaWYgKG5leHRQYWdlICYmIE51bWJlcihuZXh0UGFnZSkudmFsdWVPZigpID4gTnVtYmVyKHRvdGFsX3BhZ2VzKS52YWx1ZU9mKCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlLnNldCgncGFnZScsIG5leHRQYWdlKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZTogQXJyYXk8YW55Piwgb2JqZWN0R2V0RGF0YVVwZGF0ZTogYW55LCBjb25maWc6IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZykge1xuICAgIGlmICghY29uZmlnIHx8ICFvYmplY3RHZXREYXRhVXBkYXRlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmxvZz8ubG9nSW5wdXRzKSB7XG4gICAgICBjb25zb2xlLmxvZygnY29uZmlnJywgY29uZmlnKTtcbiAgICAgIGNvbnNvbGUubG9nKCdvYmplY3RHZXREYXRhVXBkYXRlJywgb2JqZWN0R2V0RGF0YVVwZGF0ZSk7XG4gICAgICBjb25zb2xlLmxvZygnYXJndW1lbnRzVmFsdWUnLCBhcmd1bWVudHNWYWx1ZSk7XG4gICAgICBjb25zb2xlLmxvZygnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKTtcbiAgICB9XG4gICAgY29uc3QgeyBmaWVsZFVwZGF0ZSwgZmllbGRHZXRWYWx1ZSwgcHJlcHJvY2Vzc29yIH0gPSBjb25maWc7XG5cbiAgICBpZiAoIWZpZWxkVXBkYXRlIHx8ICFmaWVsZEdldFZhbHVlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCB2YWx1ZSA9IGdldChvYmplY3RHZXREYXRhVXBkYXRlLCBmaWVsZEdldFZhbHVlKTtcbiAgICBpZiAoY29uZmlnLmxvZz8ubG9nR2V0VmFsdWUpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB2YWx1ZSBvZiBvYmplY3RHZXREYXRhVXBkYXRlWyR7ZmllbGRHZXRWYWx1ZX1dOiBgLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHByZXByb2Nlc3Nvcikge1xuICAgICAgdmFsdWUgPSBwcmVwcm9jZXNzb3IodmFsdWUpO1xuICAgIH1cbiAgICBpZiAoZmllbGRVcGRhdGUpIHtcbiAgICAgIGxldCByZXN1bHRPZkZpZWxkVXBkYXRlID0gZ2V0KGFyZ3VtZW50c1ZhbHVlLCBmaWVsZFVwZGF0ZSk7XG5cbiAgICAgIGlmIChyZXN1bHRPZkZpZWxkVXBkYXRlIGluc3RhbmNlb2YgSHR0cFBhcmFtcykge1xuICAgICAgICByZXN1bHRPZkZpZWxkVXBkYXRlID0gcmVzdWx0T2ZGaWVsZFVwZGF0ZS5zZXQoKGNvbmZpZy5zdWJGaWVsZFVwZGF0ZSB8fCAnc2VhcmNoJyksIHZhbHVlKTtcbiAgICAgICAgc2V0KGFyZ3VtZW50c1ZhbHVlLCBmaWVsZFVwZGF0ZSwgcmVzdWx0T2ZGaWVsZFVwZGF0ZSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdE9mRmllbGRVcGRhdGUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXN1bHRPZkZpZWxkVXBkYXRlLnB1c2godmFsdWUpO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHRPZkZpZWxkVXBkYXRlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgIHNldChyZXN1bHRPZkZpZWxkVXBkYXRlLCBjb25maWcuc3ViRmllbGRVcGRhdGUgfHwgJ3NlYXJjaCcsIHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBzZXQoYXJndW1lbnRzVmFsdWUsIGZpZWxkVXBkYXRlLCB2YWx1ZSk7XG5cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZmFrZVJlc3BvbnNlUGFnaW5nQXBpKCk6IHsgcGFnaW5nOiBJUGFnaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBwYWdpbmc6IHtcbiAgICAgICAgcGFnZTogMCxcbiAgICAgICAgdG90YWxfcGFnZXM6IDEsXG4gICAgICAgIGJlZm9yZTogJycsXG4gICAgICAgIGFmdGVyOiAnJyxcbiAgICAgICAgZmFrZTogdHJ1ZVxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaHR0cC1yZXF1ZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLHdCQUF3QixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU1yQyxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLGdDQUFnQztJQUN4QixZQUFZLENBQW1CO0lBQ3ZDLHVDQUF1QztJQUMvQixjQUFjLEdBQXdCLEVBQUUsQ0FBQztJQUVqRCw0Q0FBNEM7SUFDcEMsa0JBQWtCLEdBQXdCLEVBQUUsQ0FBQztJQUVyRDtRQUNFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyxjQUFjLENBQUMsYUFBa0M7UUFDMUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLGFBQWEsRUFBRSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFXLGtCQUFrQixDQUFDLGtCQUF1QztRQUNuRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLGtCQUFrQixFQUFFLENBQUM7SUFDbEYsQ0FBQztJQUVPLGdCQUFnQixDQUFDLElBQVk7UUFDbkMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUs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QUssQ0FBQztJQUNmLENBQUM7SUFFTSxxQkFBcUI7UUFDMUIsT0FBTztZQUNMLE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsQ0FBQztnQkFDUCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxNQUFNLEVBQUUsRUFBRTtnQkFDVixLQUFLLEVBQUUsRUFBRTtnQkFDVCxJQUFJLEVBQUUsSUFBSTthQUNYO1NBQ0YsQ0FBQztJQUNKLENBQUM7d0dBMVRVLHdCQUF3Qjs0R0FBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVBhZ2luZyB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgVXRpbHNDYWNoZSwgZ2V0LCBnZXRLZXlDYWNoZUJ5QXJyYXlPYmplY3QsIGlzRW1wdHksIHNldCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSwgSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlQ29uZmlnLCBJSHR0cFJlcXVlc3RDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvaW5kZXgnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpSHR0cFJlcXVlc3RTZXJ2aWNlIHtcbiAgLyoqIENo4bupYSBk4buvIGxp4buHdSBjYWNoZSBtZW1vcnkgKi9cbiAgcHJpdmF0ZSBzZXJ2aWNlU3RvcmU6IE1hcDxzdHJpbmcsIGFueT47XG4gIC8qKiBDaOG7qWEgY8OhYyBzZXJ2aWNlIGNvbW1vbiBiYXNlIGFwaSAqL1xuICBwcml2YXRlIHNlcnZpY2VzQ29tbW9uOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbiAgLyoqIENo4bupYSBjw6FjIHNlcnZpY2UgY2FsbCBhcGkgxJHhur9uIGJhY2tlbmQgKi9cbiAgcHJpdmF0ZSBzZXJ2aWNlc0FwaU1vZHVsZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNlcnZpY2VTdG9yZSA9IG5ldyBNYXAoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgU2VydmljZXNDb21tb24oc2VydmljZUNvbW1vbjogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHRoaXMuc2VydmljZXNDb21tb24gPSB7IC4uLnRoaXMuc2VydmljZXNDb21tb24sIC4uLnNlcnZpY2VDb21tb24gfTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgU2VydmljZXNBcGlNb2R1bGVzKHNlcnZpY2VzQXBpTW9kdWxlczogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHRoaXMuc2VydmljZXNBcGlNb2R1bGVzID0geyAuLi50aGlzLnNlcnZpY2VzQXBpTW9kdWxlcywgLi4uc2VydmljZXNBcGlNb2R1bGVzIH07XG4gIH1cblxuICBwcml2YXRlIGdldFNlcnZpY2VCeU5hbWUobmFtZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFuYW1lIHx8ICFuYW1lLnRyaW0oKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgnY29tbW9uJykpIHtcbiAgICAgIGlmICghdGhpcy5zZXJ2aWNlc0NvbW1vbikge1xuICAgICAgICB0aHJvdyAnc2VydmljZSBjb21tb24gaXMgRW1wdHksIHBsZWFzZSBpbmplY3QgTW9MaWJzQ29yZVVJSHR0cFJlcXVlc3RTZXJ2aWNlIGFuZCBjYWxsIFNlcnZpY2VzQ29tbW9uIHVwZGF0ZSAxJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuc2VydmljZXNDb21tb25bbmFtZV07XG4gICAgfVxuXG4gICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgnYXBpTW9kdWxlJykpIHtcbiAgICAgIGlmICghdGhpcy5zZXJ2aWNlc0FwaU1vZHVsZXMpIHtcbiAgICAgICAgdGhyb3cgJ3NlcnZpY2UgbW9kdWxlIGlzIEVtcHR5LCBwbGVhc2UgaW5qZWN0IE1vTGlic0NvcmVVSUh0dHBSZXF1ZXN0U2VydmljZSBhbmQgY2FsbCBzZXJ2aWNlc01vZHVsZXMgdXBkYXRlIDInO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlc0FwaU1vZHVsZXNbbmFtZV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoQWxsU2VydmljZSgpIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZXNBcGlNb2R1bGVzKSB7XG4gICAgICB0aHJvdyAnc2VydmljZSBjb21tb24gaXMgRW1wdHksIHBsZWFzZSBpbmplY3QgTW9MaWJzQ29yZVVJSHR0cFJlcXVlc3RTZXJ2aWNlIGFuZCBjYWxsIHNlcnZpY2VzTW9kdWxlcyB1cGRhdGUgMyc7XG4gICAgfVxuXG4gICAgT2JqZWN0LmtleXModGhpcy5zZXJ2aWNlc0FwaU1vZHVsZXMpLmZvckVhY2goKG5hbWVTZXJ2aWNlOiBzdHJpbmcpID0+ICh0aGlzLnNlcnZpY2VzQXBpTW9kdWxlcyBhcyBhbnkpW25hbWVTZXJ2aWNlXS5yZWZyZXNoQVBJVXJsICYmICh0aGlzLnNlcnZpY2VzQXBpTW9kdWxlcyBhcyBhbnkpW25hbWVTZXJ2aWNlXS5yZWZyZXNoQVBJVXJsKCkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNhbGxBcGk8VCA9IGFueT4oaHR0cFJlcXVlc3RDb25maWc6IElIdHRwUmVxdWVzdENvbmZpZyk6IFByb21pc2U8VD4ge1xuICAgIGlmICghaHR0cFJlcXVlc3RDb25maWcgfHwgKCFodHRwUmVxdWVzdENvbmZpZy5zZXJ2aWNlTmFtZSAmJiAhaHR0cFJlcXVlc3RDb25maWcuc2VydmljZU90aGVyKSB8fCAhaHR0cFJlcXVlc3RDb25maWcuZnVuY3Rpb25OYW1lKSB7XG4gICAgICB0aHJvdyAnaHR0cCByZXF1ZXN0IGNvbmZpZyBub3QgZXhhY3RseSBodHRwUmVxdWVzdENvbmZpZyc7XG4gICAgfVxuICAgIGNvbnN0IHsgc2VydmljZU5hbWUsIHNlcnZpY2VPdGhlciwga2V5Q2FjaGUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRzVmFsdWUgfSA9IGh0dHBSZXF1ZXN0Q29uZmlnO1xuXG4gICAgaWYgKCFzZXJ2aWNlT3RoZXIgJiYgKCFzZXJ2aWNlTmFtZSB8fCAhc2VydmljZU5hbWUudHJpbSgpKSkge1xuICAgICAgdGhyb3cgYGh0dHAgcmVxdWVzdCBjb25maWcgbm90IGV4YWN0bHkgc2VydmljZU90aGVyIG9yIHNlcnZpY2VOYW1lYDtcbiAgICB9XG4gICAgY29uc3Qgc2VydmljZUluc3RhbmNlOiBhbnkgPSB0aGlzLmdldFNlcnZpY2VCeU5hbWUoc2VydmljZU5hbWUgfHwgJycpIHx8IHNlcnZpY2VPdGhlcjtcblxuICAgIGlmICghc2VydmljZUluc3RhbmNlKSB7XG4gICAgICB0aHJvdyBgaHR0cCByZXF1ZXN0IG5vdGZvdW5kIHNlcnZpY2VJbnN0YW5jZSBuYW1lOiAke3NlcnZpY2VOYW1lfWA7XG4gICAgfVxuICAgIGNvbnN0IG1ldGhvZEluc3RhbmNlID0gc2VydmljZUluc3RhbmNlW2Z1bmN0aW9uTmFtZV07XG5cbiAgICBpZiAoIW1ldGhvZEluc3RhbmNlKSB7XG4gICAgICB0aHJvdyBgaHR0cCByZXF1ZXN0IGNvbmZpZyBub3Rmb3VuZCBtZXRob2RJbnN0YW5jZSBuYW1lOiAke2Z1bmN0aW9uTmFtZX1gO1xuICAgIH1cbiAgICBjb25zdCBrZXlDYWNoZU1ENTogc3RyaW5nID0gZ2V0S2V5Q2FjaGVCeUFycmF5T2JqZWN0KGtleUNhY2hlIHx8ICcnLCBhcmd1bWVudHNWYWx1ZSk7XG4gICAgY29uc3QgY2FjaGVEYXRhID0gYXdhaXQgdGhpcy5nZXRDYWNoZURhdGEoaHR0cFJlcXVlc3RDb25maWcsIGtleUNhY2hlTUQ1KTtcblxuICAgIGlmIChjYWNoZURhdGEpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY2FjaGVEYXRhKTtcbiAgICB9XG5cbiAgICBsZXQgY2FsbFJlc3BvbnNlID0gbWV0aG9kSW5zdGFuY2UuYXBwbHkoc2VydmljZUluc3RhbmNlLCBhcmd1bWVudHNWYWx1ZSk7XG4gICAgaWYgKCFjYWxsUmVzcG9uc2UudGhlbikge1xuICAgICAgY2FsbFJlc3BvbnNlID0gbGFzdFZhbHVlRnJvbShjYWxsUmVzcG9uc2UpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNhbGxSZXNwb25zZTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnNldENhY2hlRGF0YShyZXMsIGh0dHBSZXF1ZXN0Q29uZmlnLCBrZXlDYWNoZU1ENSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldENhY2hlRGF0YShodHRwUmVxdWVzdENvbmZpZzogSUh0dHBSZXF1ZXN0Q29uZmlnLCBrZXlDYWNoZTogc3RyaW5nKSB7XG4gICAgY29uc3QgeyBjYWNoZVR5cGUsIGNvbnZlcnRSZXNwb25zZURhdGEgfSA9IGh0dHBSZXF1ZXN0Q29uZmlnO1xuXG4gICAgaWYgKCFjYWNoZVR5cGUgfHwgIWtleUNhY2hlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoY2FjaGVUeXBlID09PSAnc2VydmljZScpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLnNlcnZpY2VTdG9yZS5nZXQoa2V5Q2FjaGUpO1xuXG4gICAgICByZXR1cm4gZGF0YSA/IChjb252ZXJ0UmVzcG9uc2VEYXRhID8gY29udmVydFJlc3BvbnNlRGF0YShkYXRhKSA6IGRhdGEpIDogZGF0YTtcbiAgICB9XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IFV0aWxzQ2FjaGUuR2V0QXN5bmMoa2V5Q2FjaGUsIHVuZGVmaW5lZCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gZGF0YSA/IChjb252ZXJ0UmVzcG9uc2VEYXRhID8gY29udmVydFJlc3BvbnNlRGF0YShkYXRhKSA6IGRhdGEpIDogZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0Q2FjaGVEYXRhKGRhdGE6IGFueSwgaHR0cFJlcXVlc3RDb25maWc6IElIdHRwUmVxdWVzdENvbmZpZywga2V5Q2FjaGU6IHN0cmluZykge1xuICAgIGNvbnN0IHsgY2FjaGVUeXBlLCBjbGVhckNhY2hlLCBjb252ZXJ0UmVzcG9uc2VEYXRhIH0gPSBodHRwUmVxdWVzdENvbmZpZztcblxuICAgIGlmICghY2FjaGVUeXBlIHx8ICFrZXlDYWNoZSkge1xuICAgICAgcmV0dXJuIGNvbnZlcnRSZXNwb25zZURhdGEgPyBjb252ZXJ0UmVzcG9uc2VEYXRhKGRhdGEpIDogZGF0YTtcbiAgICB9XG4gICAgaWYgKGNsZWFyQ2FjaGUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuY2xlYXJDYWNoZShjYWNoZVR5cGUsIGtleUNhY2hlKTtcbiAgICB9XG4gICAgaWYgKGNhY2hlVHlwZSA9PT0gJ3NlcnZpY2UnKSB7XG4gICAgICB0aGlzLnNlcnZpY2VTdG9yZS5zZXQoa2V5Q2FjaGUsIGRhdGEpO1xuXG4gICAgICByZXR1cm4gY29udmVydFJlc3BvbnNlRGF0YSA/IGNvbnZlcnRSZXNwb25zZURhdGEoZGF0YSkgOiBkYXRhO1xuICAgIH1cbiAgICBhd2FpdCBVdGlsc0NhY2hlLlNldEFzeW5jKGtleUNhY2hlLCBkYXRhLCAoaHR0cFJlcXVlc3RDb25maWcudGltZUNhY2hlIHx8IDUpICogNjAsIHRydWUpO1xuXG4gICAgcmV0dXJuIGNvbnZlcnRSZXNwb25zZURhdGEgPyBjb252ZXJ0UmVzcG9uc2VEYXRhKGRhdGEpIDogZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJDYWNoZShjYWNoZVR5cGU6ICdzZXJ2aWNlJyB8ICdsb2NhbC1zdG9yZScsIGtleUNhY2hlOiBzdHJpbmcpIHtcbiAgICBpZiAoY2FjaGVUeXBlID09PSAnc2VydmljZScpIHtcbiAgICAgIHRoaXMuc2VydmljZVN0b3JlLmRlbGV0ZShrZXlDYWNoZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgVXRpbHNDYWNoZS5DbGVhckFzeW5jKGtleUNhY2hlLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHRy4bqjIHbhu4EgdHLhuqFuZyB0aMOhaSDEkcOjIGxvYWQgaOG6v3QgaXRlbSBjaMawYSAodsOtIGThu6U6IGThu7FhIHbDoG8gdGhhbSBz4buRIG7DoHkgxJHhu4MgcXV54bq/dCDEkeG7i25oIGPDsyB0aeG6v3AgdOG7pWMgZ+G7jWkgYXBpIGtoaSBzY3JvbGwga28pIC5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVBcmd1bWVudHMoXG4gICAgYXJndW1lbnRzVmFsdWU6IEFycmF5PGFueT4sXG4gICAgb2JqZWN0R2V0RGF0YVVwZGF0ZTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBwYWdpbmdTdG9yZTogSVBhZ2luZyxcbiAgICBrZXlTZWFyY2g6IHN0cmluZyxcbiAgICBzZWFyY2hPbmxpbmU6IGJvb2xlYW4sXG4gICAgbG9hZGVkTGFzdEl0ZW06IGJvb2xlYW4sXG4gICAgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWU/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKCFhcmd1bWVudHNWYWx1ZSB8fCAhKGFyZ3VtZW50c1ZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHx8IGxvYWRlZExhc3RJdGVtKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVBcmd1bWVudHNEZWZhdWx0KGFyZ3VtZW50c1ZhbHVlLCB0cnVlLCBwYWdpbmdTdG9yZSwga2V5U2VhcmNoLCBzZWFyY2hPbmxpbmUpO1xuICAgIH1cbiAgICBjb25zdCB7IHBhZ2luZywgc2VhcmNoLCBvdGhlciwgZGV0YWlsQnlJZCwgc29ydE9yZGVyVHlwZSwgc29ydE9yZGVyQnkgfSA9IGd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlO1xuXG4gICAgaWYgKHNlYXJjaCkge1xuICAgICAgc2VhcmNoLmZpZWxkR2V0VmFsdWUgPSAna2V5U2VhcmNoJztcbiAgICAgIHRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIHsga2V5U2VhcmNoIH0sIHNlYXJjaCk7XG4gICAgfVxuICAgIGlmIChvYmplY3RHZXREYXRhVXBkYXRlPy5bJ3N0b3JlUGFyYW1zQ2FsbEFwaSddICYmIHR5cGVvZiBvYmplY3RHZXREYXRhVXBkYXRlPy5bJ3N0b3JlUGFyYW1zQ2FsbEFwaSddID09PSAnb2JqZWN0JyAmJiAhKG9iamVjdEdldERhdGFVcGRhdGU/Llsnc3RvcmVQYXJhbXNDYWxsQXBpJ10gYXMgYW55KS5pbnN0YW5jZVNvcnQpIHtcbiAgICAgIG9iamVjdEdldERhdGFVcGRhdGVbJ3N0b3JlUGFyYW1zQ2FsbEFwaSddID0geyAuLi5vYmplY3RHZXREYXRhVXBkYXRlWydzdG9yZVBhcmFtc0NhbGxBcGknXSwgaW5zdGFuY2VTb3J0OiB7fSB9O1xuICAgIH1cbiAgICBpZiAoc29ydE9yZGVyQnkpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIHNvcnRPcmRlckJ5KTtcbiAgICB9XG4gICAgaWYgKHNvcnRPcmRlclR5cGUpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIHNvcnRPcmRlclR5cGUpO1xuICAgIH1cbiAgICBpZiAob3RoZXIgJiYgb3RoZXIubGVuZ3RoKSB7XG4gICAgICBvdGhlci5mb3JFYWNoKChjb25maWcpID0+IHRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIGNvbmZpZykpO1xuICAgIH1cbiAgICBpZiAoZGV0YWlsQnlJZCkge1xuICAgICAgZGV0YWlsQnlJZC5maWVsZEdldFZhbHVlID0gZGV0YWlsQnlJZC5maWVsZEdldFZhbHVlIHx8IGRldGFpbEJ5SWQuZmllbGRHZXRWYWx1ZS50cmltKCkgfHwgJ2tleSc7XG4gICAgICB0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBkZXRhaWxCeUlkKTtcbiAgICB9XG5cbiAgICBpZiAoaXNFbXB0eShwYWdpbmcpKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVBcmd1bWVudHNEZWZhdWx0KGFyZ3VtZW50c1ZhbHVlLCBmYWxzZSwgcGFnaW5nU3RvcmUgfHwgdGhpcy5mYWtlUmVzcG9uc2VQYWdpbmdBcGkoKVsncGFnaW5nJ10sIGtleVNlYXJjaCwgc2VhcmNoT25saW5lKTtcbiAgICB9XG4gICAgY29uc3QgeyBwYWdlLCBiZWZvcmUsIGFmdGVyIH0gPSBwYWdpbmc7XG5cbiAgICBpZiAocGFnZSAmJiBvYmplY3RHZXREYXRhVXBkYXRlKSB7XG4gICAgICBwYWdlLnByZXByb2Nlc3NvciA9ICh2YWx1ZTogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICAgICAgcmV0dXJuICsrdmFsdWU7XG4gICAgICB9O1xuICAgICAgY29uc3QgdmFsdWVQYWdlID0gK3RoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIHBhZ2UpO1xuICAgICAgY29uc3QgdmFsdWVMYXN0UGFnZSA9ICtnZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSBhcyBhbnksICdwYWdpbmcudG90YWxfcGFnZXMnKTtcblxuICAgICAgaWYgKCh2YWx1ZVBhZ2UgJiYgTnVtYmVyKHZhbHVlUGFnZSkudmFsdWVPZigpID4gTnVtYmVyKHZhbHVlTGFzdFBhZ2UpLnZhbHVlT2YoKSkgfHwgdmFsdWVMYXN0UGFnZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGJlZm9yZSAmJiBvYmplY3RHZXREYXRhVXBkYXRlICYmICF0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBiZWZvcmUpICYmICFnZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSwgJ3BhZ2luZy5mYWtlJykpIHtcbiAgICAgIHNldChvYmplY3RHZXREYXRhVXBkYXRlLCAncGFnaW5nLmZha2UnLCBmYWxzZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoYWZ0ZXIgJiYgb2JqZWN0R2V0RGF0YVVwZGF0ZSAmJiAhdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgYWZ0ZXIpICYmICFnZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSwgJ3BhZ2luZy5mYWtlJykpIHtcbiAgICAgIHNldChvYmplY3RHZXREYXRhVXBkYXRlLCAncGFnaW5nLmZha2UnLCBmYWxzZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghYXJndW1lbnRzVmFsdWUgfHwgIWFyZ3VtZW50c1ZhbHVlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBcmd1bWVudHNEZWZhdWx0KGFyZ3VtZW50c1ZhbHVlOiBBcnJheTxhbnk+LCB1cGRhdGVTZWFyY2g6IGJvb2xlYW4sIHBhZ2luZ1N0b3JlOiBJUGFnaW5nLCBrZXlTZWFyY2g6IHN0cmluZywgc2VhcmNoT25saW5lOiBib29sZWFuKSB7XG4gICAgaWYgKCFhcmd1bWVudHNWYWx1ZSB8fCAhYXJndW1lbnRzVmFsdWUubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGluZGV4IGluIGFyZ3VtZW50c1ZhbHVlKSB7XG4gICAgICBsZXQgYXJndW1lbnRWYWx1ZSA9IGFyZ3VtZW50c1ZhbHVlW2luZGV4XTtcblxuICAgICAgaWYgKCEoYXJndW1lbnRWYWx1ZSBpbnN0YW5jZW9mIEh0dHBQYXJhbXMpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFnZVZhbHVlID0gYXJndW1lbnRWYWx1ZS5nZXQoJ3BhZ2UnKTtcblxuICAgICAgaWYgKHNlYXJjaE9ubGluZSAmJiB1cGRhdGVTZWFyY2gpIHtcbiAgICAgICAgYXJndW1lbnRWYWx1ZSA9IGFyZ3VtZW50VmFsdWUuc2V0KCdzZWFyY2gnLCBrZXlTZWFyY2gpO1xuICAgICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3VtZW50VmFsdWUuaGFzKCdiZWZvcmUnKSkge1xuICAgICAgICBhcmd1bWVudFZhbHVlID0gYXJndW1lbnRWYWx1ZS5zZXQoJ2JlZm9yZScsIHBhZ2luZ1N0b3JlPy5iZWZvcmUpO1xuICAgICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3VtZW50VmFsdWUuaGFzKCdhZnRlcicpKSB7XG4gICAgICAgIGFyZ3VtZW50VmFsdWUgPSBhcmd1bWVudFZhbHVlLnNldCgnYWZ0ZXInLCBwYWdpbmdTdG9yZT8uYWZ0ZXIpO1xuICAgICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKE51bWJlcihwYWdlVmFsdWUpLnZhbHVlT2YoKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoIXBhZ2luZ1N0b3JlIHx8IHBhZ2VWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHBhZ2UsIHRvdGFsX3BhZ2VzIH0gPSBwYWdpbmdTdG9yZTtcbiAgICAgIGNvbnN0IG5leHRQYWdlID0gKHBhZ2UgfHwgMCkgKyAxO1xuXG4gICAgICBpZiAobmV4dFBhZ2UgJiYgTnVtYmVyKG5leHRQYWdlKS52YWx1ZU9mKCkgPiBOdW1iZXIodG90YWxfcGFnZXMpLnZhbHVlT2YoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGFyZ3VtZW50c1ZhbHVlW2luZGV4XSA9IGFyZ3VtZW50VmFsdWUuc2V0KCdwYWdlJywgbmV4dFBhZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZTogQXJyYXk8YW55Piwgb2JqZWN0R2V0RGF0YVVwZGF0ZTogYW55LCBjb25maWc6IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZykge1xuICAgIGlmICghY29uZmlnIHx8ICFvYmplY3RHZXREYXRhVXBkYXRlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmxvZz8ubG9nSW5wdXRzKSB7XG4gICAgICBjb25zb2xlLmxvZygnY29uZmlnJywgY29uZmlnKTtcbiAgICAgIGNvbnNvbGUubG9nKCdvYmplY3RHZXREYXRhVXBkYXRlJywgb2JqZWN0R2V0RGF0YVVwZGF0ZSk7XG4gICAgICBjb25zb2xlLmxvZygnYXJndW1lbnRzVmFsdWUnLCBhcmd1bWVudHNWYWx1ZSk7XG4gICAgICBjb25zb2xlLmxvZygnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKTtcbiAgICB9XG4gICAgY29uc3QgeyBmaWVsZFVwZGF0ZSwgZmllbGRHZXRWYWx1ZSwgcHJlcHJvY2Vzc29yIH0gPSBjb25maWc7XG5cbiAgICBpZiAoIWZpZWxkVXBkYXRlIHx8ICFmaWVsZEdldFZhbHVlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCB2YWx1ZSA9IGdldChvYmplY3RHZXREYXRhVXBkYXRlLCBmaWVsZEdldFZhbHVlKTtcbiAgICBpZiAoY29uZmlnLmxvZz8ubG9nR2V0VmFsdWUpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB2YWx1ZSBvZiBvYmplY3RHZXREYXRhVXBkYXRlWyR7ZmllbGRHZXRWYWx1ZX1dOiBgLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHByZXByb2Nlc3Nvcikge1xuICAgICAgdmFsdWUgPSBwcmVwcm9jZXNzb3IodmFsdWUpO1xuICAgIH1cbiAgICBpZiAoZmllbGRVcGRhdGUpIHtcbiAgICAgIGxldCByZXN1bHRPZkZpZWxkVXBkYXRlID0gZ2V0KGFyZ3VtZW50c1ZhbHVlLCBmaWVsZFVwZGF0ZSBhcyBhbnkpO1xuXG4gICAgICBpZiAocmVzdWx0T2ZGaWVsZFVwZGF0ZSBpbnN0YW5jZW9mIEh0dHBQYXJhbXMpIHtcbiAgICAgICAgcmVzdWx0T2ZGaWVsZFVwZGF0ZSA9IHJlc3VsdE9mRmllbGRVcGRhdGUuc2V0KGNvbmZpZy5zdWJGaWVsZFVwZGF0ZSB8fCAnc2VhcmNoJywgdmFsdWUpO1xuICAgICAgICBzZXQoYXJndW1lbnRzVmFsdWUsIGZpZWxkVXBkYXRlIGFzIGFueSwgcmVzdWx0T2ZGaWVsZFVwZGF0ZSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdE9mRmllbGRVcGRhdGUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXN1bHRPZkZpZWxkVXBkYXRlLnB1c2godmFsdWUpO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHRPZkZpZWxkVXBkYXRlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgIHNldChyZXN1bHRPZkZpZWxkVXBkYXRlLCBjb25maWcuc3ViRmllbGRVcGRhdGUgfHwgJ3NlYXJjaCcsIHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBzZXQoYXJndW1lbnRzVmFsdWUsIGZpZWxkVXBkYXRlIGFzIGFueSwgdmFsdWUpO1xuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGZha2VSZXNwb25zZVBhZ2luZ0FwaSgpOiB7IHBhZ2luZzogSVBhZ2luZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFnaW5nOiB7XG4gICAgICAgIHBhZ2U6IDAsXG4gICAgICAgIHRvdGFsX3BhZ2VzOiAxLFxuICAgICAgICBiZWZvcmU6ICcnLFxuICAgICAgICBhZnRlcjogJycsXG4gICAgICAgIGZha2U6IHRydWUsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
package/esm2022/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
1
  export * from './http-request.service';
2
2
  export * from './api-mockup';
3
3
  export * from './interfaces';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaHR0cC1yZXF1ZXN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGktbW9ja3VwJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7Il19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaHR0cC1yZXF1ZXN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGktbW9ja3VwJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpbGQtYXV0by11cGRhdGUtYXJndW1lbnRzLXZhbHVlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvaHR0cC1yZXF1ZXN0L3NyYy9pbnRlcmZhY2VzL2d1aWxkLWF1dG8tdXBkYXRlLWFyZ3VtZW50cy12YWx1ZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGludGVyZmFjZSBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUge1xuICBwYWdpbmc6IHtcbiAgICBwYWdlPzogSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlQ29uZmlnO1xuICAgIGJlZm9yZT86IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZztcbiAgICBhZnRlcj86IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZztcbiAgfVxuICBzZWFyY2g/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWc7XG4gIHNvcnRPcmRlclR5cGU/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWc7XG4gIHNvcnRPcmRlckJ5PzogSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlQ29uZmlnO1xuICBkZXRhaWxCeUlkPzogSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlQ29uZmlnO1xuICBvdGhlcj86IEFycmF5PElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlQ29uZmlnIHtcbiAgZmllbGRVcGRhdGU6IHN0cmluZztcbiAgc3ViRmllbGRVcGRhdGU/OiBzdHJpbmc7IC8vIG7hur91IG91dHB1dCBj4bunYSBmaWVsZFVwZGF0ZSBsw6AgbeG7mXQgxJHhu5FpIHTGsOG7o25nIEh0dHBQYXJhbXMuIHhlbSBkZW1vIGxpc3Qtdmlld1xuICBmaWVsZEdldFZhbHVlOiBzdHJpbmc7IC8vIHbhu5tpIHRyxrDhu51uZyBo4bujcCBj4bunYSBkZXRhbEJ5SWQgdsOgIHNlYXJjaCB0aMOsIMSR4buDIHRyxrDhu51uZyBuw6B5IGdpw6EgdHLhu4sgbMOgLiAnJ1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwcmVwcm9jZXNzb3I/OiAodmFsdWU6IGFueSkgPT4gYW55O1xuICBsb2c/OiB7XG4gICAgbG9nSW5wdXRzPzogYm9vbGVhbjtcbiAgICBsb2dHZXRWYWx1ZT86IGJvb2xlYW47XG4gIH07XG59Il19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpbGQtYXV0by11cGRhdGUtYXJndW1lbnRzLXZhbHVlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvaHR0cC1yZXF1ZXN0L3NyYy9pbnRlcmZhY2VzL2d1aWxkLWF1dG8tdXBkYXRlLWFyZ3VtZW50cy12YWx1ZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlIHtcbiAgcGFnaW5nOiB7XG4gICAgcGFnZT86IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZztcbiAgICBiZWZvcmU/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWc7XG4gICAgYWZ0ZXI/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWc7XG4gIH07XG4gIHNlYXJjaD86IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZztcbiAgc29ydE9yZGVyVHlwZT86IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZztcbiAgc29ydE9yZGVyQnk/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWc7XG4gIGRldGFpbEJ5SWQ/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWc7XG4gIG90aGVyPzogQXJyYXk8SUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlQ29uZmlnPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWcge1xuICBmaWVsZFVwZGF0ZTogc3RyaW5nO1xuICBzdWJGaWVsZFVwZGF0ZT86IHN0cmluZzsgLy8gbuG6v3Ugb3V0cHV0IGPhu6dhIGZpZWxkVXBkYXRlIGzDoCBt4buZdCDEkeG7kWkgdMaw4bujbmcgSHR0cFBhcmFtcy4geGVtIGRlbW8gbGlzdC12aWV3XG4gIGZpZWxkR2V0VmFsdWU6IHN0cmluZzsgLy8gduG7m2kgdHLGsOG7nW5nIGjhu6NwIGPhu6dhIGRldGFsQnlJZCB2w6Agc2VhcmNoIHRow6wgxJHhu4MgdHLGsOG7nW5nIG7DoHkgZ2nDoSB0cuG7iyBsw6AuICcnXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHByZXByb2Nlc3Nvcj86ICh2YWx1ZTogYW55KSA9PiBhbnk7XG4gIGxvZz86IHtcbiAgICBsb2dJbnB1dHM/OiBib29sZWFuO1xuICAgIGxvZ0dldFZhbHVlPzogYm9vbGVhbjtcbiAgfTtcbn1cbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  export {};
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaW50ZXJmYWNlcy9odHRwLXJlcXVlc3QtY29uZmlnLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5cbmltcG9ydCB7IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSB9IGZyb20gXCIuL2d1aWxkLWF1dG8tdXBkYXRlLWFyZ3VtZW50cy12YWx1ZS5pbnRlcmZhY2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJSHR0cFJlcXVlc3RDb25maWcge1xuICBzZXJ2aWNlT3RoZXI/OiBhbnk7IC8vIGzDoCAxIG9iamVjdCBraMO0bmcgxJHGsOG7o2MgaW5qZWN0IHRyb25nIGh0dHBSZXF1ZXN0OyDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBs4bqleSBkYXRhIHThu6sgMSDEkeG7kWkgdMaw4bujbmcga2jDtG5nIHBo4bqjaSBsw6Agc2VydmljZSBpbmplY3RcbiAgc2VydmljZU5hbWU/OiBzdHJpbmc7IC8vIHTDqm4gc2VydmljZSDEkcaw4bujYyBpbmplY3QgdHJvbmcgaHR0cCByZXF1ZXN0IHNlcnZpY2U7XG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nOyAvLyB0w6puIGjDoG0gbXXhu5FuIGfhu41pIHRyb25nIHNlcnZpY2VcbiAgYXJndW1lbnRzVmFsdWU6IEFycmF5PGFueT47Ly8gY2jhu6lhIGThu68gbGnhu4d1IGPhu6dhIHBhcmFtcyB0cnV54buBbiB2w6BvLCBt4bqjbmcgY8OzIGvhu4N1IGThu68gbGnhu4d1IGtow7RuZyBj4bqnbiBnaeG7kW5nIG5oYXUgdmQ6IGjDoG0gZnVuY3Rpb24oc2VhcmNoOnN0cmluZyxhZ2U6bnVtYmVyLHBhZ2U6T2JqZWN0KT17Li4ufSB0aMOsIHNlcnZpY2VTcGVjaWZpY1BhcmFtcyA9IFsncGFyYW0nLDE2LHtwYWdlOjEscGFnZTpwZXJfcGFnZToyNX1dXG4gIGNhY2hlVHlwZT86ICdzZXJ2aWNlJyB8ICdsb2NhbC1zdG9yZSc7XG4gIGtleUNhY2hlPzogc3RyaW5nOyAvLyBz4butIGThu6VuZyBu4bq/dSBz4butIGThu6VuZyBjYWNoZS4ga2hpIHThuqFvIGLhu5kgY29uZmlnIHPhu60gZOG7pW5nIMSR4buRaSB0xrDhu6NuZyB1dWlkIMSR4buDIGzhuqV5IG3hu5l0IGlkIHNldCB2w6BvIGJp4bq/biBuw6B5LiB2w6AgYmnhur9uIG7DoHkgc+G6vSBrbyB0aGF5IMSR4buVaSB0cm9uZyBxdcOhIHRyw6xuaCBz4butIGThu6VuZ1xuICB0aW1lQ2FjaGU/OiBudW1iZXI7IC8vIMSRxqFuIHbhu4sgcGjDunRcbiAgY2xlYXJDYWNoZT86IGJvb2xlYW47XG4gIGd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlPzogSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlOyAvLyBraGFpIGLDoW8ga2jDtG5nIHPhu60gZOG7pW5nIGNobyBIdHRwUmVxdWVzdFNlcnZpY2UuIETDuW5nIGNobyBjw6EgY29tcG9uZW50IG114buRbiBs4bqleSB0aMO0bmcgdGluIHVwZGF0ZSBhcmd1bWVudHMgxJHhu4MgbG9hZCBtb3JlIGtoaSBzY3JvbGwgYm90dG9tLiBWw60gZOG7pSBuaMawIE1vTGliU2hhcmVDb21wb25lbnRzTGlzdFZpZXdUZW1wbGF0ZXNDb21wb25lbnRBYnN0cmFjdFxuICBjb252ZXJ0UmVzcG9uc2VEYXRhPzogKHJlc3BvbnNlOiBhbnkpID0+IGFueTtcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaW50ZXJmYWNlcy9odHRwLXJlcXVlc3QtY29uZmlnLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5cbmltcG9ydCB7IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSB9IGZyb20gJy4vZ3VpbGQtYXV0by11cGRhdGUtYXJndW1lbnRzLXZhbHVlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBSZXF1ZXN0Q29uZmlnIHtcbiAgc2VydmljZU90aGVyPzogYW55OyAvLyBsw6AgMSBvYmplY3Qga2jDtG5nIMSRxrDhu6NjIGluamVjdCB0cm9uZyBodHRwUmVxdWVzdDsgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgbOG6pXkgZGF0YSB04burIDEgxJHhu5FpIHTGsOG7o25nIGtow7RuZyBwaOG6o2kgbMOgIHNlcnZpY2UgaW5qZWN0XG4gIHNlcnZpY2VOYW1lPzogc3RyaW5nOyAvLyB0w6puIHNlcnZpY2UgxJHGsOG7o2MgaW5qZWN0IHRyb25nIGh0dHAgcmVxdWVzdCBzZXJ2aWNlO1xuICBmdW5jdGlvbk5hbWU6IHN0cmluZzsgLy8gdMOqbiBow6BtIG114buRbiBn4buNaSB0cm9uZyBzZXJ2aWNlXG4gIGFyZ3VtZW50c1ZhbHVlOiBBcnJheTxhbnk+OyAvLyBjaOG7qWEgZOG7ryBsaeG7h3UgY+G7p2EgcGFyYW1zIHRydXnhu4FuIHbDoG8sIG3huqNuZyBjw7Mga+G7g3UgZOG7ryBsaeG7h3Uga2jDtG5nIGPhuqduIGdp4buRbmcgbmhhdSB2ZDogaMOgbSBmdW5jdGlvbihzZWFyY2g6c3RyaW5nLGFnZTpudW1iZXIscGFnZTpPYmplY3QpPXsuLi59IHRow6wgc2VydmljZVNwZWNpZmljUGFyYW1zID0gWydwYXJhbScsMTYse3BhZ2U6MSxwYWdlOnBlcl9wYWdlOjI1fV1cbiAgY2FjaGVUeXBlPzogJ3NlcnZpY2UnIHwgJ2xvY2FsLXN0b3JlJztcbiAga2V5Q2FjaGU/OiBzdHJpbmc7IC8vIHPhu60gZOG7pW5nIG7hur91IHPhu60gZOG7pW5nIGNhY2hlLiBraGkgdOG6oW8gYuG7mSBjb25maWcgc+G7rSBk4bulbmcgxJHhu5FpIHTGsOG7o25nIHV1aWQgxJHhu4MgbOG6pXkgbeG7mXQgaWQgc2V0IHbDoG8gYmnhur9uIG7DoHkuIHbDoCBiaeG6v24gbsOgeSBz4bq9IGtvIHRoYXkgxJHhu5VpIHRyb25nIHF1w6EgdHLDrG5oIHPhu60gZOG7pW5nXG4gIHRpbWVDYWNoZT86IG51bWJlcjsgLy8gxJHGoW4gduG7iyBwaMO6dFxuICBjbGVhckNhY2hlPzogYm9vbGVhbjtcbiAgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWU/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWU7IC8vIGtoYWkgYsOhbyBraMO0bmcgc+G7rSBk4bulbmcgY2hvIEh0dHBSZXF1ZXN0U2VydmljZS4gRMO5bmcgY2hvIGPDoSBjb21wb25lbnQgbXXhu5FuIGzhuqV5IHRow7RuZyB0aW4gdXBkYXRlIGFyZ3VtZW50cyDEkeG7gyBsb2FkIG1vcmUga2hpIHNjcm9sbCBib3R0b20uIFbDrSBk4bulIG5oxrAgTW9MaWJTaGFyZUNvbXBvbmVudHNMaXN0Vmlld1RlbXBsYXRlc0NvbXBvbmVudEFic3RyYWN0XG4gIGNvbnZlcnRSZXNwb25zZURhdGE/OiAocmVzcG9uc2U6IGFueSkgPT4gYW55O1xufVxuIl19
@@ -1,3 +1,3 @@
1
1
  export * from './http-request-config.interface';
2
2
  export * from './guild-auto-update-arguments-value.interface';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsK0NBQStDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2h0dHAtcmVxdWVzdC1jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZ3VpbGQtYXV0by11cGRhdGUtYXJndW1lbnRzLXZhbHVlLmludGVyZmFjZSc7Il19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsK0NBQStDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2h0dHAtcmVxdWVzdC1jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZ3VpbGQtYXV0by11cGRhdGUtYXJndW1lbnRzLXZhbHVlLmludGVyZmFjZSc7XG4iXX0=
@@ -108,8 +108,8 @@ class LibsUiHttpRequestService {
108
108
  UtilsCache.ClearAsync(keyCache, true);
109
109
  }
110
110
  /**
111
- * @return trả về trạng thái đã load hết item chưa (ví dụ: dựa vào tham số này để quyết định có tiếp tục gọi api khi scroll ko) .
112
- */
111
+ * @return trả về trạng thái đã load hết item chưa (ví dụ: dựa vào tham số này để quyết định có tiếp tục gọi api khi scroll ko) .
112
+ */
113
113
  updateArguments(argumentsValue, objectGetDataUpdate, pagingStore, keySearch, searchOnline, loadedLastItem, guideAutoUpdateArgumentsValue) {
114
114
  if (!argumentsValue || !(argumentsValue instanceof Array) || loadedLastItem) {
115
115
  return true;
@@ -132,7 +132,7 @@ class LibsUiHttpRequestService {
132
132
  this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, sortOrderType);
133
133
  }
134
134
  if (other && other.length) {
135
- other.forEach(config => this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, config));
135
+ other.forEach((config) => this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, config));
136
136
  }
137
137
  if (detailById) {
138
138
  detailById.fieldGetValue = detailById.fieldGetValue || detailById.fieldGetValue.trim() || 'key';
@@ -148,7 +148,7 @@ class LibsUiHttpRequestService {
148
148
  };
149
149
  const valuePage = +this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, page);
150
150
  const valueLastPage = +get(objectGetDataUpdate, 'paging.total_pages');
151
- if (valuePage && Number(valuePage).valueOf() > Number(valueLastPage).valueOf() || valueLastPage === 0) {
151
+ if ((valuePage && Number(valuePage).valueOf() > Number(valueLastPage).valueOf()) || valueLastPage === 0) {
152
152
  return true;
153
153
  }
154
154
  }
@@ -193,7 +193,7 @@ class LibsUiHttpRequestService {
193
193
  if (!pagingStore || pageValue === undefined) {
194
194
  break;
195
195
  }
196
- const { page, total_pages, } = pagingStore;
196
+ const { page, total_pages } = pagingStore;
197
197
  const nextPage = (page || 0) + 1;
198
198
  if (nextPage && Number(nextPage).valueOf() > Number(total_pages).valueOf()) {
199
199
  return true;
@@ -227,7 +227,7 @@ class LibsUiHttpRequestService {
227
227
  if (fieldUpdate) {
228
228
  let resultOfFieldUpdate = get(argumentsValue, fieldUpdate);
229
229
  if (resultOfFieldUpdate instanceof HttpParams) {
230
- resultOfFieldUpdate = resultOfFieldUpdate.set((config.subFieldUpdate || 'search'), value);
230
+ resultOfFieldUpdate = resultOfFieldUpdate.set(config.subFieldUpdate || 'search', value);
231
231
  set(argumentsValue, fieldUpdate, resultOfFieldUpdate);
232
232
  return value;
233
233
  }
@@ -251,8 +251,8 @@ class LibsUiHttpRequestService {
251
251
  total_pages: 1,
252
252
  before: '',
253
253
  after: '',
254
- fake: true
255
- }
254
+ fake: true,
255
+ },
256
256
  };
257
257
  }
258
258
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiHttpRequestService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -299,7 +299,7 @@ const returnListObject = (data, functionGetData) => {
299
299
  return {
300
300
  code: 200,
301
301
  data: data || [],
302
- paging: {}
302
+ paging: {},
303
303
  };
304
304
  },
305
305
  listObservable: () => {
@@ -309,7 +309,7 @@ const returnListObject = (data, functionGetData) => {
309
309
  return of({
310
310
  code: 200,
311
311
  data: data || [],
312
- paging: {}
312
+ paging: {},
313
313
  }).pipe(delay(250));
314
314
  },
315
315
  listPaging: async (params) => {
@@ -377,7 +377,7 @@ const returnDetailObject = (httpParams, data, functionGetData, ignoreSplit, spli
377
377
  }
378
378
  data = dataResult.data;
379
379
  return await filterData(fieldKey, data, keys || keysPrams, dataResponseOject, ignoreSplit, splitOperator);
380
- }
380
+ },
381
381
  };
382
382
  };
383
383
  const filterData = (fieldKey, data, keys, dataResponseOject, ignoreSplit, splitOperator) => {
@@ -385,7 +385,7 @@ const filterData = (fieldKey, data, keys, dataResponseOject, ignoreSplit, splitO
385
385
  return {
386
386
  code: 200,
387
387
  data: undefined,
388
- paging: {}
388
+ paging: {},
389
389
  };
390
390
  }
391
391
  data = data || [];
@@ -408,16 +408,16 @@ const filterData = (fieldKey, data, keys, dataResponseOject, ignoreSplit, splitO
408
408
  return {
409
409
  code: 200,
410
410
  data: result.length ? (dataResponseOject ? result[0] : result) : undefined,
411
- paging: {}
411
+ paging: {},
412
412
  };
413
413
  };
414
414
  const per_page = 20;
415
- const total_items = (per_page * 150) + 15;
415
+ const total_items = per_page * 150 + 15;
416
416
  const getConfigListDataDemo = (httpParamsDetail = new UtilsHttpParamsRequest(), objectData, functionBuildObject) => {
417
417
  if (!objectData) {
418
418
  objectData = {
419
419
  id: '',
420
- name: 'item positon index '
420
+ name: 'item positon index ',
421
421
  };
422
422
  }
423
423
  const data = [...Array(total_items).keys()].map((_, index) => {
@@ -425,7 +425,7 @@ const getConfigListDataDemo = (httpParamsDetail = new UtilsHttpParamsRequest(),
425
425
  return functionBuildObject(`${+index + 1}`);
426
426
  }
427
427
  const obj = {};
428
- Object.keys(objectData).forEach(key => {
428
+ Object.keys(objectData).forEach((key) => {
429
429
  set(obj, key, `${objectData[key]}${+index + 1}`);
430
430
  });
431
431
  return obj;
@@ -434,7 +434,7 @@ const getConfigListDataDemo = (httpParamsDetail = new UtilsHttpParamsRequest(),
434
434
  const detailService = returnDetailObject(httpParamsDetail, data, undefined, false, ';');
435
435
  return {
436
436
  list: listService.listPaging,
437
- detailByData: detailService.detailByData
437
+ detailByData: detailService.detailByData,
438
438
  };
439
439
  };
440
440
  /**
@@ -453,8 +453,8 @@ const pagingToList = (data, page, per_page) => {
453
453
  page: page,
454
454
  per_page: per_page,
455
455
  total_items: 0,
456
- total_pages: 0
457
- }
456
+ total_pages: 0,
457
+ },
458
458
  };
459
459
  }
460
460
  const start = (page - 1) * per_page;
@@ -468,8 +468,8 @@ const pagingToList = (data, page, per_page) => {
468
468
  page: page > total_pages ? total_pages : page,
469
469
  per_page: per_page,
470
470
  total_items: data.length,
471
- total_pages: total_pages
472
- }
471
+ total_pages: total_pages,
472
+ },
473
473
  };
474
474
  };
475
475
 
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-services-http-request.mjs","sources":["../../../../../libs-ui/services/http-request/src/http-request.service.ts","../../../../../libs-ui/services/http-request/src/api-mockup.ts","../../../../../libs-ui/services/http-request/src/interfaces/http-request-config.interface.ts","../../../../../libs-ui/services/http-request/src/libs-ui-services-http-request.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { IPaging } from '@libs-ui/interfaces-types';\nimport { UtilsCache, get, getKeyCacheByArrayObject, isEmpty, set } from '@libs-ui/utils';\nimport { lastValueFrom } from 'rxjs';\nimport { IGuideAutoUpdateArgumentsValue, IGuideAutoUpdateArgumentsValueConfig, IHttpRequestConfig } from './interfaces/index';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LibsUiHttpRequestService {\n /** Chứa dữ liệu cache memory */\n private serviceStore: Map<string, any>;\n /** Chứa các service common base api */\n private servicesCommon: Record<string, any> = {};\n\n /** Chứa các service call api đến backend */\n private servicesApiModules: Record<string, any> = {};\n\n constructor() {\n this.serviceStore = new Map();\n }\n\n public set ServicesCommon(serviceCommon: Record<string, any>) {\n this.servicesCommon = { ...this.servicesCommon, ...serviceCommon };\n }\n\n public set ServicesApiModules(servicesApiModules: Record<string, any>) {\n this.servicesApiModules = { ...this.servicesApiModules, ...servicesApiModules };\n }\n\n private getServiceByName(name: string): Record<string, any> | undefined {\n if (!name || !name.trim()) {\n return undefined;\n }\n if (name.startsWith('common')) {\n\n if (!this.servicesCommon) {\n throw 'service common is Empty, please inject MoLibsCoreUIHttpRequestService and call ServicesCommon update 1';\n }\n\n return this.servicesCommon[name];\n }\n\n if (name.startsWith('apiModule')) {\n if (!this.servicesApiModules) {\n throw 'service module is Empty, please inject MoLibsCoreUIHttpRequestService and call servicesModules update 2';\n }\n\n return this.servicesApiModules[name];\n }\n\n return undefined;\n }\n\n public refreshAllService() {\n if (!this.servicesApiModules) {\n throw 'service common is Empty, please inject MoLibsCoreUIHttpRequestService and call servicesModules update 3';\n }\n\n Object.keys(this.servicesApiModules).forEach((nameService: string) => (this.servicesApiModules as any)[nameService].refreshAPIUrl && (this.servicesApiModules as any)[nameService].refreshAPIUrl());\n }\n\n public async callApi<T = any>(httpRequestConfig: IHttpRequestConfig): Promise<T> {\n if (!httpRequestConfig || (!httpRequestConfig.serviceName && !httpRequestConfig.serviceOther) || !httpRequestConfig.functionName) {\n throw 'http request config not exactly httpRequestConfig';\n }\n const { serviceName, serviceOther, keyCache, functionName, argumentsValue } = httpRequestConfig;\n\n if (!serviceOther && (!serviceName || !serviceName.trim())) {\n throw `http request config not exactly serviceOther or serviceName`;\n }\n const serviceInstance: any = this.getServiceByName(serviceName || '') || serviceOther;\n\n if (!serviceInstance) {\n throw `http request notfound serviceInstance name: ${serviceName}`;\n }\n const methodInstance = serviceInstance[functionName];\n\n if (!methodInstance) {\n throw `http request config notfound methodInstance name: ${functionName}`;\n }\n const keyCacheMD5: string = getKeyCacheByArrayObject(keyCache || '', argumentsValue);\n const cacheData = await this.getCacheData(httpRequestConfig, keyCacheMD5);\n\n if (cacheData) {\n return Promise.resolve(cacheData);\n }\n\n let callResponse = methodInstance.apply(serviceInstance, argumentsValue);\n if (!callResponse.then) {\n callResponse = lastValueFrom(callResponse);\n }\n\n const res = await callResponse;\n\n return await this.setCacheData(res, httpRequestConfig, keyCacheMD5);\n }\n\n private async getCacheData(httpRequestConfig: IHttpRequestConfig, keyCache: string) {\n const { cacheType, convertResponseData } = httpRequestConfig;\n\n if (!cacheType || !keyCache) {\n return undefined;\n }\n if (cacheType === 'service') {\n const data = this.serviceStore.get(keyCache);\n\n return data ? (convertResponseData ? convertResponseData(data) : data) : data;\n }\n const data = await UtilsCache.GetAsync(keyCache, undefined, true);\n\n return data ? (convertResponseData ? convertResponseData(data) : data) : data;\n }\n\n private async setCacheData(data: any, httpRequestConfig: IHttpRequestConfig, keyCache: string) {\n const { cacheType, clearCache, convertResponseData } = httpRequestConfig;\n\n if (!cacheType || !keyCache) {\n return convertResponseData ? convertResponseData(data) : data;\n }\n if (clearCache === true) {\n this.clearCache(cacheType, keyCache);\n }\n if (cacheType === 'service') {\n this.serviceStore.set(keyCache, data);\n\n return convertResponseData ? convertResponseData(data) : data;\n }\n await UtilsCache.SetAsync(keyCache, data, (httpRequestConfig.timeCache || 5) * 60, true);\n\n return convertResponseData ? convertResponseData(data) : data;\n }\n\n private clearCache(cacheType: 'service' | 'local-store', keyCache: string) {\n if (cacheType === 'service') {\n this.serviceStore.delete(keyCache);\n\n return;\n }\n UtilsCache.ClearAsync(keyCache, true);\n }\n\n /**\n * @return trả về trạng thái đã load hết item chưa (ví dụ: dựa vào tham số này để quyết định có tiếp tục gọi api khi scroll ko) .\n */\n public updateArguments(argumentsValue: Array<any>, objectGetDataUpdate: Record<string, any>, pagingStore: IPaging, keySearch: string, searchOnline: boolean, loadedLastItem: boolean, guideAutoUpdateArgumentsValue?: IGuideAutoUpdateArgumentsValue): boolean {\n if (!argumentsValue || !(argumentsValue instanceof Array) || loadedLastItem) {\n return true;\n }\n\n if (!guideAutoUpdateArgumentsValue) {\n return this.updateArgumentsDefault(argumentsValue, true, pagingStore, keySearch, searchOnline);\n }\n const { paging, search, other, detailById, sortOrderType, sortOrderBy } = guideAutoUpdateArgumentsValue;\n\n if (search) {\n search.fieldGetValue = 'keySearch';\n this.processUpdateArgumentsValeConfig(argumentsValue, { keySearch }, search);\n }\n if (objectGetDataUpdate?.['storeParamsCallApi'] && typeof objectGetDataUpdate?.['storeParamsCallApi'] === 'object' && !(objectGetDataUpdate?.['storeParamsCallApi'] as any).instanceSort) {\n objectGetDataUpdate['storeParamsCallApi'] = { ...objectGetDataUpdate['storeParamsCallApi'], instanceSort: {} };\n }\n if (sortOrderBy) {\n this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, sortOrderBy);\n }\n if (sortOrderType) {\n this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, sortOrderType);\n }\n if (other && other.length) {\n other.forEach(config => this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, config));\n }\n if (detailById) {\n detailById.fieldGetValue = detailById.fieldGetValue || detailById.fieldGetValue.trim() || 'key';\n this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, detailById);\n }\n\n if (isEmpty(paging)) {\n return this.updateArgumentsDefault(argumentsValue, false, pagingStore || this.fakeResponsePagingApi()['paging'], keySearch, searchOnline);\n }\n const { page, before, after } = paging;\n\n if (page && objectGetDataUpdate) {\n page.preprocessor = (value: number): number => {\n\n return ++value;\n };\n const valuePage = +this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, page);\n const valueLastPage = +get(objectGetDataUpdate as any, 'paging.total_pages');\n\n if (valuePage && Number(valuePage).valueOf() > Number(valueLastPage).valueOf() || valueLastPage === 0) {\n return true;\n }\n }\n if (before && objectGetDataUpdate && !this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, before) && !get(objectGetDataUpdate, 'paging.fake')) {\n set(objectGetDataUpdate, 'paging.fake', false);\n\n return true;\n }\n if (after && objectGetDataUpdate && !this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, after) && !get(objectGetDataUpdate, 'paging.fake')) {\n set(objectGetDataUpdate, 'paging.fake', false);\n\n return true;\n }\n\n if (!argumentsValue || !argumentsValue.length) {\n return true;\n }\n\n return false;\n }\n\n private updateArgumentsDefault(argumentsValue: Array<any>, updateSearch: boolean, pagingStore: IPaging, keySearch: string, searchOnline: boolean) {\n if (!argumentsValue || !argumentsValue.length) {\n return true;\n }\n\n for (const index in argumentsValue) {\n let argumentValue = argumentsValue[index];\n\n if (!(argumentValue instanceof HttpParams)) {\n continue;\n }\n const pageValue = argumentValue.get('page');\n\n if (searchOnline && updateSearch) {\n argumentValue = argumentValue.set('search', keySearch);\n argumentsValue[index] = argumentValue;\n }\n if (argumentValue.has('before')) {\n argumentValue = argumentValue.set('before', pagingStore?.before);\n argumentsValue[index] = argumentValue;\n }\n if (argumentValue.has('after')) {\n argumentValue = argumentValue.set('after', pagingStore?.after);\n argumentsValue[index] = argumentValue;\n }\n if (Number(pageValue).valueOf() === -1) {\n return true;\n }\n if (!pagingStore || pageValue === undefined) {\n break;\n }\n\n const { page, total_pages, } = pagingStore;\n const nextPage = (page || 0) + 1;\n\n if (nextPage && Number(nextPage).valueOf() > Number(total_pages).valueOf()) {\n return true;\n }\n argumentsValue[index] = argumentValue.set('page', nextPage);\n break;\n\n }\n\n return false;\n }\n\n private processUpdateArgumentsValeConfig(argumentsValue: Array<any>, objectGetDataUpdate: any, config: IGuideAutoUpdateArgumentsValueConfig) {\n if (!config || !objectGetDataUpdate) {\n return undefined;\n }\n if (config.log?.logInputs) {\n console.log('config', config);\n console.log('objectGetDataUpdate', objectGetDataUpdate);\n console.log('argumentsValue', argumentsValue);\n console.log('--------------------------------');\n }\n const { fieldUpdate, fieldGetValue, preprocessor } = config;\n\n if (!fieldUpdate || !fieldGetValue) {\n return undefined;\n }\n\n let value = get(objectGetDataUpdate, fieldGetValue);\n if (config.log?.logGetValue) {\n console.log(`value of objectGetDataUpdate[${fieldGetValue}]: `, value);\n }\n\n if (preprocessor) {\n value = preprocessor(value);\n }\n if (fieldUpdate) {\n let resultOfFieldUpdate = get(argumentsValue, fieldUpdate);\n\n if (resultOfFieldUpdate instanceof HttpParams) {\n resultOfFieldUpdate = resultOfFieldUpdate.set((config.subFieldUpdate || 'search'), value);\n set(argumentsValue, fieldUpdate, resultOfFieldUpdate);\n\n return value;\n }\n if (resultOfFieldUpdate instanceof Array) {\n resultOfFieldUpdate.push(value);\n\n return value;\n }\n if (resultOfFieldUpdate instanceof Object) {\n set(resultOfFieldUpdate, config.subFieldUpdate || 'search', value);\n\n return value;\n }\n set(argumentsValue, fieldUpdate, value);\n\n return value;\n }\n\n return value;\n }\n\n public fakeResponsePagingApi(): { paging: IPaging } {\n return {\n paging: {\n page: 0,\n total_pages: 1,\n before: '',\n after: '',\n fake: true\n }\n };\n }\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParams } from '@angular/common/http';\nimport { IHttpResponse } from '@libs-ui/interfaces-types';\nimport { UtilsHttpParamsRequest, get, isNil, set,isEqual } from '@libs-ui/utils';\nimport { Observable, delay, lastValueFrom, of, timer } from 'rxjs';\n\n/**\n * Trả về các phương thức để xử lý danh sách dữ liệu mock\n * @param data - Mảng dữ liệu mặc định để mock\n * @param functionGetData - Hàm tùy chọn để lấy dữ liệu động thay vì sử dụng data mặc định\n * @returns Đối tượng chứa các phương thức:\n * - list: Trả về Promise với toàn bộ dữ liệu (có delay 250ms)\n * - listObservable: Trả về Observable với toàn bộ dữ liệu (có delay 250ms)\n * - listPaging: Trả về Promise với dữ liệu đã phân trang dựa trên params (có delay 250ms)\n * \n * @example\n * ```typescript\n * const mockData = [{ id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }];\n * const listService = returnListObject(mockData);\n * \n * // Lấy toàn bộ dữ liệu\n * const allData = await listService.list();\n * \n * // Lấy dữ liệu phân trang\n * const params = new UtilsHttpParamsRequest();\n * params.set('page', '1');\n * params.set('per_page', '10');\n * const pagedData = await listService.listPaging(params);\n * ```\n */\n\nexport const returnListObject = (data?: Array<any>, functionGetData?: () => Array<any>) => {\n return {\n list: async <TypeResponse>(): Promise<IHttpResponse<TypeResponse>> => {\n if (functionGetData) {\n data = functionGetData();\n }\n await lastValueFrom(timer(250));\n return {\n code: 200,\n data: (data as any) || [],\n paging: {}\n };\n },\n listObservable: <TypeResponse>(): Observable<IHttpResponse<TypeResponse>> => {\n if (functionGetData) {\n data = functionGetData();\n }\n\n return of({\n code: 200,\n data: (data as any) || [],\n paging: {}\n }).pipe(delay(250));\n },\n listPaging: async <TypeResponse>(params: UtilsHttpParamsRequest): Promise<IHttpResponse<TypeResponse>> => {\n if (functionGetData) {\n data = functionGetData();\n }\n const page = parseInt(params.get('page') || '1');\n const per_page = parseInt(params.get('per_page') || '30');\n const result = pagingToList(data as Array<any>, page, per_page);\n\n await lastValueFrom(timer(250));\n\n return result as IHttpResponse<TypeResponse>;\n },\n }\n};\n\n/**\n * Tạo một đối tượng mock detail với các phương thức để lấy bản ghi riêng lẻ theo khóa.\n * Hỗ trợ cả mảng dữ liệu tĩnh và các hàm dữ liệu động.\n * \n * @template TypeResponse - Kiểu dữ liệu phản hồi mong đợi\n * @template TypeParams - Kiểu tham số HTTP (mặc định là any)\n * \n * @param httpParams - Tham số HTTP chứa:\n * - keys: Khóa (hoặc các khóa) cần tìm kiếm\n * - fieldKey: Tên trường để so khớp (mặc định là 'id')\n * - dataResponseOject: Cờ boolean để định dạng đối tượng phản hồi\n * @param data - Mảng dữ liệu tĩnh tùy chọn để tìm kiếm\n * @param functionGetData - Hàm tùy chọn trả về dữ liệu (có thể là Promise hoặc Observable)\n * @param ignoreSplit - Nếu true, coi keys như một giá trị đơn thay vì tách chuỗi\n * @param splitOperator - Toán tử tùy chỉnh để tách keys (mặc định là dấu phẩy)\n * \n * @returns Đối tượng với các phương thức:\n * - detailByData: Tìm kiếm thông qua mảng dữ liệu tĩnh được cung cấp\n * - detailByFunction: Gọi functionGetData để lấy dữ liệu mới, sau đó tìm kiếm\n * \n * @example\n * ```typescript\n * const params = new UtilsHttpParamsRequest({fromObject:{keys:'1',fieldKey:'id'}});\n * const mockDetail = returnDetailObject<User>(params, userData);\n * const user = await mockDetail.detailByData();\n * ```\n */\n\n\nexport const returnDetailObject = <TypeResponse, TypeParams = any>(httpParams: UtilsHttpParamsRequest<TypeParams> | HttpParams, data?: Array<any>, functionGetData?: () => Promise<IHttpResponse<TypeResponse>> | Observable<IHttpResponse<TypeResponse>>, ignoreSplit?: boolean, splitOperator?: string) => {\n const keysPrams: any = httpParams.get('keys');\n const fieldKey: string = httpParams.get('fieldKey') || 'id';\n const dataResponseOject: any = httpParams.get('dataResponseOject');\n\n return {\n detailByData: async (keys?: any): Promise<IHttpResponse<TypeResponse>> => {\n return filterData<TypeResponse>(fieldKey, data, keys ?? keysPrams, dataResponseOject, ignoreSplit, splitOperator);\n },\n\n detailByFunction: async (keys?: any): Promise<IHttpResponse<TypeResponse>> => {\n if (!functionGetData) {\n return await filterData<TypeResponse>(fieldKey, undefined, undefined, dataResponseOject, ignoreSplit, splitOperator);\n }\n\n let dataResult: any = functionGetData();\n\n try {\n if (dataResult['subscribe']) {\n dataResult = await lastValueFrom(dataResult);\n }\n if (dataResult['then']) {\n dataResult = await dataResult;\n }\n } catch (_) {\n dataResult = { data: [] };\n }\n\n data = dataResult.data;\n\n return await filterData<TypeResponse>(fieldKey, data, keys || keysPrams, dataResponseOject, ignoreSplit, splitOperator);\n }\n };\n}\n\nconst filterData = <TypeResponse>(fieldKey: string, data?: Array<any>, keys?: any, dataResponseOject?: boolean, ignoreSplit?: boolean, splitOperator?: string): IHttpResponse<TypeResponse> => {\n if (!data || typeof data !== 'object' || isNil(keys) || keys === '') {\n return {\n code: 200,\n data: undefined,\n paging: {}\n };\n }\n\n data = data || [];\n\n if (!(data instanceof Array)) {\n data = [data];\n }\n const result: any = [];\n\n if (!ignoreSplit && typeof keys === 'string') {\n keys = keys.split(splitOperator || ',');\n }\n\n if (typeof keys === 'number' || typeof keys === 'boolean' || (typeof keys === 'string' && ignoreSplit)) {\n keys = [keys];\n }\n\n keys.forEach((key: string) => {\n const resultFilter = data?.filter((elData: { [key: string]: any }) => isEqual(get(elData, fieldKey), key, { ignoreExactlyDataType: true }));\n\n if (resultFilter && resultFilter.length) {\n result.push(...resultFilter);\n }\n });\n\n return {\n code: 200,\n data: result.length ? (dataResponseOject ? result[0] : result) : undefined,\n paging: {}\n };\n}\n\nconst per_page = 20;\nconst total_items = (per_page * 150) + 15;\n\n\nexport const getConfigListDataDemo = (httpParamsDetail: UtilsHttpParamsRequest<any> = new UtilsHttpParamsRequest(), objectData?: Record<string, string>, functionBuildObject?: (numIncrement: string) => Record<string, string>) => {\n if (!objectData) {\n objectData = {\n id: '',\n name: 'item positon index '\n }\n }\n\n const data = [...Array(total_items).keys()].map((_, index) => {\n\n if (functionBuildObject) {\n return functionBuildObject(`${+index + 1}`)\n }\n const obj = {};\n Object.keys(objectData).forEach(key => {\n set(obj, key, `${objectData[key]}${+index + 1}`);\n })\n return obj;\n });\n\n const listService = returnListObject(data);\n const detailService = returnDetailObject(httpParamsDetail, data, undefined, false, ';');\n return {\n list: listService.listPaging,\n detailByData: detailService.detailByData\n };\n}\n\n/**\n * Hàm phân trang dữ liệu từ một mảng\n * @param data - Mảng dữ liệu cần phân trang\n * @param page - Số trang hiện tại (bắt đầu từ 1)\n * @param per_page - Số lượng item trên mỗi trang\n * @returns Đối tượng chứa dữ liệu đã phân trang và thông tin phân trang\n */\nexport const pagingToList = (data: Array<any>, page: number, per_page: number) => {\n if (!data || !Array.isArray(data)) {\n return {\n code: 200,\n data: [],\n paging: {\n page: page,\n per_page: per_page,\n total_items: 0,\n total_pages: 0\n }\n }\n }\n const start = (page - 1) * per_page;\n const end = start + per_page;\n const total_pages = Math.ceil(data.length / per_page);\n const dataByPage = data.slice(start, end);\n return {\n code: 200,\n data: dataByPage,\n paging: {\n page: page > total_pages ? total_pages : page,\n per_page: per_page,\n total_items: data.length,\n total_pages: total_pages\n }\n }\n}\n\n\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { IGuideAutoUpdateArgumentsValue } from \"./guild-auto-update-arguments-value.interface\";\n\nexport interface IHttpRequestConfig {\n serviceOther?: any; // là 1 object không được inject trong httpRequest; được sử dụng để lấy data từ 1 đối tượng không phải là service inject\n serviceName?: string; // tên service được inject trong http request service;\n functionName: string; // tên hàm muốn gọi trong service\n argumentsValue: Array<any>;// chứa dữ liệu của params truyền vào, mảng có kểu dữ liệu không cần giống nhau vd: hàm function(search:string,age:number,page:Object)={...} thì serviceSpecificParams = ['param',16,{page:1,page:per_page:25}]\n cacheType?: 'service' | 'local-store';\n keyCache?: string; // sử dụng nếu sử dụng cache. khi tạo bộ config sử dụng đối tượng uuid để lấy một id set vào biến này. và biến này sẽ ko thay đổi trong quá trình sử dụng\n timeCache?: number; // đơn vị phút\n clearCache?: boolean;\n guideAutoUpdateArgumentsValue?: IGuideAutoUpdateArgumentsValue; // khai báo không sử dụng cho HttpRequestService. Dùng cho cá component muốn lấy thông tin update arguments để load more khi scroll bottom. Ví dụ như MoLibShareComponentsListViewTemplatesComponentAbstract\n convertResponseData?: (response: any) => any;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-services-http-request.mjs","sources":["../../../../../libs-ui/services/http-request/src/http-request.service.ts","../../../../../libs-ui/services/http-request/src/api-mockup.ts","../../../../../libs-ui/services/http-request/src/interfaces/http-request-config.interface.ts","../../../../../libs-ui/services/http-request/src/libs-ui-services-http-request.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { IPaging } from '@libs-ui/interfaces-types';\nimport { UtilsCache, get, getKeyCacheByArrayObject, isEmpty, set } from '@libs-ui/utils';\nimport { lastValueFrom } from 'rxjs';\nimport { IGuideAutoUpdateArgumentsValue, IGuideAutoUpdateArgumentsValueConfig, IHttpRequestConfig } from './interfaces/index';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LibsUiHttpRequestService {\n /** Chứa dữ liệu cache memory */\n private serviceStore: Map<string, any>;\n /** Chứa các service common base api */\n private servicesCommon: Record<string, any> = {};\n\n /** Chứa các service call api đến backend */\n private servicesApiModules: Record<string, any> = {};\n\n constructor() {\n this.serviceStore = new Map();\n }\n\n public set ServicesCommon(serviceCommon: Record<string, any>) {\n this.servicesCommon = { ...this.servicesCommon, ...serviceCommon };\n }\n\n public set ServicesApiModules(servicesApiModules: Record<string, any>) {\n this.servicesApiModules = { ...this.servicesApiModules, ...servicesApiModules };\n }\n\n private getServiceByName(name: string): Record<string, any> | undefined {\n if (!name || !name.trim()) {\n return undefined;\n }\n if (name.startsWith('common')) {\n if (!this.servicesCommon) {\n throw 'service common is Empty, please inject MoLibsCoreUIHttpRequestService and call ServicesCommon update 1';\n }\n\n return this.servicesCommon[name];\n }\n\n if (name.startsWith('apiModule')) {\n if (!this.servicesApiModules) {\n throw 'service module is Empty, please inject MoLibsCoreUIHttpRequestService and call servicesModules update 2';\n }\n\n return this.servicesApiModules[name];\n }\n\n return undefined;\n }\n\n public refreshAllService() {\n if (!this.servicesApiModules) {\n throw 'service common is Empty, please inject MoLibsCoreUIHttpRequestService and call servicesModules update 3';\n }\n\n Object.keys(this.servicesApiModules).forEach((nameService: string) => (this.servicesApiModules as any)[nameService].refreshAPIUrl && (this.servicesApiModules as any)[nameService].refreshAPIUrl());\n }\n\n public async callApi<T = any>(httpRequestConfig: IHttpRequestConfig): Promise<T> {\n if (!httpRequestConfig || (!httpRequestConfig.serviceName && !httpRequestConfig.serviceOther) || !httpRequestConfig.functionName) {\n throw 'http request config not exactly httpRequestConfig';\n }\n const { serviceName, serviceOther, keyCache, functionName, argumentsValue } = httpRequestConfig;\n\n if (!serviceOther && (!serviceName || !serviceName.trim())) {\n throw `http request config not exactly serviceOther or serviceName`;\n }\n const serviceInstance: any = this.getServiceByName(serviceName || '') || serviceOther;\n\n if (!serviceInstance) {\n throw `http request notfound serviceInstance name: ${serviceName}`;\n }\n const methodInstance = serviceInstance[functionName];\n\n if (!methodInstance) {\n throw `http request config notfound methodInstance name: ${functionName}`;\n }\n const keyCacheMD5: string = getKeyCacheByArrayObject(keyCache || '', argumentsValue);\n const cacheData = await this.getCacheData(httpRequestConfig, keyCacheMD5);\n\n if (cacheData) {\n return Promise.resolve(cacheData);\n }\n\n let callResponse = methodInstance.apply(serviceInstance, argumentsValue);\n if (!callResponse.then) {\n callResponse = lastValueFrom(callResponse);\n }\n\n const res = await callResponse;\n\n return await this.setCacheData(res, httpRequestConfig, keyCacheMD5);\n }\n\n private async getCacheData(httpRequestConfig: IHttpRequestConfig, keyCache: string) {\n const { cacheType, convertResponseData } = httpRequestConfig;\n\n if (!cacheType || !keyCache) {\n return undefined;\n }\n if (cacheType === 'service') {\n const data = this.serviceStore.get(keyCache);\n\n return data ? (convertResponseData ? convertResponseData(data) : data) : data;\n }\n const data = await UtilsCache.GetAsync(keyCache, undefined, true);\n\n return data ? (convertResponseData ? convertResponseData(data) : data) : data;\n }\n\n private async setCacheData(data: any, httpRequestConfig: IHttpRequestConfig, keyCache: string) {\n const { cacheType, clearCache, convertResponseData } = httpRequestConfig;\n\n if (!cacheType || !keyCache) {\n return convertResponseData ? convertResponseData(data) : data;\n }\n if (clearCache === true) {\n this.clearCache(cacheType, keyCache);\n }\n if (cacheType === 'service') {\n this.serviceStore.set(keyCache, data);\n\n return convertResponseData ? convertResponseData(data) : data;\n }\n await UtilsCache.SetAsync(keyCache, data, (httpRequestConfig.timeCache || 5) * 60, true);\n\n return convertResponseData ? convertResponseData(data) : data;\n }\n\n private clearCache(cacheType: 'service' | 'local-store', keyCache: string) {\n if (cacheType === 'service') {\n this.serviceStore.delete(keyCache);\n\n return;\n }\n UtilsCache.ClearAsync(keyCache, true);\n }\n\n /**\n * @return trả về trạng thái đã load hết item chưa (ví dụ: dựa vào tham số này để quyết định có tiếp tục gọi api khi scroll ko) .\n */\n public updateArguments(\n argumentsValue: Array<any>,\n objectGetDataUpdate: Record<string, any>,\n pagingStore: IPaging,\n keySearch: string,\n searchOnline: boolean,\n loadedLastItem: boolean,\n guideAutoUpdateArgumentsValue?: IGuideAutoUpdateArgumentsValue\n ): boolean {\n if (!argumentsValue || !(argumentsValue instanceof Array) || loadedLastItem) {\n return true;\n }\n\n if (!guideAutoUpdateArgumentsValue) {\n return this.updateArgumentsDefault(argumentsValue, true, pagingStore, keySearch, searchOnline);\n }\n const { paging, search, other, detailById, sortOrderType, sortOrderBy } = guideAutoUpdateArgumentsValue;\n\n if (search) {\n search.fieldGetValue = 'keySearch';\n this.processUpdateArgumentsValeConfig(argumentsValue, { keySearch }, search);\n }\n if (objectGetDataUpdate?.['storeParamsCallApi'] && typeof objectGetDataUpdate?.['storeParamsCallApi'] === 'object' && !(objectGetDataUpdate?.['storeParamsCallApi'] as any).instanceSort) {\n objectGetDataUpdate['storeParamsCallApi'] = { ...objectGetDataUpdate['storeParamsCallApi'], instanceSort: {} };\n }\n if (sortOrderBy) {\n this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, sortOrderBy);\n }\n if (sortOrderType) {\n this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, sortOrderType);\n }\n if (other && other.length) {\n other.forEach((config) => this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, config));\n }\n if (detailById) {\n detailById.fieldGetValue = detailById.fieldGetValue || detailById.fieldGetValue.trim() || 'key';\n this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, detailById);\n }\n\n if (isEmpty(paging)) {\n return this.updateArgumentsDefault(argumentsValue, false, pagingStore || this.fakeResponsePagingApi()['paging'], keySearch, searchOnline);\n }\n const { page, before, after } = paging;\n\n if (page && objectGetDataUpdate) {\n page.preprocessor = (value: number): number => {\n return ++value;\n };\n const valuePage = +this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, page);\n const valueLastPage = +get(objectGetDataUpdate as any, 'paging.total_pages');\n\n if ((valuePage && Number(valuePage).valueOf() > Number(valueLastPage).valueOf()) || valueLastPage === 0) {\n return true;\n }\n }\n if (before && objectGetDataUpdate && !this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, before) && !get(objectGetDataUpdate, 'paging.fake')) {\n set(objectGetDataUpdate, 'paging.fake', false);\n\n return true;\n }\n if (after && objectGetDataUpdate && !this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, after) && !get(objectGetDataUpdate, 'paging.fake')) {\n set(objectGetDataUpdate, 'paging.fake', false);\n\n return true;\n }\n\n if (!argumentsValue || !argumentsValue.length) {\n return true;\n }\n\n return false;\n }\n\n private updateArgumentsDefault(argumentsValue: Array<any>, updateSearch: boolean, pagingStore: IPaging, keySearch: string, searchOnline: boolean) {\n if (!argumentsValue || !argumentsValue.length) {\n return true;\n }\n\n for (const index in argumentsValue) {\n let argumentValue = argumentsValue[index];\n\n if (!(argumentValue instanceof HttpParams)) {\n continue;\n }\n const pageValue = argumentValue.get('page');\n\n if (searchOnline && updateSearch) {\n argumentValue = argumentValue.set('search', keySearch);\n argumentsValue[index] = argumentValue;\n }\n if (argumentValue.has('before')) {\n argumentValue = argumentValue.set('before', pagingStore?.before);\n argumentsValue[index] = argumentValue;\n }\n if (argumentValue.has('after')) {\n argumentValue = argumentValue.set('after', pagingStore?.after);\n argumentsValue[index] = argumentValue;\n }\n if (Number(pageValue).valueOf() === -1) {\n return true;\n }\n if (!pagingStore || pageValue === undefined) {\n break;\n }\n\n const { page, total_pages } = pagingStore;\n const nextPage = (page || 0) + 1;\n\n if (nextPage && Number(nextPage).valueOf() > Number(total_pages).valueOf()) {\n return true;\n }\n argumentsValue[index] = argumentValue.set('page', nextPage);\n break;\n }\n\n return false;\n }\n\n private processUpdateArgumentsValeConfig(argumentsValue: Array<any>, objectGetDataUpdate: any, config: IGuideAutoUpdateArgumentsValueConfig) {\n if (!config || !objectGetDataUpdate) {\n return undefined;\n }\n if (config.log?.logInputs) {\n console.log('config', config);\n console.log('objectGetDataUpdate', objectGetDataUpdate);\n console.log('argumentsValue', argumentsValue);\n console.log('--------------------------------');\n }\n const { fieldUpdate, fieldGetValue, preprocessor } = config;\n\n if (!fieldUpdate || !fieldGetValue) {\n return undefined;\n }\n\n let value = get(objectGetDataUpdate, fieldGetValue);\n if (config.log?.logGetValue) {\n console.log(`value of objectGetDataUpdate[${fieldGetValue}]: `, value);\n }\n\n if (preprocessor) {\n value = preprocessor(value);\n }\n if (fieldUpdate) {\n let resultOfFieldUpdate = get(argumentsValue, fieldUpdate as any);\n\n if (resultOfFieldUpdate instanceof HttpParams) {\n resultOfFieldUpdate = resultOfFieldUpdate.set(config.subFieldUpdate || 'search', value);\n set(argumentsValue, fieldUpdate as any, resultOfFieldUpdate);\n\n return value;\n }\n if (resultOfFieldUpdate instanceof Array) {\n resultOfFieldUpdate.push(value);\n\n return value;\n }\n if (resultOfFieldUpdate instanceof Object) {\n set(resultOfFieldUpdate, config.subFieldUpdate || 'search', value);\n\n return value;\n }\n set(argumentsValue, fieldUpdate as any, value);\n\n return value;\n }\n\n return value;\n }\n\n public fakeResponsePagingApi(): { paging: IPaging } {\n return {\n paging: {\n page: 0,\n total_pages: 1,\n before: '',\n after: '',\n fake: true,\n },\n };\n }\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParams } from '@angular/common/http';\nimport { IHttpResponse } from '@libs-ui/interfaces-types';\nimport { UtilsHttpParamsRequest, get, isNil, set, isEqual } from '@libs-ui/utils';\nimport { Observable, delay, lastValueFrom, of, timer } from 'rxjs';\n\n/**\n * Trả về các phương thức để xử lý danh sách dữ liệu mock\n * @param data - Mảng dữ liệu mặc định để mock\n * @param functionGetData - Hàm tùy chọn để lấy dữ liệu động thay vì sử dụng data mặc định\n * @returns Đối tượng chứa các phương thức:\n * - list: Trả về Promise với toàn bộ dữ liệu (có delay 250ms)\n * - listObservable: Trả về Observable với toàn bộ dữ liệu (có delay 250ms)\n * - listPaging: Trả về Promise với dữ liệu đã phân trang dựa trên params (có delay 250ms)\n *\n * @example\n * ```typescript\n * const mockData = [{ id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }];\n * const listService = returnListObject(mockData);\n *\n * // Lấy toàn bộ dữ liệu\n * const allData = await listService.list();\n *\n * // Lấy dữ liệu phân trang\n * const params = new UtilsHttpParamsRequest();\n * params.set('page', '1');\n * params.set('per_page', '10');\n * const pagedData = await listService.listPaging(params);\n * ```\n */\n\nexport const returnListObject = (data?: Array<any>, functionGetData?: () => Array<any>) => {\n return {\n list: async <TypeResponse>(): Promise<IHttpResponse<TypeResponse>> => {\n if (functionGetData) {\n data = functionGetData();\n }\n await lastValueFrom(timer(250));\n return {\n code: 200,\n data: (data as any) || [],\n paging: {},\n };\n },\n listObservable: <TypeResponse>(): Observable<IHttpResponse<TypeResponse>> => {\n if (functionGetData) {\n data = functionGetData();\n }\n\n return of({\n code: 200,\n data: (data as any) || [],\n paging: {},\n }).pipe(delay(250));\n },\n listPaging: async <TypeResponse>(params: UtilsHttpParamsRequest): Promise<IHttpResponse<TypeResponse>> => {\n if (functionGetData) {\n data = functionGetData();\n }\n const page = parseInt(params.get('page') || '1');\n const per_page = parseInt(params.get('per_page') || '30');\n const result = pagingToList(data as Array<any>, page, per_page);\n\n await lastValueFrom(timer(250));\n\n return result as IHttpResponse<TypeResponse>;\n },\n };\n};\n\n/**\n * Tạo một đối tượng mock detail với các phương thức để lấy bản ghi riêng lẻ theo khóa.\n * Hỗ trợ cả mảng dữ liệu tĩnh và các hàm dữ liệu động.\n *\n * @template TypeResponse - Kiểu dữ liệu phản hồi mong đợi\n * @template TypeParams - Kiểu tham số HTTP (mặc định là any)\n *\n * @param httpParams - Tham số HTTP chứa:\n * - keys: Khóa (hoặc các khóa) cần tìm kiếm\n * - fieldKey: Tên trường để so khớp (mặc định là 'id')\n * - dataResponseOject: Cờ boolean để định dạng đối tượng phản hồi\n * @param data - Mảng dữ liệu tĩnh tùy chọn để tìm kiếm\n * @param functionGetData - Hàm tùy chọn trả về dữ liệu (có thể là Promise hoặc Observable)\n * @param ignoreSplit - Nếu true, coi keys như một giá trị đơn thay vì tách chuỗi\n * @param splitOperator - Toán tử tùy chỉnh để tách keys (mặc định là dấu phẩy)\n *\n * @returns Đối tượng với các phương thức:\n * - detailByData: Tìm kiếm thông qua mảng dữ liệu tĩnh được cung cấp\n * - detailByFunction: Gọi functionGetData để lấy dữ liệu mới, sau đó tìm kiếm\n *\n * @example\n * ```typescript\n * const params = new UtilsHttpParamsRequest({fromObject:{keys:'1',fieldKey:'id'}});\n * const mockDetail = returnDetailObject<User>(params, userData);\n * const user = await mockDetail.detailByData();\n * ```\n */\n\nexport const returnDetailObject = <TypeResponse, TypeParams = any>(\n httpParams: UtilsHttpParamsRequest<TypeParams> | HttpParams,\n data?: Array<any>,\n functionGetData?: () => Promise<IHttpResponse<TypeResponse>> | Observable<IHttpResponse<TypeResponse>>,\n ignoreSplit?: boolean,\n splitOperator?: string\n) => {\n const keysPrams: any = httpParams.get('keys');\n const fieldKey: string = httpParams.get('fieldKey') || 'id';\n const dataResponseOject: any = httpParams.get('dataResponseOject');\n\n return {\n detailByData: async (keys?: any): Promise<IHttpResponse<TypeResponse>> => {\n return filterData<TypeResponse>(fieldKey, data, keys ?? keysPrams, dataResponseOject, ignoreSplit, splitOperator);\n },\n\n detailByFunction: async (keys?: any): Promise<IHttpResponse<TypeResponse>> => {\n if (!functionGetData) {\n return await filterData<TypeResponse>(fieldKey, undefined, undefined, dataResponseOject, ignoreSplit, splitOperator);\n }\n\n let dataResult: any = functionGetData();\n\n try {\n if (dataResult['subscribe']) {\n dataResult = await lastValueFrom(dataResult);\n }\n if (dataResult['then']) {\n dataResult = await dataResult;\n }\n } catch (_) {\n dataResult = { data: [] };\n }\n\n data = dataResult.data;\n\n return await filterData<TypeResponse>(fieldKey, data, keys || keysPrams, dataResponseOject, ignoreSplit, splitOperator);\n },\n };\n};\n\nconst filterData = <TypeResponse>(fieldKey: string, data?: Array<any>, keys?: any, dataResponseOject?: boolean, ignoreSplit?: boolean, splitOperator?: string): IHttpResponse<TypeResponse> => {\n if (!data || typeof data !== 'object' || isNil(keys) || keys === '') {\n return {\n code: 200,\n data: undefined,\n paging: {},\n };\n }\n\n data = data || [];\n\n if (!(data instanceof Array)) {\n data = [data];\n }\n const result: any = [];\n\n if (!ignoreSplit && typeof keys === 'string') {\n keys = keys.split(splitOperator || ',');\n }\n\n if (typeof keys === 'number' || typeof keys === 'boolean' || (typeof keys === 'string' && ignoreSplit)) {\n keys = [keys];\n }\n\n keys.forEach((key: string) => {\n const resultFilter = data?.filter((elData: { [key: string]: any }) => isEqual(get(elData, fieldKey), key, { ignoreExactlyDataType: true }));\n\n if (resultFilter && resultFilter.length) {\n result.push(...resultFilter);\n }\n });\n\n return {\n code: 200,\n data: result.length ? (dataResponseOject ? result[0] : result) : undefined,\n paging: {},\n };\n};\n\nconst per_page = 20;\nconst total_items = per_page * 150 + 15;\n\nexport const getConfigListDataDemo = (httpParamsDetail: UtilsHttpParamsRequest<any> = new UtilsHttpParamsRequest(), objectData?: Record<string, string>, functionBuildObject?: (numIncrement: string) => Record<string, string>) => {\n if (!objectData) {\n objectData = {\n id: '',\n name: 'item positon index ',\n };\n }\n\n const data = [...Array(total_items).keys()].map((_, index) => {\n if (functionBuildObject) {\n return functionBuildObject(`${+index + 1}`);\n }\n const obj: Record<string, string> = {};\n Object.keys(objectData).forEach((key) => {\n set(obj, key, `${objectData[key]}${+index + 1}`);\n });\n return obj;\n });\n\n const listService = returnListObject(data);\n const detailService = returnDetailObject(httpParamsDetail, data, undefined, false, ';');\n return {\n list: listService.listPaging,\n detailByData: detailService.detailByData,\n };\n};\n\n/**\n * Hàm phân trang dữ liệu từ một mảng\n * @param data - Mảng dữ liệu cần phân trang\n * @param page - Số trang hiện tại (bắt đầu từ 1)\n * @param per_page - Số lượng item trên mỗi trang\n * @returns Đối tượng chứa dữ liệu đã phân trang và thông tin phân trang\n */\nexport const pagingToList = (data: Array<any>, page: number, per_page: number) => {\n if (!data || !Array.isArray(data)) {\n return {\n code: 200,\n data: [],\n paging: {\n page: page,\n per_page: per_page,\n total_items: 0,\n total_pages: 0,\n },\n };\n }\n const start = (page - 1) * per_page;\n const end = start + per_page;\n const total_pages = Math.ceil(data.length / per_page);\n const dataByPage = data.slice(start, end);\n return {\n code: 200,\n data: dataByPage,\n paging: {\n page: page > total_pages ? total_pages : page,\n per_page: per_page,\n total_items: data.length,\n total_pages: total_pages,\n },\n };\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { IGuideAutoUpdateArgumentsValue } from './guild-auto-update-arguments-value.interface';\n\nexport interface IHttpRequestConfig {\n serviceOther?: any; // là 1 object không được inject trong httpRequest; được sử dụng để lấy data từ 1 đối tượng không phải là service inject\n serviceName?: string; // tên service được inject trong http request service;\n functionName: string; // tên hàm muốn gọi trong service\n argumentsValue: Array<any>; // chứa dữ liệu của params truyền vào, mảng có kểu dữ liệu không cần giống nhau vd: hàm function(search:string,age:number,page:Object)={...} thì serviceSpecificParams = ['param',16,{page:1,page:per_page:25}]\n cacheType?: 'service' | 'local-store';\n keyCache?: string; // sử dụng nếu sử dụng cache. khi tạo bộ config sử dụng đối tượng uuid để lấy một id set vào biến này. và biến này sẽ ko thay đổi trong quá trình sử dụng\n timeCache?: number; // đơn vị phút\n clearCache?: boolean;\n guideAutoUpdateArgumentsValue?: IGuideAutoUpdateArgumentsValue; // khai báo không sử dụng cho HttpRequestService. Dùng cho cá component muốn lấy thông tin update arguments để load more khi scroll bottom. Ví dụ như MoLibShareComponentsListViewTemplatesComponentAbstract\n convertResponseData?: (response: any) => any;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -18,8 +18,8 @@ export declare class LibsUiHttpRequestService {
18
18
  private setCacheData;
19
19
  private clearCache;
20
20
  /**
21
- * @return trả về trạng thái đã load hết item chưa (ví dụ: dựa vào tham số này để quyết định có tiếp tục gọi api khi scroll ko) .
22
- */
21
+ * @return trả về trạng thái đã load hết item chưa (ví dụ: dựa vào tham số này để quyết định có tiếp tục gọi api khi scroll ko) .
22
+ */
23
23
  updateArguments(argumentsValue: Array<any>, objectGetDataUpdate: Record<string, any>, pagingStore: IPaging, keySearch: string, searchOnline: boolean, loadedLastItem: boolean, guideAutoUpdateArgumentsValue?: IGuideAutoUpdateArgumentsValue): boolean;
24
24
  private updateArgumentsDefault;
25
25
  private processUpdateArgumentsValeConfig;
@@ -1,4 +1,4 @@
1
- import { IGuideAutoUpdateArgumentsValue } from "./guild-auto-update-arguments-value.interface";
1
+ import { IGuideAutoUpdateArgumentsValue } from './guild-auto-update-arguments-value.interface';
2
2
  export interface IHttpRequestConfig {
3
3
  serviceOther?: any;
4
4
  serviceName?: string;
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@libs-ui/services-http-request",
3
- "version": "0.2.305",
3
+ "version": "0.2.306-10",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=18.0.0",
6
6
  "@angular/core": ">=18.0.0",
7
- "@libs-ui/interfaces-types": "0.2.305",
8
- "@libs-ui/utils": "0.2.305",
7
+ "@libs-ui/interfaces-types": "0.2.306-10",
8
+ "@libs-ui/utils": "0.2.306-10",
9
9
  "rxjs": "~7.8.0"
10
10
  },
11
11
  "sideEffects": false,