ngx-dynamic-entity 0.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +129 -0
- package/esm2022/lib/field-types/array-field.component.mjs +160 -0
- package/esm2022/lib/field-types/boolean-field.component.mjs +100 -0
- package/esm2022/lib/field-types/checkbox-field.component.mjs +25 -17
- package/esm2022/lib/field-types/currency-field.component.mjs +101 -0
- package/esm2022/lib/field-types/date-field.component.mjs +21 -13
- package/esm2022/lib/field-types/dropdown-field.component.mjs +120 -29
- package/esm2022/lib/field-types/email-field.component.mjs +101 -0
- package/esm2022/lib/field-types/entity-ref-field.component.mjs +96 -32
- package/esm2022/lib/field-types/file-field.component.mjs +156 -0
- package/esm2022/lib/field-types/group-field.component.mjs +89 -0
- package/esm2022/lib/field-types/image-field.component.mjs +168 -0
- package/esm2022/lib/field-types/month-year-field.component.mjs +151 -0
- package/esm2022/lib/field-types/multi-select-field.component.mjs +79 -25
- package/esm2022/lib/field-types/number-field.component.mjs +60 -17
- package/esm2022/lib/field-types/password-field.component.mjs +109 -0
- package/esm2022/lib/field-types/radio-field.component.mjs +152 -0
- package/esm2022/lib/field-types/text-field.component.mjs +58 -18
- package/esm2022/lib/field-types/textarea-field.component.mjs +26 -15
- package/esm2022/lib/form/dynamic-field/dynamic-field.component.mjs +44 -26
- package/esm2022/lib/form/dynamic-form.component.mjs +676 -69
- package/esm2022/lib/form/dynamic-record-form.component.mjs +494 -0
- package/esm2022/lib/providers/provide-field-types.mjs +72 -0
- package/esm2022/lib/providers/provide-ngx-dynamic-entity.mjs +4 -5
- package/esm2022/lib/services/cascade-data.service.mjs +129 -0
- package/esm2022/lib/services/config-source.service.mjs +67 -0
- package/esm2022/lib/services/entity-ref-cache.mjs +20 -0
- package/esm2022/lib/services/entity-ref-registry.service.mjs +3 -3
- package/esm2022/lib/services/entity-ref-selection.service.mjs +27 -0
- package/esm2022/lib/services/entity-reference.service.mjs +168 -0
- package/esm2022/lib/services/field-registry.service.mjs +35 -30
- package/esm2022/lib/services/file-upload.service.mjs +89 -0
- package/esm2022/lib/services/lookup-registry.service.mjs +246 -0
- package/esm2022/lib/services/rbac.service.mjs +5 -11
- package/esm2022/lib/services/rules-evaluation.service.mjs +27 -0
- package/esm2022/lib/services/validator-registry.service.mjs +35 -7
- package/esm2022/lib/tokens/injection-tokens.mjs +104 -7
- package/esm2022/public-api.mjs +31 -6
- package/fesm2022/ngx-dynamic-entity.mjs +4094 -759
- package/fesm2022/ngx-dynamic-entity.mjs.map +1 -1
- package/lib/field-types/array-field.component.d.ts +22 -0
- package/lib/field-types/boolean-field.component.d.ts +18 -0
- package/lib/field-types/checkbox-field.component.d.ts +3 -2
- package/lib/field-types/currency-field.component.d.ts +17 -0
- package/lib/field-types/date-field.component.d.ts +3 -2
- package/lib/field-types/dropdown-field.component.d.ts +24 -4
- package/lib/field-types/email-field.component.d.ts +15 -0
- package/lib/field-types/entity-ref-field.component.d.ts +24 -11
- package/lib/field-types/file-field.component.d.ts +25 -0
- package/lib/field-types/group-field.component.d.ts +17 -0
- package/lib/field-types/image-field.component.d.ts +30 -0
- package/lib/field-types/month-year-field.component.d.ts +28 -0
- package/lib/field-types/multi-select-field.component.d.ts +18 -4
- package/lib/field-types/number-field.component.d.ts +5 -2
- package/lib/field-types/password-field.component.d.ts +17 -0
- package/lib/field-types/radio-field.component.d.ts +33 -0
- package/lib/field-types/text-field.component.d.ts +5 -3
- package/lib/field-types/textarea-field.component.d.ts +4 -2
- package/lib/form/dynamic-field/dynamic-field.component.d.ts +20 -7
- package/lib/form/dynamic-form.component.d.ts +203 -24
- package/lib/form/dynamic-record-form.component.d.ts +180 -0
- package/lib/providers/provide-field-types.d.ts +24 -0
- package/lib/providers/provide-ngx-dynamic-entity.d.ts +19 -8
- package/lib/services/cascade-data.service.d.ts +45 -0
- package/lib/services/config-source.service.d.ts +14 -0
- package/lib/services/entity-ref-cache.d.ts +27 -0
- package/lib/services/entity-ref-registry.service.d.ts +4 -3
- package/lib/services/entity-ref-selection.service.d.ts +24 -0
- package/lib/services/entity-reference.service.d.ts +49 -0
- package/lib/services/field-registry.service.d.ts +17 -7
- package/lib/services/file-upload.service.d.ts +27 -0
- package/lib/services/lookup-registry.service.d.ts +94 -0
- package/lib/services/rbac.service.d.ts +4 -9
- package/lib/services/rules-evaluation.service.d.ts +17 -0
- package/lib/services/validator-registry.service.d.ts +5 -4
- package/lib/tokens/injection-tokens.d.ts +113 -8
- package/package.json +18 -8
- package/public-api.d.ts +21 -4
- package/esm2022/lib/services/config.service.mjs +0 -58
- package/esm2022/lib/services/version.service.mjs +0 -40
- package/esm2022/lib/table/dynamic-table.component.mjs +0 -160
- package/lib/services/config.service.d.ts +0 -25
- package/lib/services/version.service.d.ts +0 -26
- package/lib/table/dynamic-table.component.d.ts +0 -56
package/esm2022/public-api.mjs
CHANGED
|
@@ -2,25 +2,50 @@
|
|
|
2
2
|
export * from './lib/tokens/injection-tokens';
|
|
3
3
|
// Providers
|
|
4
4
|
export * from './lib/providers/provide-ngx-dynamic-entity';
|
|
5
|
+
export * from './lib/providers/provide-field-types';
|
|
5
6
|
// Services
|
|
6
|
-
export * from './lib/services/config.service';
|
|
7
7
|
export * from './lib/services/field-registry.service';
|
|
8
8
|
export * from './lib/services/hook-registry.service';
|
|
9
9
|
export * from './lib/services/validator-registry.service';
|
|
10
10
|
export * from './lib/services/entity-ref-registry.service';
|
|
11
|
-
export * from './lib/services/
|
|
11
|
+
export * from './lib/services/entity-ref-selection.service';
|
|
12
|
+
export * from './lib/services/cascade-data.service';
|
|
13
|
+
export * from './lib/services/entity-reference.service';
|
|
14
|
+
export * from './lib/services/entity-ref-cache';
|
|
15
|
+
export * from './lib/services/lookup-registry.service';
|
|
12
16
|
export * from './lib/services/rbac.service';
|
|
13
|
-
|
|
17
|
+
export * from './lib/services/rules-evaluation.service';
|
|
18
|
+
export * from './lib/services/config-source.service';
|
|
19
|
+
// Components — the library ships form UI only; rendering a data table is the consumer's choice.
|
|
14
20
|
export * from './lib/form/dynamic-form.component';
|
|
21
|
+
export * from './lib/form/dynamic-record-form.component';
|
|
15
22
|
export * from './lib/form/dynamic-field/dynamic-field.component';
|
|
16
|
-
|
|
17
|
-
//
|
|
23
|
+
// Field type components — every one, individually importable.
|
|
24
|
+
//
|
|
25
|
+
// The tree-shaking seam is `provideFieldTypes({ image: ImageFieldComponent })`: register
|
|
26
|
+
// only what you use and the rest never enters the bundle. That only works for components a
|
|
27
|
+
// consumer can name, and ten of these were unreachable — so wanting eleven of the eighteen
|
|
28
|
+
// meant calling provideBuiltInFieldTypes() and bundling all of them, which is exactly what
|
|
29
|
+
// the seam exists to avoid.
|
|
18
30
|
export * from './lib/field-types/text-field.component';
|
|
19
31
|
export * from './lib/field-types/textarea-field.component';
|
|
20
32
|
export * from './lib/field-types/number-field.component';
|
|
33
|
+
export * from './lib/field-types/currency-field.component';
|
|
34
|
+
export * from './lib/field-types/email-field.component';
|
|
35
|
+
export * from './lib/field-types/password-field.component';
|
|
21
36
|
export * from './lib/field-types/checkbox-field.component';
|
|
37
|
+
export * from './lib/field-types/boolean-field.component';
|
|
22
38
|
export * from './lib/field-types/date-field.component';
|
|
39
|
+
export * from './lib/field-types/month-year-field.component';
|
|
23
40
|
export * from './lib/field-types/dropdown-field.component';
|
|
41
|
+
export * from './lib/field-types/radio-field.component';
|
|
24
42
|
export * from './lib/field-types/multi-select-field.component';
|
|
25
43
|
export * from './lib/field-types/entity-ref-field.component';
|
|
26
|
-
|
|
44
|
+
export * from './lib/field-types/group-field.component';
|
|
45
|
+
export * from './lib/field-types/array-field.component';
|
|
46
|
+
export * from './lib/field-types/image-field.component';
|
|
47
|
+
export * from './lib/field-types/file-field.component';
|
|
48
|
+
// Value helpers — a dropdown value is now a language-keyed object, so a consumer rendering
|
|
49
|
+
// record values needs these. Re-exported so they don't have to depend on core directly.
|
|
50
|
+
export { resolveLabel, resolveOptionLabel, resolveOptionValue, formatDisplayValue, valuesMatch, normalizeOption, normalizeConfig, } from '@dynamic-entity/core';
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVM7QUFDVCxjQUFjLCtCQUErQixDQUFDO0FBRTlDLFlBQVk7QUFDWixjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMscUNBQXFDLENBQUM7QUFFcEQsV0FBVztBQUNYLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBRXJELGdHQUFnRztBQUNoRyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxrREFBa0QsQ0FBQztBQUVqRSw4REFBOEQ7QUFDOUQsRUFBRTtBQUNGLHlGQUF5RjtBQUN6RiwyRkFBMkY7QUFDM0YsMkZBQTJGO0FBQzNGLDJGQUEyRjtBQUMzRiw0QkFBNEI7QUFDNUIsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsd0NBQXdDLENBQUM7QUFFdkQsMkZBQTJGO0FBQzNGLHdGQUF3RjtBQUN4RixPQUFPLEVBQ0wsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVG9rZW5zXG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2tlbnMvaW5qZWN0aW9uLXRva2Vucyc7XG5cbi8vIFByb3ZpZGVyc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvdmlkZXJzL3Byb3ZpZGUtbmd4LWR5bmFtaWMtZW50aXR5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb3ZpZGVycy9wcm92aWRlLWZpZWxkLXR5cGVzJztcblxuLy8gU2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2ZpZWxkLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvaG9vay1yZWdpc3RyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3ZhbGlkYXRvci1yZWdpc3RyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2VudGl0eS1yZWYtcmVnaXN0cnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9lbnRpdHktcmVmLXNlbGVjdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2Nhc2NhZGUtZGF0YS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2VudGl0eS1yZWZlcmVuY2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9lbnRpdHktcmVmLWNhY2hlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2xvb2t1cC1yZWdpc3RyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3JiYWMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9ydWxlcy1ldmFsdWF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvY29uZmlnLXNvdXJjZS5zZXJ2aWNlJztcblxuLy8gQ29tcG9uZW50cyDigJQgdGhlIGxpYnJhcnkgc2hpcHMgZm9ybSBVSSBvbmx5OyByZW5kZXJpbmcgYSBkYXRhIHRhYmxlIGlzIHRoZSBjb25zdW1lcidzIGNob2ljZS5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtL2R5bmFtaWMtcmVjb3JkLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0vZHluYW1pYy1maWVsZC9keW5hbWljLWZpZWxkLmNvbXBvbmVudCc7XG5cbi8vIEZpZWxkIHR5cGUgY29tcG9uZW50cyDigJQgZXZlcnkgb25lLCBpbmRpdmlkdWFsbHkgaW1wb3J0YWJsZS5cbi8vXG4vLyBUaGUgdHJlZS1zaGFraW5nIHNlYW0gaXMgYHByb3ZpZGVGaWVsZFR5cGVzKHsgaW1hZ2U6IEltYWdlRmllbGRDb21wb25lbnQgfSlgOiByZWdpc3RlclxuLy8gb25seSB3aGF0IHlvdSB1c2UgYW5kIHRoZSByZXN0IG5ldmVyIGVudGVycyB0aGUgYnVuZGxlLiBUaGF0IG9ubHkgd29ya3MgZm9yIGNvbXBvbmVudHMgYVxuLy8gY29uc3VtZXIgY2FuIG5hbWUsIGFuZCB0ZW4gb2YgdGhlc2Ugd2VyZSB1bnJlYWNoYWJsZSDigJQgc28gd2FudGluZyBlbGV2ZW4gb2YgdGhlIGVpZ2h0ZWVuXG4vLyBtZWFudCBjYWxsaW5nIHByb3ZpZGVCdWlsdEluRmllbGRUeXBlcygpIGFuZCBidW5kbGluZyBhbGwgb2YgdGhlbSwgd2hpY2ggaXMgZXhhY3RseSB3aGF0XG4vLyB0aGUgc2VhbSBleGlzdHMgdG8gYXZvaWQuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy90ZXh0LWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy90ZXh0YXJlYS1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvbnVtYmVyLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy9jdXJyZW5jeS1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvZW1haWwtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLXR5cGVzL3Bhc3N3b3JkLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy9jaGVja2JveC1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvYm9vbGVhbi1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvZGF0ZS1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvbW9udGgteWVhci1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvZHJvcGRvd24tZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLXR5cGVzL3JhZGlvLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy9tdWx0aS1zZWxlY3QtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLXR5cGVzL2VudGl0eS1yZWYtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLXR5cGVzL2dyb3VwLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy9hcnJheS1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvaW1hZ2UtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLXR5cGVzL2ZpbGUtZmllbGQuY29tcG9uZW50JztcblxuLy8gVmFsdWUgaGVscGVycyDigJQgYSBkcm9wZG93biB2YWx1ZSBpcyBub3cgYSBsYW5ndWFnZS1rZXllZCBvYmplY3QsIHNvIGEgY29uc3VtZXIgcmVuZGVyaW5nXG4vLyByZWNvcmQgdmFsdWVzIG5lZWRzIHRoZXNlLiBSZS1leHBvcnRlZCBzbyB0aGV5IGRvbid0IGhhdmUgdG8gZGVwZW5kIG9uIGNvcmUgZGlyZWN0bHkuXG5leHBvcnQge1xuICByZXNvbHZlTGFiZWwsXG4gIHJlc29sdmVPcHRpb25MYWJlbCxcbiAgcmVzb2x2ZU9wdGlvblZhbHVlLFxuICBmb3JtYXREaXNwbGF5VmFsdWUsXG4gIHZhbHVlc01hdGNoLFxuICBub3JtYWxpemVPcHRpb24sXG4gIG5vcm1hbGl6ZUNvbmZpZyxcbn0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuXG4vLyBSZS1leHBvcnQgY29yZSB0eXBlcyBzbyBjb25zdW1lcnMgbmVlZCBvbmx5IG9uZSBpbXBvcnRcbmV4cG9ydCB0eXBlIHtcbiAgRW50aXR5Rm9ybUNvbmZpZyxcbiAgTmVzdGVkVGFiQ29uZmlnLFxuICBOZXN0ZWRGaWVsZENvbmZpZyxcbiAgRmllbGRUYWJsZUNvbmZpZyxcbiAgUmljaEZpZWxkVHlwZSxcbiAgTG9jYWxpemVkVGV4dCxcbiAgRHJvcGRvd25PcHRpb24sXG4gIFZlcnNpb25lZFJlY29yZCxcbiAgRW50aXR5UGVybWlzc2lvbnMsXG4gIFJiYWNDb250ZXh0LFxuICBGaWVsZFZhbGlkYXRvcnMsXG4gIEVudGl0eVJlZmVyZW5jZUNvbmZpZyxcbiAgRW50aXR5UmVmZXJlbmNlTG9hZGVyLFxuICBSZWZlcmVuY2VPcHRpb24sXG4gIFJlZmVyZW5jZUxvYWRlckNvbnRleHQsXG4gIEF1dG9QYXRjaENvbmZpZyxcbiAgUGF0Y2hPblRydWVNYXBwaW5nLFxuICBGaWxlUmVmLFxuICBGb3JtUnVsZSxcbiAgUnVsZUNvbmRpdGlvbixcbiAgUnVsZUFjdGlvbixcbiAgUnVsZUV2YWx1YXRpb25SZXN1bHQsXG4gIENvbW1vbk1vZHVsZUVudHJ5LFxufSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XG4iXX0=
|