ravcredit-lib 0.0.4 → 0.0.6

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.
Files changed (49) hide show
  1. package/fesm2022/ravcredit-lib.mjs +666 -2
  2. package/fesm2022/ravcredit-lib.mjs.map +1 -1
  3. package/index.d.ts +1598 -4
  4. package/package.json +3 -4
  5. package/esm2022/lib/ravcredit-lib.component.mjs +0 -19
  6. package/esm2022/lib/ravcredit-lib.service.mjs +0 -14
  7. package/esm2022/lib/v1/objects/oAddress.mjs +0 -10
  8. package/esm2022/lib/v1/objects/oBusiness.mjs +0 -2
  9. package/esm2022/lib/v1/objects/oClient.mjs +0 -2
  10. package/esm2022/lib/v1/objects/oConekta.mjs +0 -85
  11. package/esm2022/lib/v1/objects/oContract.mjs +0 -2
  12. package/esm2022/lib/v1/objects/oContractAll.mjs +0 -2
  13. package/esm2022/lib/v1/objects/oCustomer.mjs +0 -18
  14. package/esm2022/lib/v1/objects/oDevice.mjs +0 -2
  15. package/esm2022/lib/v1/objects/oFinancial.mjs +0 -2
  16. package/esm2022/lib/v1/objects/oGlobal.mjs +0 -86
  17. package/esm2022/lib/v1/objects/oLogIn.mjs +0 -17
  18. package/esm2022/lib/v1/objects/oNewPayment.mjs +0 -2
  19. package/esm2022/lib/v1/objects/oNotification.mjs +0 -17
  20. package/esm2022/lib/v1/objects/oPassport.mjs +0 -7
  21. package/esm2022/lib/v1/objects/oUser.mjs +0 -2
  22. package/esm2022/lib/v1/util/UtilBusiness.mjs +0 -171
  23. package/esm2022/lib/v1/util/UtilClient.mjs +0 -221
  24. package/esm2022/lib/v1/util/UtilContract.mjs +0 -331
  25. package/esm2022/lib/v1/util/UtilDynamiCore.mjs +0 -292
  26. package/esm2022/public-api.mjs +0 -25
  27. package/esm2022/ravcredit-lib.mjs +0 -5
  28. package/lib/ravcredit-lib.component.d.ts +0 -5
  29. package/lib/ravcredit-lib.service.d.ts +0 -6
  30. package/lib/v1/objects/oAddress.d.ts +0 -10
  31. package/lib/v1/objects/oBusiness.d.ts +0 -101
  32. package/lib/v1/objects/oClient.d.ts +0 -43
  33. package/lib/v1/objects/oConekta.d.ts +0 -305
  34. package/lib/v1/objects/oContract.d.ts +0 -23
  35. package/lib/v1/objects/oContractAll.d.ts +0 -21
  36. package/lib/v1/objects/oCustomer.d.ts +0 -17
  37. package/lib/v1/objects/oDevice.d.ts +0 -5
  38. package/lib/v1/objects/oFinancial.d.ts +0 -30
  39. package/lib/v1/objects/oGlobal.d.ts +0 -149
  40. package/lib/v1/objects/oLogIn.d.ts +0 -30
  41. package/lib/v1/objects/oNewPayment.d.ts +0 -11
  42. package/lib/v1/objects/oNotification.d.ts +0 -25
  43. package/lib/v1/objects/oPassport.d.ts +0 -55
  44. package/lib/v1/objects/oUser.d.ts +0 -25
  45. package/lib/v1/util/UtilBusiness.d.ts +0 -52
  46. package/lib/v1/util/UtilClient.d.ts +0 -34
  47. package/lib/v1/util/UtilContract.d.ts +0 -70
  48. package/lib/v1/util/UtilDynamiCore.d.ts +0 -453
  49. package/public-api.d.ts +0 -21
@@ -1,171 +0,0 @@
1
- import { UntypedFormArray, UntypedFormControl, Validators } from "@angular/forms";
2
- import { cAddress } from '../objects/oAddress';
3
- export const cSchedule = {
4
- day: "",
5
- open: 0,
6
- close: 0,
7
- };
8
- export const cEmptyDay = {
9
- close: 0, open: 0, day: ""
10
- };
11
- export const week = [
12
- "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"
13
- ];
14
- export const cDefinedSchedule = [
15
- { close: 0, open: 0, day: "monday" },
16
- { close: 0, open: 0, day: "tuesday" },
17
- { close: 0, open: 0, day: "wednesday" },
18
- { close: 0, open: 0, day: "thursday" },
19
- { close: 0, open: 0, day: "friday" },
20
- { close: 0, open: 0, day: "saturday" },
21
- { close: 0, open: 0, day: "sunday" },
22
- ];
23
- export const cBusinessInfo = {
24
- version: "v2024",
25
- name: "",
26
- address: cAddress,
27
- phones: [],
28
- email: "",
29
- };
30
- export const cBusinessDeadlines = {
31
- weeks: 0,
32
- interest: 0
33
- };
34
- export const cBusinessConfig = {
35
- version: "",
36
- apiVersion: "",
37
- adminVersion: "",
38
- mobileVersion: "",
39
- mobileVersionPrev: "",
40
- deadlines: [],
41
- downloadsClient: false,
42
- passportPaymentReference: false,
43
- conektaPaymentReference: false,
44
- conektaPaymentLink: false,
45
- dynamicPaymentReference: false,
46
- apkUrl: "https://firebasestorage.googleapis.com/v0/b/ravcredit-2b079.appspot.com/o/mobile-app%2Fapp-release.apk?alt=media&token=ae05f332-a39a-46ad-8a64-312ae1487496"
47
- };
48
- export class FactoryBusiness {
49
- static FormBusinessInfo(info) {
50
- let data = cBusinessInfo;
51
- if (info)
52
- data = info;
53
- if (!info?.address)
54
- data.address = cAddress;
55
- return {
56
- name: new UntypedFormControl(data.name, Validators.required),
57
- email: new UntypedFormControl(data.email, [Validators.required, Validators.email]),
58
- desc: new UntypedFormControl(data.desc, [Validators.required, Validators.email]),
59
- street: new UntypedFormControl(data.address.street, Validators.required),
60
- neighbor: new UntypedFormControl(data.address.neighbor, Validators.required),
61
- cp: new UntypedFormControl(data.address.zip, Validators.required),
62
- ext: new UntypedFormControl(data.address.ext, Validators.required),
63
- int: new UntypedFormControl(data.address.int),
64
- city: new UntypedFormControl(data.address.city, Validators.required),
65
- state: new UntypedFormControl(data.address.state, Validators.required),
66
- phones: new UntypedFormControl(data.phones),
67
- mondayOpen: new UntypedFormControl(data.schedule?.monday.open),
68
- mondayClose: new UntypedFormControl(data.schedule?.monday.close),
69
- tuesdayOpen: new UntypedFormControl(data.schedule?.tuesday.open),
70
- tuesdayClose: new UntypedFormControl(data.schedule?.tuesday.close),
71
- wednesdayOpen: new UntypedFormControl(data.schedule?.wednesday.open),
72
- wednesdayClose: new UntypedFormControl(data.schedule?.wednesday.close),
73
- thursdayOpen: new UntypedFormControl(data.schedule?.thursday.open),
74
- thursdayClose: new UntypedFormControl(data.schedule?.thursday.close),
75
- fridayOpen: new UntypedFormControl(data.schedule?.friday.open),
76
- fridayClose: new UntypedFormControl(data.schedule?.friday.close),
77
- saturdayOpen: new UntypedFormControl(data.schedule?.saturday.open),
78
- saturdayClose: new UntypedFormControl(data.schedule?.saturday.close),
79
- sundayOpen: new UntypedFormControl(data.schedule?.sunday.open),
80
- sundayClose: new UntypedFormControl(data.schedule?.sunday.close),
81
- };
82
- }
83
- static CreateBusinessInfoObj(data) {
84
- const address = cAddress;
85
- const schedule = {
86
- monday: {},
87
- tuesday: {},
88
- wednesday: {},
89
- thursday: {},
90
- friday: {},
91
- saturday: {},
92
- sunday: {}
93
- };
94
- if (data.street)
95
- address.street = data.street;
96
- if (data.state)
97
- address.state = data.state;
98
- if (data.neighbor)
99
- address.neighbor = data.neighbor;
100
- if (data.city)
101
- address.city = data.city;
102
- if (data.ext)
103
- address.ext = data.ext;
104
- if (data.int)
105
- address.int = data.int;
106
- if (data.cp)
107
- address.zip = data.cp;
108
- if (data.mondayOpen)
109
- schedule.monday.open = data.mondayOpen;
110
- if (data.mondayClose)
111
- schedule.monday.close = data.mondayClose;
112
- if (data.tuesdayOpen)
113
- schedule.tuesday.open = data.tuesdayOpen;
114
- if (data.tuesdayClose)
115
- schedule.tuesday.close = data.tuesdayClose;
116
- if (data.wednesdayOpen)
117
- schedule.wednesday.open = data.wednesdayOpen;
118
- if (data.wednesdayClose)
119
- schedule.wednesday.close = data.wednesdayClose;
120
- if (data.thursdayOpen)
121
- schedule.thursday.open = data.thursdayOpen;
122
- if (data.thursdayClose)
123
- schedule.thursday.close = data.thursdayClose;
124
- if (data.fridayOpen)
125
- schedule.friday.open = data.fridayOpen;
126
- if (data.fridayClose)
127
- schedule.friday.close = data.fridayClose;
128
- if (data.saturdayOpen)
129
- schedule.saturday.open = data.saturdayOpen;
130
- if (data.saturdayClose)
131
- schedule.saturday.close = data.saturdayClose;
132
- if (data.sundayOpen)
133
- schedule.sunday.open = data.sundayOpen;
134
- if (data.sundayClose)
135
- schedule.sunday.close = data.sundayClose;
136
- const info = {
137
- version: "v2024",
138
- name: data.name ? data.name : "",
139
- address: address,
140
- phones: data.phones ? data.phones : [],
141
- email: data.email ? data.email : "",
142
- schedule: schedule,
143
- desc: data.desc ? data.desc : ""
144
- };
145
- return info;
146
- }
147
- static FormDeadlineConfig(data) {
148
- // if (!data) data = cBusinessDeadlines
149
- return {
150
- weeks: new UntypedFormControl(data.weeks),
151
- interest: new UntypedFormControl(data.interest),
152
- };
153
- }
154
- static FormBusinessConfig(config) {
155
- let data = cBusinessConfig;
156
- if (config)
157
- data = config;
158
- return {
159
- downloadsClient: new UntypedFormControl(data.downloadsClient),
160
- passportPaymentReference: new UntypedFormControl(data.passportPaymentReference),
161
- conektaPaymentReference: new UntypedFormControl(data.conektaPaymentReference),
162
- conektaPaymentLink: new UntypedFormControl(data.conektaPaymentLink),
163
- dynamicPaymentReference: new UntypedFormControl(data.dynamicPaymentReference),
164
- deadlines: new UntypedFormArray([])
165
- };
166
- }
167
- static testBusiness(message) {
168
- return `Message ${message}`;
169
- }
170
- }
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbEJ1c2luZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmF2Y3JlZGl0LWxpYi9zcmMvbGliL3YxL3V0aWwvVXRpbEJ1c2luZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQVNoRixPQUFPLEVBQUMsUUFBUSxFQUFXLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFjO0lBQ2xDLEdBQUcsRUFBRSxFQUFFO0lBQ1AsSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsQ0FBQztDQUNULENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQWM7SUFDbEMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO0NBQzNCLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQWE7SUFDNUIsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUTtDQUM3RSxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQWdCO0lBQzNDLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUM7SUFDbEMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQztJQUNuQyxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFDO0lBQ3JDLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUM7SUFDcEMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBQztJQUNsQyxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFDO0lBQ3BDLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUM7Q0FDbkMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBa0I7SUFDMUMsT0FBTyxFQUFFLE9BQU87SUFDaEIsSUFBSSxFQUFFLEVBQUU7SUFDUixPQUFPLEVBQUUsUUFBUTtJQUNqQixNQUFNLEVBQUUsRUFBRTtJQUNWLEtBQUssRUFBRSxFQUFFO0NBQ1YsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUF1QjtJQUNwRCxLQUFLLEVBQUUsQ0FBQztJQUNSLFFBQVEsRUFBRSxDQUFDO0NBQ1osQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0I7SUFDOUMsT0FBTyxFQUFFLEVBQUU7SUFDWCxVQUFVLEVBQUUsRUFBRTtJQUNkLFlBQVksRUFBRSxFQUFFO0lBQ2hCLGFBQWEsRUFBRSxFQUFFO0lBQ2pCLGlCQUFpQixFQUFFLEVBQUU7SUFDckIsU0FBUyxFQUFFLEVBQUU7SUFDYixlQUFlLEVBQUUsS0FBSztJQUN0Qix3QkFBd0IsRUFBRSxLQUFLO0lBQy9CLHVCQUF1QixFQUFFLEtBQUs7SUFDOUIsa0JBQWtCLEVBQUUsS0FBSztJQUN6Qix1QkFBdUIsRUFBRSxLQUFLO0lBQzlCLE1BQU0sRUFBRSw2SkFBNko7Q0FDdEssQ0FBQTtBQUlELE1BQU0sT0FBTyxlQUFlO0lBRW5CLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFvQjtRQUNqRCxJQUFJLElBQUksR0FBRyxhQUFhLENBQUE7UUFFeEIsSUFBSSxJQUFJO1lBQUUsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUVyQixJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU87WUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQTtRQUUzQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQzVELEtBQUssRUFBRSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRixJQUFJLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEYsTUFBTSxFQUFFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUN4RSxRQUFRLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQzVFLEVBQUUsRUFBRSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDakUsR0FBRyxFQUFFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNsRSxHQUFHLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUM3QyxJQUFJLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3BFLEtBQUssRUFBRSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDdEUsTUFBTSxFQUFFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMzQyxVQUFVLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDOUQsV0FBVyxFQUFFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ2hFLFdBQVcsRUFBRSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoRSxZQUFZLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDbEUsYUFBYSxFQUFFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3BFLGNBQWMsRUFBRSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUN0RSxZQUFZLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbEUsYUFBYSxFQUFFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ3BFLFVBQVUsRUFBRSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztZQUM5RCxXQUFXLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDaEUsWUFBWSxFQUFFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xFLGFBQWEsRUFBRSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNwRSxVQUFVLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDOUQsV0FBVyxFQUFFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ2pFLENBQUE7SUFFSCxDQUFDO0lBRU0sTUFBTSxDQUFDLHFCQUFxQixDQUFDLElBQXdCO1FBQzFELE1BQU0sT0FBTyxHQUFhLFFBQVEsQ0FBQTtRQUNsQyxNQUFNLFFBQVEsR0FBaUI7WUFDN0IsTUFBTSxFQUFFLEVBQUU7WUFDVixPQUFPLEVBQUUsRUFBRTtZQUNYLFNBQVMsRUFBRSxFQUFFO1lBQ2IsUUFBUSxFQUFFLEVBQUU7WUFDWixNQUFNLEVBQUUsRUFBRTtZQUNWLFFBQVEsRUFBRSxFQUFFO1lBQ1osTUFBTSxFQUFFLEVBQUU7U0FDWCxDQUFBO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUM3QyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQzFDLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7UUFDbkQsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUN2QyxJQUFJLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFBO1FBQ3BDLElBQUksSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUE7UUFDcEMsSUFBSSxJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQTtRQUVsQyxJQUFJLElBQUksQ0FBQyxVQUFVO1lBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQTtRQUMzRCxJQUFJLElBQUksQ0FBQyxXQUFXO1lBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUU5RCxJQUFJLElBQUksQ0FBQyxXQUFXO1lBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUM5RCxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQTtRQUVqRSxJQUFJLElBQUksQ0FBQyxhQUFhO1lBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQTtRQUNwRSxJQUFJLElBQUksQ0FBQyxjQUFjO1lBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQTtRQUV2RSxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQTtRQUNqRSxJQUFJLElBQUksQ0FBQyxhQUFhO1lBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQTtRQUVwRSxJQUFJLElBQUksQ0FBQyxVQUFVO1lBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQTtRQUMzRCxJQUFJLElBQUksQ0FBQyxXQUFXO1lBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUU5RCxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQTtRQUNqRSxJQUFJLElBQUksQ0FBQyxhQUFhO1lBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQTtRQUVwRSxJQUFJLElBQUksQ0FBQyxVQUFVO1lBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQTtRQUMzRCxJQUFJLElBQUksQ0FBQyxXQUFXO1lBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUU5RCxNQUFNLElBQUksR0FBa0I7WUFDMUIsT0FBTyxFQUFFLE9BQU87WUFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEMsT0FBTyxFQUFFLE9BQU87WUFDaEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkMsUUFBUSxFQUFFLFFBQVE7WUFDbEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDakMsQ0FBQTtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUF3QjtRQUN2RCx1Q0FBdUM7UUFFdkMsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekMsUUFBUSxFQUFFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUNoRCxDQUFBO0lBQ0gsQ0FBQztJQUdNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUF3QjtRQUN2RCxJQUFJLElBQUksR0FBRyxlQUFlLENBQUE7UUFDMUIsSUFBSSxNQUFNO1lBQUUsSUFBSSxHQUFHLE1BQU0sQ0FBQTtRQUV6QixPQUFPO1lBQ0wsZUFBZSxFQUFFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM3RCx3QkFBd0IsRUFBRSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztZQUMvRSx1QkFBdUIsRUFBRSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztZQUM3RSxrQkFBa0IsRUFBRSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUNuRSx1QkFBdUIsRUFBRSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztZQUM3RSxTQUFTLEVBQUUsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7U0FDcEMsQ0FBQTtJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQWU7UUFDeEMsT0FBTyxXQUFXLE9BQU8sRUFBRSxDQUFBO0lBQzdCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0b3JzfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG4gIG9CdXNpbmVzc0NvbmZpZyxcbiAgb0J1c2luZXNzRGVhZGxpbmVzLFxuICBvQnVzaW5lc3NJbmZvLFxuICBvU2NoZWR1bGUsXG4gIG9UbXBCdXNpbmVzc0NvbmZpZyxcbiAgd2Vla1NjaGVkdWxlXG59IGZyb20gXCIuLi9vYmplY3RzL29CdXNpbmVzc1wiO1xuaW1wb3J0IHtjQWRkcmVzcywgb0FkZHJlc3N9IGZyb20gJy4uL29iamVjdHMvb0FkZHJlc3MnO1xuXG5leHBvcnQgY29uc3QgY1NjaGVkdWxlOiBvU2NoZWR1bGUgPSB7XG4gIGRheTogXCJcIixcbiAgb3BlbjogMCxcbiAgY2xvc2U6IDAsXG59XG5cbmV4cG9ydCBjb25zdCBjRW1wdHlEYXk6IG9TY2hlZHVsZSA9IHtcbiAgY2xvc2U6IDAsIG9wZW46IDAsIGRheTogXCJcIlxufVxuXG5leHBvcnQgY29uc3Qgd2Vlazogc3RyaW5nW10gPSBbXG4gIFwibW9uZGF5XCIsIFwidHVlc2RheVwiLCBcIndlZG5lc2RheVwiLCBcInRodXJzZGF5XCIsIFwiZnJpZGF5XCIsIFwic2F0dXJkYXlcIiwgXCJzdW5kYXlcIlxuXVxuXG5leHBvcnQgY29uc3QgY0RlZmluZWRTY2hlZHVsZTogb1NjaGVkdWxlW10gPSBbXG4gIHtjbG9zZTogMCwgb3BlbjogMCwgZGF5OiBcIm1vbmRheVwifSxcbiAge2Nsb3NlOiAwLCBvcGVuOiAwLCBkYXk6IFwidHVlc2RheVwifSxcbiAge2Nsb3NlOiAwLCBvcGVuOiAwLCBkYXk6IFwid2VkbmVzZGF5XCJ9LFxuICB7Y2xvc2U6IDAsIG9wZW46IDAsIGRheTogXCJ0aHVyc2RheVwifSxcbiAge2Nsb3NlOiAwLCBvcGVuOiAwLCBkYXk6IFwiZnJpZGF5XCJ9LFxuICB7Y2xvc2U6IDAsIG9wZW46IDAsIGRheTogXCJzYXR1cmRheVwifSxcbiAge2Nsb3NlOiAwLCBvcGVuOiAwLCBkYXk6IFwic3VuZGF5XCJ9LFxuXVxuXG5leHBvcnQgY29uc3QgY0J1c2luZXNzSW5mbzogb0J1c2luZXNzSW5mbyA9IHtcbiAgdmVyc2lvbjogXCJ2MjAyNFwiLFxuICBuYW1lOiBcIlwiLFxuICBhZGRyZXNzOiBjQWRkcmVzcyxcbiAgcGhvbmVzOiBbXSxcbiAgZW1haWw6IFwiXCIsXG59XG5cbmV4cG9ydCBjb25zdCBjQnVzaW5lc3NEZWFkbGluZXM6IG9CdXNpbmVzc0RlYWRsaW5lcyA9IHtcbiAgd2Vla3M6IDAsXG4gIGludGVyZXN0OiAwXG59XG5cbmV4cG9ydCBjb25zdCBjQnVzaW5lc3NDb25maWc6IG9CdXNpbmVzc0NvbmZpZyA9IHtcbiAgdmVyc2lvbjogXCJcIixcbiAgYXBpVmVyc2lvbjogXCJcIixcbiAgYWRtaW5WZXJzaW9uOiBcIlwiLFxuICBtb2JpbGVWZXJzaW9uOiBcIlwiLFxuICBtb2JpbGVWZXJzaW9uUHJldjogXCJcIixcbiAgZGVhZGxpbmVzOiBbXSxcbiAgZG93bmxvYWRzQ2xpZW50OiBmYWxzZSxcbiAgcGFzc3BvcnRQYXltZW50UmVmZXJlbmNlOiBmYWxzZSxcbiAgY29uZWt0YVBheW1lbnRSZWZlcmVuY2U6IGZhbHNlLFxuICBjb25la3RhUGF5bWVudExpbms6IGZhbHNlLFxuICBkeW5hbWljUGF5bWVudFJlZmVyZW5jZTogZmFsc2UsXG4gIGFwa1VybDogXCJodHRwczovL2ZpcmViYXNlc3RvcmFnZS5nb29nbGVhcGlzLmNvbS92MC9iL3JhdmNyZWRpdC0yYjA3OS5hcHBzcG90LmNvbS9vL21vYmlsZS1hcHAlMkZhcHAtcmVsZWFzZS5hcGs/YWx0PW1lZGlhJnRva2VuPWFlMDVmMzMyLWEzOWEtNDZhZC04YTY0LTMxMmFlMTQ4NzQ5NlwiXG59XG5cblxuXG5leHBvcnQgY2xhc3MgRmFjdG9yeUJ1c2luZXNzIHtcblxuICBwdWJsaWMgc3RhdGljIEZvcm1CdXNpbmVzc0luZm8oaW5mbz86IG9CdXNpbmVzc0luZm8pIHtcbiAgICBsZXQgZGF0YSA9IGNCdXNpbmVzc0luZm9cblxuICAgIGlmIChpbmZvKSBkYXRhID0gaW5mb1xuXG4gICAgaWYgKCFpbmZvPy5hZGRyZXNzKSBkYXRhLmFkZHJlc3MgPSBjQWRkcmVzc1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZGF0YS5uYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIGVtYWlsOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGRhdGEuZW1haWwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXSksXG4gICAgICBkZXNjOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGRhdGEuZGVzYywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdKSxcbiAgICAgIHN0cmVldDogbmV3IFVudHlwZWRGb3JtQ29udHJvbChkYXRhLmFkZHJlc3Muc3RyZWV0LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIG5laWdoYm9yOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGRhdGEuYWRkcmVzcy5uZWlnaGJvciwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICBjcDogbmV3IFVudHlwZWRGb3JtQ29udHJvbChkYXRhLmFkZHJlc3MuemlwLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIGV4dDogbmV3IFVudHlwZWRGb3JtQ29udHJvbChkYXRhLmFkZHJlc3MuZXh0LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIGludDogbmV3IFVudHlwZWRGb3JtQ29udHJvbChkYXRhLmFkZHJlc3MuaW50KSxcbiAgICAgIGNpdHk6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZGF0YS5hZGRyZXNzLmNpdHksIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgc3RhdGU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZGF0YS5hZGRyZXNzLnN0YXRlLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIHBob25lczogbmV3IFVudHlwZWRGb3JtQ29udHJvbChkYXRhLnBob25lcyksXG4gICAgICBtb25kYXlPcGVuOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGRhdGEuc2NoZWR1bGU/Lm1vbmRheS5vcGVuKSxcbiAgICAgIG1vbmRheUNsb3NlOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGRhdGEuc2NoZWR1bGU/Lm1vbmRheS5jbG9zZSksXG4gICAgICB0dWVzZGF5T3BlbjogbmV3IFVudHlwZWRGb3JtQ29udHJvbChkYXRhLnNjaGVkdWxlPy50dWVzZGF5Lm9wZW4pLFxuICAgICAgdHVlc2RheUNsb3NlOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGRhdGEuc2NoZWR1bGU/LnR1ZXNkYXkuY2xvc2UpLFxuICAgICAgd2VkbmVzZGF5T3BlbjogbmV3IFVudHlwZWRGb3JtQ29udHJvbChkYXRhLnNjaGVkdWxlPy53ZWRuZXNkYXkub3BlbiksXG4gICAgICB3ZWRuZXNkYXlDbG9zZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbChkYXRhLnNjaGVkdWxlPy53ZWRuZXNkYXkuY2xvc2UpLFxuICAgICAgdGh1cnNkYXlPcGVuOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGRhdGEuc2NoZWR1bGU/LnRodXJzZGF5Lm9wZW4pLFxuICAgICAgdGh1cnNkYXlDbG9zZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbChkYXRhLnNjaGVkdWxlPy50aHVyc2RheS5jbG9zZSksXG4gICAgICBmcmlkYXlPcGVuOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGRhdGEuc2NoZWR1bGU/LmZyaWRheS5vcGVuKSxcbiAgICAgIGZyaWRheUNsb3NlOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGRhdGEuc2NoZWR1bGU/LmZyaWRheS5jbG9zZSksXG4gICAgICBzYXR1cmRheU9wZW46IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZGF0YS5zY2hlZHVsZT8uc2F0dXJkYXkub3BlbiksXG4gICAgICBzYXR1cmRheUNsb3NlOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGRhdGEuc2NoZWR1bGU/LnNhdHVyZGF5LmNsb3NlKSxcbiAgICAgIHN1bmRheU9wZW46IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZGF0YS5zY2hlZHVsZT8uc3VuZGF5Lm9wZW4pLFxuICAgICAgc3VuZGF5Q2xvc2U6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZGF0YS5zY2hlZHVsZT8uc3VuZGF5LmNsb3NlKSxcbiAgICB9XG5cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgQ3JlYXRlQnVzaW5lc3NJbmZvT2JqKGRhdGE6IG9UbXBCdXNpbmVzc0NvbmZpZykge1xuICAgIGNvbnN0IGFkZHJlc3M6IG9BZGRyZXNzID0gY0FkZHJlc3NcbiAgICBjb25zdCBzY2hlZHVsZTogd2Vla1NjaGVkdWxlID0ge1xuICAgICAgbW9uZGF5OiB7fSxcbiAgICAgIHR1ZXNkYXk6IHt9LFxuICAgICAgd2VkbmVzZGF5OiB7fSxcbiAgICAgIHRodXJzZGF5OiB7fSxcbiAgICAgIGZyaWRheToge30sXG4gICAgICBzYXR1cmRheToge30sXG4gICAgICBzdW5kYXk6IHt9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuc3RyZWV0KSBhZGRyZXNzLnN0cmVldCA9IGRhdGEuc3RyZWV0XG4gICAgaWYgKGRhdGEuc3RhdGUpIGFkZHJlc3Muc3RhdGUgPSBkYXRhLnN0YXRlXG4gICAgaWYgKGRhdGEubmVpZ2hib3IpIGFkZHJlc3MubmVpZ2hib3IgPSBkYXRhLm5laWdoYm9yXG4gICAgaWYgKGRhdGEuY2l0eSkgYWRkcmVzcy5jaXR5ID0gZGF0YS5jaXR5XG4gICAgaWYgKGRhdGEuZXh0KSBhZGRyZXNzLmV4dCA9IGRhdGEuZXh0XG4gICAgaWYgKGRhdGEuaW50KSBhZGRyZXNzLmludCA9IGRhdGEuaW50XG4gICAgaWYgKGRhdGEuY3ApIGFkZHJlc3MuemlwID0gZGF0YS5jcFxuXG4gICAgaWYgKGRhdGEubW9uZGF5T3Blbikgc2NoZWR1bGUubW9uZGF5Lm9wZW4gPSBkYXRhLm1vbmRheU9wZW5cbiAgICBpZiAoZGF0YS5tb25kYXlDbG9zZSkgc2NoZWR1bGUubW9uZGF5LmNsb3NlID0gZGF0YS5tb25kYXlDbG9zZVxuXG4gICAgaWYgKGRhdGEudHVlc2RheU9wZW4pIHNjaGVkdWxlLnR1ZXNkYXkub3BlbiA9IGRhdGEudHVlc2RheU9wZW5cbiAgICBpZiAoZGF0YS50dWVzZGF5Q2xvc2UpIHNjaGVkdWxlLnR1ZXNkYXkuY2xvc2UgPSBkYXRhLnR1ZXNkYXlDbG9zZVxuXG4gICAgaWYgKGRhdGEud2VkbmVzZGF5T3Blbikgc2NoZWR1bGUud2VkbmVzZGF5Lm9wZW4gPSBkYXRhLndlZG5lc2RheU9wZW5cbiAgICBpZiAoZGF0YS53ZWRuZXNkYXlDbG9zZSkgc2NoZWR1bGUud2VkbmVzZGF5LmNsb3NlID0gZGF0YS53ZWRuZXNkYXlDbG9zZVxuXG4gICAgaWYgKGRhdGEudGh1cnNkYXlPcGVuKSBzY2hlZHVsZS50aHVyc2RheS5vcGVuID0gZGF0YS50aHVyc2RheU9wZW5cbiAgICBpZiAoZGF0YS50aHVyc2RheUNsb3NlKSBzY2hlZHVsZS50aHVyc2RheS5jbG9zZSA9IGRhdGEudGh1cnNkYXlDbG9zZVxuXG4gICAgaWYgKGRhdGEuZnJpZGF5T3Blbikgc2NoZWR1bGUuZnJpZGF5Lm9wZW4gPSBkYXRhLmZyaWRheU9wZW5cbiAgICBpZiAoZGF0YS5mcmlkYXlDbG9zZSkgc2NoZWR1bGUuZnJpZGF5LmNsb3NlID0gZGF0YS5mcmlkYXlDbG9zZVxuXG4gICAgaWYgKGRhdGEuc2F0dXJkYXlPcGVuKSBzY2hlZHVsZS5zYXR1cmRheS5vcGVuID0gZGF0YS5zYXR1cmRheU9wZW5cbiAgICBpZiAoZGF0YS5zYXR1cmRheUNsb3NlKSBzY2hlZHVsZS5zYXR1cmRheS5jbG9zZSA9IGRhdGEuc2F0dXJkYXlDbG9zZVxuXG4gICAgaWYgKGRhdGEuc3VuZGF5T3Blbikgc2NoZWR1bGUuc3VuZGF5Lm9wZW4gPSBkYXRhLnN1bmRheU9wZW5cbiAgICBpZiAoZGF0YS5zdW5kYXlDbG9zZSkgc2NoZWR1bGUuc3VuZGF5LmNsb3NlID0gZGF0YS5zdW5kYXlDbG9zZVxuXG4gICAgY29uc3QgaW5mbzogb0J1c2luZXNzSW5mbyA9IHtcbiAgICAgIHZlcnNpb246IFwidjIwMjRcIixcbiAgICAgIG5hbWU6IGRhdGEubmFtZSA/IGRhdGEubmFtZSA6IFwiXCIsXG4gICAgICBhZGRyZXNzOiBhZGRyZXNzLFxuICAgICAgcGhvbmVzOiBkYXRhLnBob25lcyA/IGRhdGEucGhvbmVzIDogW10sXG4gICAgICBlbWFpbDogZGF0YS5lbWFpbCA/IGRhdGEuZW1haWwgOiBcIlwiLFxuICAgICAgc2NoZWR1bGU6IHNjaGVkdWxlLFxuICAgICAgZGVzYzogZGF0YS5kZXNjID8gZGF0YS5kZXNjIDogXCJcIlxuICAgIH1cblxuICAgIHJldHVybiBpbmZvXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIEZvcm1EZWFkbGluZUNvbmZpZyhkYXRhOiBvQnVzaW5lc3NEZWFkbGluZXMpIHtcbiAgICAvLyBpZiAoIWRhdGEpIGRhdGEgPSBjQnVzaW5lc3NEZWFkbGluZXNcblxuICAgIHJldHVybiB7XG4gICAgICB3ZWVrczogbmV3IFVudHlwZWRGb3JtQ29udHJvbChkYXRhLndlZWtzKSxcbiAgICAgIGludGVyZXN0OiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGRhdGEuaW50ZXJlc3QpLFxuICAgIH1cbiAgfVxuXG5cbiAgcHVibGljIHN0YXRpYyBGb3JtQnVzaW5lc3NDb25maWcoY29uZmlnPzogb0J1c2luZXNzQ29uZmlnKSB7XG4gICAgbGV0IGRhdGEgPSBjQnVzaW5lc3NDb25maWdcbiAgICBpZiAoY29uZmlnKSBkYXRhID0gY29uZmlnXG5cbiAgICByZXR1cm4ge1xuICAgICAgZG93bmxvYWRzQ2xpZW50OiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGRhdGEuZG93bmxvYWRzQ2xpZW50KSxcbiAgICAgIHBhc3Nwb3J0UGF5bWVudFJlZmVyZW5jZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbChkYXRhLnBhc3Nwb3J0UGF5bWVudFJlZmVyZW5jZSksXG4gICAgICBjb25la3RhUGF5bWVudFJlZmVyZW5jZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbChkYXRhLmNvbmVrdGFQYXltZW50UmVmZXJlbmNlKSxcbiAgICAgIGNvbmVrdGFQYXltZW50TGluazogbmV3IFVudHlwZWRGb3JtQ29udHJvbChkYXRhLmNvbmVrdGFQYXltZW50TGluayksXG4gICAgICBkeW5hbWljUGF5bWVudFJlZmVyZW5jZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbChkYXRhLmR5bmFtaWNQYXltZW50UmVmZXJlbmNlKSxcbiAgICAgIGRlYWRsaW5lczogbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0ZXN0QnVzaW5lc3MobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBNZXNzYWdlICR7bWVzc2FnZX1gXG4gIH1cbn1cbiJdfQ==
@@ -1,221 +0,0 @@
1
- import { cConektaRecurrent } from '../objects/oConekta';
2
- import { cContract } from './UtilContract';
3
- import { eClientStatus } from '../objects/oGlobal';
4
- export const cClient = {
5
- id: "",
6
- name: "",
7
- username: "",
8
- email: "",
9
- phone: "",
10
- curp: "",
11
- contract_temporary: "",
12
- conekta_id: "",
13
- userReferences: [],
14
- status: ""
15
- };
16
- export const cUserReference = {
17
- name: "",
18
- phone: "",
19
- relationship: ""
20
- };
21
- export const cClientConekta = {
22
- conekta: cConektaRecurrent,
23
- ravcredit: cClient
24
- };
25
- export const cClientContract = {
26
- client: cClient,
27
- contract: cContract,
28
- };
29
- export class FactoryClient {
30
- static CreateClientToConektaObj(data) {
31
- const o = {};
32
- if (data.name && data.name.length > 0)
33
- o.name = data.name;
34
- if (data.username && data.name.length > 0)
35
- o.username = data.username;
36
- if (data.email && data.email.length > 0)
37
- o.email = data.email;
38
- if (data.phone && data.phone.length > 0)
39
- o.phone = String(data.phone);
40
- if (data.curp && data.curp.length > 0)
41
- o.curp = data.curp;
42
- if (data.userReferences && data.userReferences.length > 0)
43
- o.userReferences = data.userReferences;
44
- if (data.contract)
45
- o.contract = data.contract;
46
- if (data.createdAt)
47
- o.createdAt = data.createdAt;
48
- if (data.lastLogin)
49
- o.lastLogin = data.lastLogin;
50
- if (data.conekta_id)
51
- o.conekta_id = data.conekta_id;
52
- return o;
53
- }
54
- static CreateClientFromFormObj(data, client) {
55
- const o = {
56
- id: "",
57
- name: data["client"][0].name,
58
- username: data["auth"][0].username,
59
- password: data["auth"][0].password,
60
- email: data["client"][0].email,
61
- phone: String(data["client"][0].phone),
62
- curp: data["client"][0].curp,
63
- userReferences: data["client"][0].userReferences,
64
- status: eClientStatus.ACTIVE
65
- };
66
- if (client != undefined) {
67
- if (client.dynamic_id)
68
- o.dynamic_id = client.dynamic_id;
69
- if (client.dynamic_account)
70
- o.dynamic_account = client.dynamic_account;
71
- if (client.conekta_id)
72
- o.conekta_id = client.conekta_id;
73
- }
74
- return o;
75
- }
76
- static CreateClientConektaObj(data, finalDate) {
77
- const sources = {
78
- type: "oxxo_recurrent",
79
- expires_at: finalDate
80
- };
81
- return {
82
- name: data.name,
83
- email: data.email,
84
- phone: data.phone,
85
- contract: data.contract_temporary,
86
- client_id: data.id,
87
- payment_sources: [sources]
88
- };
89
- }
90
- static MapperConektaClient(client, conekta) {
91
- const o = client;
92
- o.name = conekta.name;
93
- o.email = conekta.email;
94
- o.phone = conekta.phone;
95
- o.conekta_id = conekta.id;
96
- return {
97
- client: o,
98
- contract: cContract
99
- };
100
- }
101
- static MapperTypeContCli_Client(_client) {
102
- const client = {
103
- id: _client.id,
104
- name: _client.name,
105
- username: _client.username,
106
- email: _client.email,
107
- phone: _client.phone,
108
- curp: _client.curp,
109
- userReferences: _client.userReferences,
110
- status: _client.status,
111
- contract: _client.contract,
112
- reference: _client.reference,
113
- references: _client.references,
114
- conekta_id: _client.conekta_id,
115
- dynamic_account: _client.dynamic_account,
116
- token: _client.token,
117
- contract_temporary: _client.contract_temporary,
118
- lastLogin: _client.lastLogin,
119
- dynamic_id: _client.dynamic_id,
120
- createdAt: _client.createdAt,
121
- payments: _client.payments,
122
- password: _client.password,
123
- contractUrl: _client.contractUrl,
124
- dynamic_ref: _client.dynamic_ref,
125
- exists: _client.exists,
126
- passport_id: _client.passport_id,
127
- };
128
- return client;
129
- }
130
- static MapperDynamicClient(dynamic, client, contract, clientDyn, account) {
131
- // const o: tyClientContract = cTyClientContract
132
- /* Client ------------------------------------------------------ */
133
- client.username = `${dynamic.pii.name} ${dynamic.pii.motherlastname} ${dynamic.pii.lastname}`;
134
- client.phone = dynamic.pii.phone;
135
- client.dynamic_id = dynamic.id;
136
- client.curp = dynamic.pii.curp;
137
- client.email = dynamic.pii.email;
138
- if (account)
139
- client.dynamic_account = account.id;
140
- /* Auth ---------------------------------------------------------- */
141
- /* Device -------------------------------------------------------- */
142
- contract.device.IMEI = clientDyn.pii.imei;
143
- contract.device.device = clientDyn.pii.model;
144
- /* Contract ------------------------------------------------------ */
145
- contract.by = clientDyn.pii.seller_name;
146
- if (clientDyn.pii.fotografia_del_cliente_con_el_equipo != undefined) {
147
- const oPhoto = clientDyn.pii.fotografia_del_cliente_con_el_equipo;
148
- if (oPhoto != "") {
149
- const _photo = JSON.parse(oPhoto);
150
- if (_photo)
151
- contract.photo = _photo[0].url;
152
- }
153
- }
154
- contract.address.state = dynamic.pii.state;
155
- contract.address.city = dynamic.pii.city;
156
- contract.address.street = dynamic.pii.street;
157
- contract.address.ext = dynamic.pii.num_ext;
158
- contract.address.zip = dynamic.pii.zipcode;
159
- contract.address.neighbor = dynamic.pii.colony;
160
- /* Financial ------------------------------------------------------ */
161
- contract.dynamicAccount = Number(account?.id);
162
- if (account?.config.installments) {
163
- contract.financial.deadlines = {
164
- weeks: account.config.installments,
165
- interest: 0
166
- };
167
- }
168
- if (account?.properties.expected_disbursed)
169
- contract.financial.total = account?.properties.expected_disbursed;
170
- if (account?.properties.principal_disbursed)
171
- contract.financial.financed = account?.properties.principal_disbursed;
172
- if (account?.properties.amount_commission_opening) {
173
- contract.financial.initial = account?.properties.amount_commission_opening;
174
- contract.financial.amount_commission_opening = account?.properties.amount_commission_opening;
175
- }
176
- contract.financial.interest_rate = Number(clientDyn.pii.interest_rate);
177
- contract.financial.interest_arrears = account?.config.interest_arrears;
178
- contract.financial.commission_opening = account?.config.commission_opening;
179
- contract.financial.credit_type = account?.config.credit_type;
180
- contract.financial.principal_disbursed = account?.properties.principal_disbursed;
181
- contract.financial.expected_disbursed = account?.properties.expected_disbursed;
182
- contract.financial.weeklyPayment = Number(clientDyn.pii.amount_by_period);
183
- return {
184
- client: client,
185
- contract: contract,
186
- };
187
- }
188
- static MapperFinancialContract(contract, account) {
189
- contract.dynamicAccount = Number(account.id);
190
- if (account.config.installments) {
191
- contract.financial.deadlines = {
192
- weeks: account.config.installments,
193
- interest: 0
194
- };
195
- }
196
- const total = account.config.financed_amount != undefined ? account.config.financed_amount : 0;
197
- if (total > 0)
198
- contract.financial.total = total;
199
- // if (account.properties.expected_disbursed)
200
- const expected_disbursed = account.properties.expected_disbursed != undefined ? account.properties.expected_disbursed : 0;
201
- if (expected_disbursed > 0)
202
- contract.financial.total = expected_disbursed;
203
- contract.financial.expected_disbursed = expected_disbursed;
204
- contract.financial.interest_rate = account.config.interest_rate;
205
- contract.financial.interest_arrears = account.config.interest_arrears;
206
- // if (account.properties.principal_disbursed)
207
- if (account.properties.principal_disbursed > 0)
208
- contract.financial.financed = account.properties.principal_disbursed;
209
- contract.financial.principal_disbursed = account.properties.principal_disbursed;
210
- const amount_commission_opening = account.properties.amount_commission_opening != undefined ? account.properties.amount_commission_opening : 0;
211
- if (amount_commission_opening > 0)
212
- contract.financial.initial = amount_commission_opening;
213
- contract.financial.amount_commission_opening = amount_commission_opening;
214
- contract.financial.interest_arrears = account.config.interest_arrears;
215
- contract.financial.commission_opening = account.config.commission_opening;
216
- contract.financial.credit_type = account.config.credit_type;
217
- contract.financial.clabe = String(account.properties.clabe);
218
- return contract.financial;
219
- }
220
- }
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JhdmNyZWRpdC1saWIvc3JjL2xpYi92MS91dGlsL1V0aWxDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGlCQUFpQixFQUFxQyxNQUFNLHFCQUFxQixDQUFDO0FBRTFGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFtQixNQUFNLG9CQUFvQixDQUFDO0FBSW5FLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBWTtJQUM5QixFQUFFLEVBQUUsRUFBRTtJQUNOLElBQUksRUFBRSxFQUFFO0lBQ1IsUUFBUSxFQUFFLEVBQUU7SUFDWixLQUFLLEVBQUUsRUFBRTtJQUNULEtBQUssRUFBRSxFQUFFO0lBQ1QsSUFBSSxFQUFFLEVBQUU7SUFDUixrQkFBa0IsRUFBRSxFQUFFO0lBQ3RCLFVBQVUsRUFBRSxFQUFFO0lBQ2QsY0FBYyxFQUFFLEVBQUU7SUFDbEIsTUFBTSxFQUFFLEVBQUU7Q0FDWCxDQUFBO0FBT0QsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFtQjtJQUM1QyxJQUFJLEVBQUUsRUFBRTtJQUNSLEtBQUssRUFBRSxFQUFFO0lBQ1QsWUFBWSxFQUFFLEVBQUU7Q0FDakIsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBbUI7SUFDNUMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixTQUFTLEVBQUUsT0FBTztDQUNuQixDQUFBO0FBT0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFvQjtJQUM5QyxNQUFNLEVBQUUsT0FBTztJQUNmLFFBQVEsRUFBRSxTQUFTO0NBQ3BCLENBQUE7QUFFRCxNQUFNLE9BQU8sYUFBYTtJQUVqQixNQUFNLENBQUMsd0JBQXdCLENBQUMsSUFBYTtRQUNsRCxNQUFNLENBQUMsR0FBUSxFQUFFLENBQUE7UUFDakIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDMUQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdEUsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDOUQsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEUsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDMUQsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxDQUFDLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDbEcsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyxTQUFTO1lBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pELElBQUksSUFBSSxDQUFDLFNBQVM7WUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakQsSUFBSSxJ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LENBQUMsQ0FBQyxDQUFBO1FBRTlHLElBQUkseUJBQXlCLEdBQUcsQ0FBQztZQUMvQixRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyx5QkFBeUIsQ0FBQTtRQUV4RCxRQUFRLENBQUMsU0FBUyxDQUFDLHlCQUF5QixHQUFHLHlCQUF5QixDQUFBO1FBRXhFLFFBQVEsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQTtRQUNyRSxRQUFRLENBQUMsU0FBUyxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUE7UUFDekUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUE7UUFFM0QsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBTSxDQUFDLENBQUE7UUFFNUQsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFBO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7b0NsaWVudCwgb1VzZXJSZWZlcmVuY2V9IGZyb20gJy4uL29iamVjdHMvb0NsaWVudCc7XG5pbXBvcnQge2NDb25la3RhUmVjdXJyZW50LCBpQ29uZWt0YVJlY3VycmVudCwgaUNvbmVrdGFTb3VyY2VzfSBmcm9tICcuLi9vYmplY3RzL29Db25la3RhJztcbmltcG9ydCB7b0NvbnRyYWN0fSBmcm9tICcuLi9vYmplY3RzL29Db250cmFjdCc7XG5pbXBvcnQge2NDb250cmFjdH0gZnJvbSAnLi9VdGlsQ29udHJhY3QnO1xuaW1wb3J0IHtlQ2xpZW50U3RhdHVzLCB0eUNsaWVudENvbnRyYWN0fSBmcm9tICcuLi9vYmplY3RzL29HbG9iYWwnO1xuaW1wb3J0IHtJRENBY2NvdW50LCBJRENDbGllbnR9IGZyb20gJy4vVXRpbER5bmFtaUNvcmUnO1xuaW1wb3J0IHtvRmluYW5jaWFsfSBmcm9tICcuLi9vYmplY3RzL29GaW5hbmNpYWwnO1xuXG5leHBvcnQgY29uc3QgY0NsaWVudDogb0NsaWVudCA9IHtcbiAgaWQ6IFwiXCIsXG4gIG5hbWU6IFwiXCIsXG4gIHVzZXJuYW1lOiBcIlwiLFxuICBlbWFpbDogXCJcIixcbiAgcGhvbmU6IFwiXCIsXG4gIGN1cnA6IFwiXCIsXG4gIGNvbnRyYWN0X3RlbXBvcmFyeTogXCJcIixcbiAgY29uZWt0YV9pZDogXCJcIixcbiAgdXNlclJlZmVyZW5jZXM6IFtdLFxuICBzdGF0dXM6IFwiXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBvQ2xpZW50Q29uZWt0YSB7XG4gIHJhdmNyZWRpdDogb0NsaWVudDtcbiAgY29uZWt0YTogaUNvbmVrdGFSZWN1cnJlbnQ7XG59XG5cbmV4cG9ydCBjb25zdCBjVXNlclJlZmVyZW5jZTogb1VzZXJSZWZlcmVuY2UgPSB7XG4gIG5hbWU6IFwiXCIsXG4gIHBob25lOiBcIlwiLFxuICByZWxhdGlvbnNoaXA6IFwiXCJcbn1cblxuZXhwb3J0IGNvbnN0IGNDbGllbnRDb25la3RhOiBvQ2xpZW50Q29uZWt0YSA9IHtcbiAgY29uZWt0YTogY0NvbmVrdGFSZWN1cnJlbnQsXG4gIHJhdmNyZWRpdDogY0NsaWVudFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIGlDbGllbnRDb250cmFjdCB7XG4gIGNsaWVudDogb0NsaWVudDtcbiAgY29udHJhY3Q6IG9Db250cmFjdDtcbn1cblxuZXhwb3J0IGNvbnN0IGNDbGllbnRDb250cmFjdDogaUNsaWVudENvbnRyYWN0ID0ge1xuICBjbGllbnQ6IGNDbGllbnQsXG4gIGNvbnRyYWN0OiBjQ29udHJhY3QsXG59XG5cbmV4cG9ydCBjbGFzcyBGYWN0b3J5Q2xpZW50IHtcblxuICBwdWJsaWMgc3RhdGljIENyZWF0ZUNsaWVudFRvQ29uZWt0YU9iaihkYXRhOiBvQ2xpZW50KSB7XG4gICAgY29uc3QgbzogYW55ID0ge31cbiAgICBpZiAoZGF0YS5uYW1lICYmIGRhdGEubmFtZS5sZW5ndGggPiAwKSBvLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgaWYgKGRhdGEudXNlcm5hbWUgJiYgZGF0YS5uYW1lLmxlbmd0aCA+IDApIG8udXNlcm5hbWUgPSBkYXRhLnVzZXJuYW1lO1xuICAgIGlmIChkYXRhLmVtYWlsICYmIGRhdGEuZW1haWwubGVuZ3RoID4gMCkgby5lbWFpbCA9IGRhdGEuZW1haWw7XG4gICAgaWYgKGRhdGEucGhvbmUgJiYgZGF0YS5waG9uZS5sZW5ndGggPiAwKSBvLnBob25lID0gU3RyaW5nKGRhdGEucGhvbmUpO1xuICAgIGlmIChkYXRhLmN1cnAgJiYgZGF0YS5jdXJwLmxlbmd0aCA+IDApIG8uY3VycCA9IGRhdGEuY3VycDtcbiAgICBpZiAoZGF0YS51c2VyUmVmZXJlbmNlcyAmJiBkYXRhLnVzZXJSZWZlcmVuY2VzLmxlbmd0aCA+IDApIG8udXNlclJlZmVyZW5jZXMgPSBkYXRhLnVzZXJSZWZlcmVuY2VzO1xuICAgIGlmIChkYXRhLmNvbnRyYWN0KSBvLmNvbnRyYWN0ID0gZGF0YS5jb250cmFjdDtcbiAgICBpZiAoZGF0YS5jcmVhdGVkQXQpIG8uY3JlYXRlZEF0ID0gZGF0YS5jcmVhdGVkQXQ7XG4gICAgaWYgKGRhdGEubGFzdExvZ2luKSBvLmxhc3RMb2dpbiA9IGRhdGEubGFzdExvZ2luO1xuICAgIGlmIChkYXRhLmNvbmVrdGFfaWQpIG8uY29uZWt0YV9pZCA9IGRhdGEuY29uZWt0YV9pZDtcblxuICAgIHJldHVybiBvXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIENyZWF0ZUNsaWVudEZyb21Gb3JtT2JqKGRhdGE6IGFueSwgY2xpZW50Pzogb0NsaWVudCk6IG9DbGllbnQge1xuICAgIGNvbnN0IG86IG9DbGllbnQgPSB7XG4gICAgICBpZDogXCJcIixcbiAgICAgIG5hbWU6IGRhdGFbXCJjbGllbnRcIl1bMF0ubmFtZSxcbiAgICAgIHVzZXJuYW1lOiBkYXRhW1wiYXV0aFwiXVswXS51c2VybmFtZSxcbiAgICAgIHBhc3N3b3JkOiBkYXRhW1wiYXV0aFwiXVswXS5wYXNzd29yZCxcbiAgICAgIGVtYWlsOiBkYXRhW1wiY2xpZW50XCJdWzBdLmVtYWlsLFxuICAgICAgcGhvbmU6IFN0cmluZyhkYXRhW1wiY2xpZW50XCJdWzBdLnBob25lKSxcbiAgICAgIGN1cnA6IGRhdGFbXCJjbGllbnRcIl1bMF0uY3VycCxcbiAgICAgIHVzZXJSZWZlcmVuY2VzOiBkYXRhW1wiY2xpZW50XCJdWzBdLnVzZXJSZWZlcmVuY2VzLFxuICAgICAgc3RhdHVzOiBlQ2xpZW50U3RhdHVzLkFDVElWRVxuICAgIH1cblxuICAgIGlmIChjbGllbnQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoY2xpZW50LmR5bmFtaWNfaWQpIG8uZHluYW1pY19pZCA9IGNsaWVudC5keW5hbWljX2lkO1xuICAgICAgaWYgKGNsaWVudC5keW5hbWljX2FjY291bnQpIG8uZHluYW1pY19hY2NvdW50ID0gY2xpZW50LmR5bmFtaWNfYWNjb3VudDtcbiAgICAgIGlmIChjbGllbnQuY29uZWt0YV9pZCkgby5jb25la3RhX2lkID0gY2xpZW50LmNvbmVrdGFfaWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgQ3JlYXRlQ2xpZW50Q29uZWt0YU9iaihkYXRhOiBvQ2xpZW50LCBmaW5hbERhdGU6IG51bWJlcikge1xuICAgIGNvbnN0IHNvdXJjZXM6IGlDb25la3RhU291cmNlcyA9IHtcbiAgICAgIHR5cGU6IFwib3h4b19yZWN1cnJlbnRcIixcbiAgICAgIGV4cGlyZXNfYXQ6IGZpbmFsRGF0ZVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogZGF0YS5uYW1lLFxuICAgICAgZW1haWw6IGRhdGEuZW1haWwsXG4gICAgICBwaG9uZTogZGF0YS5waG9uZSxcbiAgICAgIGNvbnRyYWN0OiBkYXRhLmNvbnRyYWN0X3RlbXBvcmFyeSxcbiAgICAgIGNsaWVudF9pZDogZGF0YS5pZCxcbiAgICAgIHBheW1lbnRfc291cmNlczogW3NvdXJjZXNdXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBNYXBwZXJDb25la3RhQ2xpZW50KFxuICAgIGNsaWVudDogb0NsaWVudCxcbiAgICBjb25la3RhOiBpQ29uZWt0YVJlY3VycmVudCxcbiAgKTogaUNsaWVudENvbnRyYWN0IHtcbiAgICBjb25zdCBvOiBvQ2xpZW50ID0gY2xpZW50XG5cbiAgICBvLm5hbWUgPSBjb25la3RhLm5hbWVcbiAgICBvLmVtYWlsID0gY29uZWt0YS5lbWFpbFxuICAgIG8ucGhvbmUgPSBjb25la3RhLnBob25lXG4gICAgby5jb25la3RhX2lkID0gY29uZWt0YS5pZFxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsaWVudDogbyxcbiAgICAgIGNvbnRyYWN0OiBjQ29udHJhY3RcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIE1hcHBlclR5cGVDb250Q2xpX0NsaWVudChfY2xpZW50OiB0eUNsaWVudENvbnRyYWN0KTogb0NsaWVudCB7XG4gICAgY29uc3QgY2xpZW50OiBvQ2xpZW50ID0ge1xuICAgICAgaWQ6IF9jbGllbnQuaWQsXG4gICAgICBuYW1lOiBfY2xpZW50Lm5hbWUsXG4gICAgICB1c2VybmFtZTogX2NsaWVudC51c2VybmFtZSxcbiAgICAgIGVtYWlsOiBfY2xpZW50LmVtYWlsLFxuICAgICAgcGhvbmU6IF9jbGllbnQucGhvbmUsXG4gICAgICBjdXJwOiBfY2xpZW50LmN1cnAsXG4gICAgICB1c2VyUmVmZXJlbmNlczogX2NsaWVudC51c2VyUmVmZXJlbmNlcyxcbiAgICAgIHN0YXR1czogX2NsaWVudC5zdGF0dXMsXG4gICAgICBjb250cmFjdDogX2NsaWVudC5jb250cmFjdCxcbiAgICAgIHJlZmVyZW5jZTogX2NsaWVudC5yZWZlcmVuY2UsXG4gICAgICByZWZlcmVuY2VzOiBfY2xpZW50LnJlZmVyZW5jZXMsXG4gICAgICBjb25la3RhX2lkOiBfY2xpZW50LmNvbmVrdGFfaWQsXG4gICAgICBkeW5hbWljX2FjY291bnQ6IF9jbGllbnQuZHluYW1pY19hY2NvdW50LFxuICAgICAgdG9rZW46IF9jbGllbnQudG9rZW4sXG4gICAgICBjb250cmFjdF90ZW1wb3Jhcnk6IF9jbGllbnQuY29udHJhY3RfdGVtcG9yYXJ5LFxuICAgICAgbGFzdExvZ2luOiBfY2xpZW50Lmxhc3RMb2dpbixcbiAgICAgIGR5bmFtaWNfaWQ6IF9jbGllbnQuZHluYW1pY19pZCxcbiAgICAgIGNyZWF0ZWRBdDogX2NsaWVudC5jcmVhdGVkQXQsXG4gICAgICBwYXltZW50czogX2NsaWVudC5wYXltZW50cyxcbiAgICAgIHBhc3N3b3JkOiBfY2xpZW50LnBhc3N3b3JkLFxuICAgICAgY29udHJhY3RVcmw6IF9jbGllbnQuY29udHJhY3RVcmwsXG4gICAgICBkeW5hbWljX3JlZjogX2NsaWVudC5keW5hbWljX3JlZixcbiAgICAgIGV4aXN0czogX2NsaWVudC5leGlzdHMsXG4gICAgICBwYXNzcG9ydF9pZDogX2NsaWVudC5wYXNzcG9ydF9pZCxcbiAgICB9XG5cbiAgICByZXR1cm4gY2xpZW50XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIE1hcHBlckR5bmFtaWNDbGllbnQoXG4gICAgZHluYW1pYzogSURDQ2xpZW50LFxuICAgIGNsaWVudDogb0NsaWVudCxcbiAgICBjb250cmFjdDogb0NvbnRyYWN0LFxuICAgIGNsaWVudER5bj86IElEQ0NsaWVudCxcbiAgICBhY2NvdW50PzogSURDQWNjb3VudCxcbiAgKTogaUNsaWVudENvbnRyYWN0IHtcbiAgICAvLyBjb25zdCBvOiB0eUNsaWVudENvbnRyYWN0ID0gY1R5Q2xpZW50Q29udHJhY3RcblxuICAgIC8qIENsaWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgICBjbGllbnQudXNlcm5hbWUgPSBgJHtkeW5hbWljLnBpaS5uYW1lfSAke2R5bmFtaWMucGlpLm1vdGhlcmxhc3RuYW1lfSAke2R5bmFtaWMucGlpLmxhc3RuYW1lfWBcbiAgICBjbGllbnQucGhvbmUgPSBkeW5hbWljLnBpaS5waG9uZSBhcyBzdHJpbmdcbiAgICBjbGllbnQuZHluYW1pY19pZCA9IGR5bmFtaWMuaWRcbiAgICBjbGllbnQuY3VycCA9IGR5bmFtaWMucGlpLmN1cnBcbiAgICBjbGllbnQuZW1haWwgPSBkeW5hbWljLnBpaS5lbWFpbFxuXG4gICAgaWYgKGFjY291bnQpXG4gICAgICBjbGllbnQuZHluYW1pY19hY2NvdW50ID0gYWNjb3VudC5pZFxuXG4gICAgLyogQXV0aCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblxuICAgIC8qIERldmljZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgIGNvbnRyYWN0LmRldmljZS5JTUVJID0gY2xpZW50RHluIS5waWkuaW1laVxuICAgIGNvbnRyYWN0LmRldmljZS5kZXZpY2UgPSBjbGllbnREeW4hLnBpaS5tb2RlbFxuXG4gICAgLyogQ29udHJhY3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4gICAgY29udHJhY3QuYnkgPSBjbGllbnREeW4hLnBpaS5zZWxsZXJfbmFtZVxuXG4gICAgaWYgKGNsaWVudER5biEucGlpLmZvdG9ncmFmaWFfZGVsX2NsaWVudGVfY29uX2VsX2VxdWlwbyAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9QaG90byA9IGNsaWVudER5biEucGlpLmZvdG9ncmFmaWFfZGVsX2NsaWVudGVfY29uX2VsX2VxdWlwbyFcbiAgICAgIGlmIChvUGhvdG8gIT0gXCJcIikge1xuICAgICAgICBjb25zdCBfcGhvdG8gPSBKU09OLnBhcnNlKG9QaG90bylcbiAgICAgICAgaWYgKF9waG90bylcbiAgICAgICAgICBjb250cmFjdC5waG90byA9IF9waG90b1swXS51cmxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb250cmFjdC5hZGRyZXNzLnN0YXRlID0gZHluYW1pYy5waWkuc3RhdGVcbiAgICBjb250cmFjdC5hZGRyZXNzLmNpdHkgPSBkeW5hbWljLnBpaS5jaXR5XG4gICAgY29udHJhY3QuYWRkcmVzcy5zdHJlZXQgPSBkeW5hbWljLnBpaS5zdHJlZXRcbiAgICBjb250cmFjdC5hZGRyZXNzLmV4dCA9IGR5bmFtaWMucGlpLm51bV9leHQgYXMgc3RyaW5nXG4gICAgY29udHJhY3QuYWRkcmVzcy56aXAgPSBkeW5hbWljLnBpaS56aXBjb2RlIGFzIHN0cmluZ1xuICAgIGNvbnRyYWN0LmFkZHJlc3MubmVpZ2hib3IgPSBkeW5hbWljLnBpaS5jb2xvbnlcblxuICAgIC8qIEZpbmFuY2lhbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgICBjb250cmFjdC5keW5hbWljQWNjb3VudCA9IE51bWJlcihhY2NvdW50Py5pZClcblxuICAgIGlmIChhY2NvdW50Py5jb25maWcuaW5zdGFsbG1lbnRzKSB7XG4gICAgICBjb250cmFjdC5maW5hbmNpYWwuZGVhZGxpbmVzID0ge1xuICAgICAgICB3ZWVrczogYWNjb3VudC5jb25maWcuaW5zdGFsbG1lbnRzLFxuICAgICAgICBpbnRlcmVzdDogMFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhY2NvdW50Py5wcm9wZXJ0aWVzLmV4cGVjdGVkX2Rpc2J1cnNlZClcbiAgICAgIGNvbnRyYWN0LmZpbmFuY2lhbC50b3RhbCA9IGFjY291bnQ/LnByb3BlcnRpZXMuZXhwZWN0ZWRfZGlzYnVyc2VkXG5cbiAgICBpZiAoYWNjb3VudD8ucHJvcGVydGllcy5wcmluY2lwYWxfZGlzYnVyc2VkKVxuICAgICAgY29udHJhY3QuZmluYW5jaWFsLmZpbmFuY2VkID0gYWNjb3VudD8ucHJvcGVydGllcy5wcmluY2lwYWxfZGlzYnVyc2VkXG5cbiAgICBpZiAoYWNjb3VudD8ucHJvcGVydGllcy5hbW91bnRfY29tbWlzc2lvbl9vcGVuaW5nKSB7XG4gICAgICBjb250cmFjdC5maW5hbmNpYWwuaW5pdGlhbCA9IGFjY291bnQ/LnByb3BlcnRpZXMuYW1vdW50X2NvbW1pc3Npb25fb3BlbmluZ1xuICAgICAgY29udHJhY3QuZmluYW5jaWFsLmFtb3VudF9jb21taXNzaW9uX29wZW5pbmcgPSBhY2NvdW50Py5wcm9wZXJ0aWVzLmFtb3VudF9jb21taXNzaW9uX29wZW5pbmdcbiAgICB9XG5cbiAgICBjb250cmFjdC5maW5hbmNpYWwuaW50ZXJlc3RfcmF0ZSA9IE51bWJlcihjbGllbnREeW4hLnBpaS5pbnRlcmVzdF9yYXRlKVxuICAgIGNvbnRyYWN0LmZpbmFuY2lhbC5pbnRlcmVzdF9hcnJlYXJzID0gYWNjb3VudD8uY29uZmlnLmludGVyZXN0X2FycmVhcnNcbiAgICBjb250cmFjdC5maW5hbmNpYWwuY29tbWlzc2lvbl9vcGVuaW5nID0gYWNjb3VudD8uY29uZmlnLmNvbW1pc3Npb25fb3BlbmluZ1xuICAgIGNvbnRyYWN0LmZpbmFuY2lhbC5jcmVkaXRfdHlwZSA9IGFjY291bnQ/LmNvbmZpZy5jcmVkaXRfdHlwZVxuXG4gICAgY29udHJhY3QuZmluYW5jaWFsLnByaW5jaXBhbF9kaXNidXJzZWQgPSBhY2NvdW50Py5wcm9wZXJ0aWVzLnByaW5jaXBhbF9kaXNidXJzZWRcbiAgICBjb250cmFjdC5maW5hbmNpYWwuZXhwZWN0ZWRfZGlzYnVyc2VkID0gYWNjb3VudD8ucHJvcGVydGllcy5leHBlY3RlZF9kaXNidXJzZWRcblxuICAgIGNvbnRyYWN0LmZpbmFuY2lhbC53ZWVrbHlQYXltZW50ID0gTnVtYmVyKGNsaWVudER5biEucGlpLmFtb3VudF9ieV9wZXJpb2QpXG5cbiAgICByZXR1cm4ge1xuICAgICAgY2xpZW50OiBjbGllbnQsXG4gICAgICBjb250cmFjdDogY29udHJhY3QsXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBNYXBwZXJGaW5hbmNpYWxDb250cmFjdChcbiAgICBjb250cmFjdDogb0NvbnRyYWN0LFxuICAgIGFjY291bnQ6IElEQ0FjY291bnQsXG4gICk6IG9GaW5hbmNpYWwge1xuXG4gICAgY29udHJhY3QuZHluYW1pY0FjY291bnQgPSBOdW1iZXIoYWNjb3VudC5pZClcblxuICAgIGlmIChhY2NvdW50LmNvbmZpZy5pbnN0YWxsbWVudHMpIHtcbiAgICAgIGNvbnRyYWN0LmZpbmFuY2lhbC5kZWFkbGluZXMgPSB7XG4gICAgICAgIHdlZWtzOiBhY2NvdW50LmNvbmZpZy5pbnN0YWxsbWVudHMsXG4gICAgICAgIGludGVyZXN0OiAwXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdG90YWwgPVxuICAgICAgYWNjb3VudC5jb25maWcuZmluYW5jZWRfYW1vdW50ICE9IHVuZGVmaW5lZCA/IGFjY291bnQuY29uZmlnLmZpbmFuY2VkX2Ftb3VudCA6IDBcblxuICAgIGlmICh0b3RhbCA+IDApXG4gICAgICBjb250cmFjdC5maW5hbmNpYWwudG90YWwgPSB0b3RhbFxuXG4gICAgLy8gaWYgKGFjY291bnQucHJvcGVydGllcy5leHBlY3RlZF9kaXNidXJzZWQpXG4gICAgY29uc3QgZXhwZWN0ZWRfZGlzYnVyc2VkID1cbiAgICAgIGFjY291bnQucHJvcGVydGllcy5leHBlY3RlZF9kaXNidXJzZWQgIT0gdW5kZWZpbmVkID8gYWNjb3VudC5wcm9wZXJ0aWVzLmV4cGVjdGVkX2Rpc2J1cnNlZCA6IDBcblxuICAgIGlmIChleHBlY3RlZF9kaXNidXJzZWQgPiAwKSBjb250cmFjdC5maW5hbmNpYWwudG90YWwgPSBleHBlY3RlZF9kaXNidXJzZWRcbiAgICBjb250cmFjdC5maW5hbmNpYWwuZXhwZWN0ZWRfZGlzYnVyc2VkID0gZXhwZWN0ZWRfZGlzYnVyc2VkXG5cbiAgICBjb250cmFjdC5maW5hbmNpYWwuaW50ZXJlc3RfcmF0ZSA9IGFjY291bnQuY29uZmlnLmludGVyZXN0X3JhdGVcbiAgICBjb250cmFjdC5maW5hbmNpYWwuaW50ZXJlc3RfYXJyZWFycyA9IGFjY291bnQuY29uZmlnLmludGVyZXN0X2FycmVhcnNcblxuICAgIC8vIGlmIChhY2NvdW50LnByb3BlcnRpZXMucHJpbmNpcGFsX2Rpc2J1cnNlZClcbiAgICBpZiAoYWNjb3VudC5wcm9wZXJ0aWVzLnByaW5jaXBhbF9kaXNidXJzZWQgPiAwKVxuICAgICAgY29udHJhY3QuZmluYW5jaWFsLmZpbmFuY2VkID0gYWNjb3VudC5wcm9wZXJ0aWVzLnByaW5jaXBhbF9kaXNidXJzZWRcblxuICAgIGNvbnRyYWN0LmZpbmFuY2lhbC5wcmluY2lwYWxfZGlzYnVyc2VkID0gYWNjb3VudC5wcm9wZXJ0aWVzLnByaW5jaXBhbF9kaXNidXJzZWRcblxuICAgIGNvbnN0IGFtb3VudF9jb21taXNzaW9uX29wZW5pbmcgPVxuICAgICAgYWNjb3VudC5wcm9wZXJ0aWVzLmFtb3VudF9jb21taXNzaW9uX29wZW5pbmcgIT0gdW5kZWZpbmVkID8gYWNjb3VudC5wcm9wZXJ0aWVzLmFtb3VudF9jb21taXNzaW9uX29wZW5pbmcgOiAwXG5cbiAgICBpZiAoYW1vdW50X2NvbW1pc3Npb25fb3BlbmluZyA+IDApXG4gICAgICBjb250cmFjdC5maW5hbmNpYWwuaW5pdGlhbCA9IGFtb3VudF9jb21taXNzaW9uX29wZW5pbmdcblxuICAgIGNvbnRyYWN0LmZpbmFuY2lhbC5hbW91bnRfY29tbWlzc2lvbl9vcGVuaW5nID0gYW1vdW50X2NvbW1pc3Npb25fb3BlbmluZ1xuXG4gICAgY29udHJhY3QuZmluYW5jaWFsLmludGVyZXN0X2FycmVhcnMgPSBhY2NvdW50LmNvbmZpZy5pbnRlcmVzdF9hcnJlYXJzXG4gICAgY29udHJhY3QuZmluYW5jaWFsLmNvbW1pc3Npb25fb3BlbmluZyA9IGFjY291bnQuY29uZmlnLmNvbW1pc3Npb25fb3BlbmluZ1xuICAgIGNvbnRyYWN0LmZpbmFuY2lhbC5jcmVkaXRfdHlwZSA9IGFjY291bnQuY29uZmlnLmNyZWRpdF90eXBlXG5cbiAgICBjb250cmFjdC5maW5hbmNpYWwuY2xhYmUgPSBTdHJpbmcoYWNjb3VudC5wcm9wZXJ0aWVzLmNsYWJlISlcblxuICAgIHJldHVybiBjb250cmFjdC5maW5hbmNpYWxcbiAgfVxufVxuIl19