ts-essentials
Advanced tools
Comparing version 8.0.0 to 8.1.0
# ts-essentials | ||
## 8.1.0 | ||
### Minor Changes | ||
- 7bf4fdb: Make `DeepRequired` as recursive `Required` without removing `null` and `undefined` | ||
### Patch Changes | ||
- c463c70: Align `ReadonlySet` and `ReadonlyMap` in `DeepUndefinable` with other sets and maps | ||
- 374431f: Fix `DeepPartial` and `Buildable` for `unknown` | ||
- 83458c0: Align `ReadonlySet` and `ReadonlyMap` in `DeepNullable` with other sets and maps | ||
- 7bf4fdb: Add difference between `DeepRequired` and `DeepNonNullable` in README | ||
- ec8d796: Allow only objects to be used in `StrictOmit` | ||
- f045817: Fix `DictionaryValues` for `SafeDictionary` with number and string literals keys | ||
- ec8d796: `StrictOmit` returns `never` for arrays and tuples | ||
## 8.0.0 | ||
@@ -4,0 +20,0 @@ |
@@ -5,2 +5,5 @@ /** Essentials */ | ||
export declare type IsTuple<T> = T extends any[] ? (any[] extends T ? never : T) : never; | ||
declare type AnyRecord<T = any> = Record<PropertyKey, T>; | ||
declare type IsAny<T> = 0 extends 1 & T ? true : false; | ||
declare type IsUnknown<T> = IsAny<T> extends true ? false : unknown extends T ? true : false; | ||
export declare type AnyArray<T = any> = Array<T> | ReadonlyArray<T>; | ||
@@ -15,3 +18,3 @@ /** | ||
/** Given Dictionary<T> returns T */ | ||
export declare type DictionaryValues<T> = T extends Dictionary<infer U> ? U : never; | ||
export declare type DictionaryValues<T> = T[keyof T]; | ||
/** | ||
@@ -52,2 +55,4 @@ * Like Dictionary, but: | ||
} | ||
: IsUnknown<T> extends true | ||
? unknown | ||
: Partial<T>; | ||
@@ -59,2 +64,4 @@ /** Recursive nullable */ | ||
? Map<DeepNullable<K>, DeepNullable<V>> | ||
: T extends ReadonlyMap<infer K, infer V> | ||
? ReadonlyMap<DeepNullable<K>, DeepNullable<V>> | ||
: T extends WeakMap<infer K, infer V> | ||
@@ -64,2 +71,4 @@ ? WeakMap<DeepNullable<K>, DeepNullable<V>> | ||
? Set<DeepNullable<U>> | ||
: T extends ReadonlySet<infer U> | ||
? ReadonlySet<DeepNullable<U>> | ||
: T extends WeakSet<infer U> | ||
@@ -85,2 +94,4 @@ ? WeakSet<DeepNullable<U>> | ||
? Map<DeepUndefinable<K>, DeepUndefinable<V>> | ||
: T extends ReadonlyMap<infer K, infer V> | ||
? ReadonlyMap<DeepUndefinable<K>, DeepUndefinable<V>> | ||
: T extends WeakMap<infer K, infer V> | ||
@@ -90,2 +101,4 @@ ? WeakMap<DeepUndefinable<K>, DeepUndefinable<V>> | ||
? Set<DeepUndefinable<U>> | ||
: T extends ReadonlySet<infer U> | ||
? ReadonlySet<DeepUndefinable<U>> | ||
: T extends WeakSet<infer U> | ||
@@ -129,4 +142,6 @@ ? WeakSet<DeepUndefinable<U>> | ||
/** Like Required but recursive */ | ||
export declare type DeepRequired<T> = T extends Builtin | ||
? NonNullable<T> | ||
export declare type DeepRequired<T> = T extends Error | ||
? Required<T> | ||
: T extends Builtin | ||
? T | ||
: T extends Map<infer K, infer V> | ||
@@ -150,3 +165,3 @@ ? Map<DeepRequired<K>, DeepRequired<V>> | ||
} | ||
: NonNullable<T>; | ||
: Required<T>; | ||
/** Like Readonly but recursive */ | ||
@@ -173,3 +188,3 @@ export declare type DeepReadonly<T> = T extends Builtin | ||
} | ||
: unknown extends T | ||
: IsUnknown<T> extends true | ||
? unknown | ||
@@ -206,19 +221,12 @@ : Readonly<T>; | ||
/** Similar to the builtin Omit, but checks the filter strictly. */ | ||
export declare type StrictOmit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>; | ||
export declare type StrictOmit<T extends AnyRecord, K extends keyof T> = T extends AnyArray ? never : Omit<T, K>; | ||
/** Similar to the builtin Extract, but checks the filter strictly */ | ||
export declare type StrictExtract<T, U extends Partial<T>> = Extract<T, U>; | ||
declare type PickKeysByValue<T, V> = { | ||
[K in keyof T]: T[K] extends V ? K : never; | ||
}[keyof T]; | ||
/** Omit all properties of given type in object type */ | ||
export declare type OmitProperties<T, P> = Pick< | ||
T, | ||
{ | ||
[K in keyof T]: T[K] extends P ? never : K; | ||
}[keyof T] | ||
>; | ||
export declare type OmitProperties<T, P> = Omit<T, PickKeysByValue<T, P>>; | ||
/** Pick all properties of given type in object type */ | ||
export declare type PickProperties<T, P> = Pick< | ||
T, | ||
{ | ||
[K in keyof T]: T[K] extends P ? K : never; | ||
}[keyof T] | ||
>; | ||
export declare type PickProperties<T, P> = Pick<T, PickKeysByValue<T, P>>; | ||
/** Gets keys of an object which are optional */ | ||
@@ -225,0 +233,0 @@ export declare type OptionalKeys<T> = { |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBFc3NlbnRpYWxzICovXG5leHBvcnQgdHlwZSBQcmltaXRpdmUgPSBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgYmlnaW50IHwgc3ltYm9sIHwgdW5kZWZpbmVkIHwgbnVsbDtcbmV4cG9ydCB0eXBlIEJ1aWx0aW4gPSBQcmltaXRpdmUgfCBGdW5jdGlvbiB8IERhdGUgfCBFcnJvciB8IFJlZ0V4cDtcbmV4cG9ydCB0eXBlIElzVHVwbGU8VD4gPSBUIGV4dGVuZHMgYW55W10gPyAoYW55W10gZXh0ZW5kcyBUID8gbmV2ZXIgOiBUKSA6IG5ldmVyO1xuZXhwb3J0IHR5cGUgQW55QXJyYXk8VCA9IGFueT4gPSBBcnJheTxUPiB8IFJlYWRvbmx5QXJyYXk8VD47XG5cbi8qKlxuICogTGlrZSBSZWNvcmQsIGJ1dCBjYW4gYmUgdXNlZCB3aXRoIG9ubHkgb25lIGFyZ3VtZW50LlxuICogVXNlZnVsLCBpZiB5b3Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgdGhlIGtleXMgb2YgYSBmaW5pdGUgdHlwZSBhcmUgdXNlZC5cbiAqL1xuZXhwb3J0IHR5cGUgRGljdGlvbmFyeTxULCBLIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyID0gc3RyaW5nPiA9IHsgW2tleSBpbiBLXTogVCB9O1xuLyoqIEdpdmVuIERpY3Rpb25hcnk8VD4gcmV0dXJucyBUICovXG5leHBvcnQgdHlwZSBEaWN0aW9uYXJ5VmFsdWVzPFQ+ID0gVCBleHRlbmRzIERpY3Rpb25hcnk8aW5mZXIgVT4gPyBVIDogbmV2ZXI7XG4vKipcbiAqIExpa2UgRGljdGlvbmFyeSwgYnV0OlxuICogIC0gZW5zdXJlcyB0eXBlIHNhZmV0eSBvZiBpbmRleCBhY2Nlc3NcbiAqICAtIGRvZXMgbm90IGVuZm9yY2Uga2V5IGV4aGF1c3RpdmVuZXNzXG4gKi9cbmV4cG9ydCB0eXBlIFNhZmVEaWN0aW9uYXJ5PFQsIEsgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgPSBzdHJpbmc+ID0geyBba2V5IGluIEtdPzogVCB9O1xuXG4vKiogTGlrZSBQYXJ0aWFsIGJ1dCByZWN1cnNpdmUgKi9cbmV4cG9ydCB0eXBlIERlZXBQYXJ0aWFsPFQ+ID0gVCBleHRlbmRzIEJ1aWx0aW5cbiAgPyBUXG4gIDogVCBleHRlbmRzIE1hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IE1hcDxEZWVwUGFydGlhbDxLPiwgRGVlcFBhcnRpYWw8Vj4+XG4gIDogVCBleHRlbmRzIFJlYWRvbmx5TWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gUmVhZG9ubHlNYXA8RGVlcFBhcnRpYWw8Sz4sIERlZXBQYXJ0aWFsPFY+PlxuICA6IFQgZXh0ZW5kcyBXZWFrTWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gV2Vha01hcDxEZWVwUGFydGlhbDxLPiwgRGVlcFBhcnRpYWw8Vj4+XG4gIDogVCBleHRlbmRzIFNldDxpbmZlciBVPlxuICA/IFNldDxEZWVwUGFydGlhbDxVPj5cbiAgOiBUIGV4dGVuZHMgUmVhZG9ubHlTZXQ8aW5mZXIgVT5cbiAgPyBSZWFkb25seVNldDxEZWVwUGFydGlhbDxVPj5cbiAgOiBUIGV4dGVuZHMgV2Vha1NldDxpbmZlciBVPlxuICA/IFdlYWtTZXQ8RGVlcFBhcnRpYWw8VT4+XG4gIDogVCBleHRlbmRzIEFycmF5PGluZmVyIFU+XG4gID8gVCBleHRlbmRzIElzVHVwbGU8VD5cbiAgICA/IHsgW0sgaW4ga2V5b2YgVF0/OiBEZWVwUGFydGlhbDxUW0tdPiB9XG4gICAgOiBBcnJheTxEZWVwUGFydGlhbDxVPj5cbiAgOiBUIGV4dGVuZHMgUHJvbWlzZTxpbmZlciBVPlxuICA/IFByb21pc2U8RGVlcFBhcnRpYWw8VT4+XG4gIDogVCBleHRlbmRzIHt9XG4gID8geyBbSyBpbiBrZXlvZiBUXT86IERlZXBQYXJ0aWFsPFRbS10+IH1cbiAgOiBQYXJ0aWFsPFQ+O1xuXG4vKiogUmVjdXJzaXZlIG51bGxhYmxlICovXG5leHBvcnQgdHlwZSBEZWVwTnVsbGFibGU8VD4gPSBUIGV4dGVuZHMgQnVpbHRpblxuICA/IFQgfCBudWxsXG4gIDogVCBleHRlbmRzIE1hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IE1hcDxEZWVwTnVsbGFibGU8Sz4sIERlZXBOdWxsYWJsZTxWPj5cbiAgOiBUIGV4dGVuZHMgV2Vha01hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IFdlYWtNYXA8RGVlcE51bGxhYmxlPEs+LCBEZWVwTnVsbGFibGU8Vj4+XG4gIDogVCBleHRlbmRzIFNldDxpbmZlciBVPlxuICA/IFNldDxEZWVwTnVsbGFibGU8VT4+XG4gIDogVCBleHRlbmRzIFdlYWtTZXQ8aW5mZXIgVT5cbiAgPyBXZWFrU2V0PERlZXBOdWxsYWJsZTxVPj5cbiAgOiBUIGV4dGVuZHMgQXJyYXk8aW5mZXIgVT5cbiAgPyBUIGV4dGVuZHMgSXNUdXBsZTxUPlxuICAgID8geyBbSyBpbiBrZXlvZiBUXTogRGVlcE51bGxhYmxlPFRbS10+IHwgbnVsbCB9XG4gICAgOiBBcnJheTxEZWVwTnVsbGFibGU8VT4+XG4gIDogVCBleHRlbmRzIFByb21pc2U8aW5mZXIgVT5cbiAgPyBQcm9taXNlPERlZXBOdWxsYWJsZTxVPj5cbiAgOiBUIGV4dGVuZHMge31cbiAgPyB7IFtLIGluIGtleW9mIFRdOiBEZWVwTnVsbGFibGU8VFtLXT4gfVxuICA6IFQgfCBudWxsO1xuXG4vKiogUmVjdXJzaXZlIHVuZGVmaW5hYmxlICovXG5leHBvcnQgdHlwZSBEZWVwVW5kZWZpbmFibGU8VD4gPSBUIGV4dGVuZHMgQnVpbHRpblxuICA/IFQgfCB1bmRlZmluZWRcbiAgOiBUIGV4dGVuZHMgTWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gTWFwPERlZXBVbmRlZmluYWJsZTxLPiwgRGVlcFVuZGVmaW5hYmxlPFY+PlxuICA6IFQgZXh0ZW5kcyBXZWFrTWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gV2Vha01hcDxEZWVwVW5kZWZpbmFibGU8Sz4sIERlZXBVbmRlZmluYWJsZTxWPj5cbiAgOiBUIGV4dGVuZHMgU2V0PGluZmVyIFU+XG4gID8gU2V0PERlZXBVbmRlZmluYWJsZTxVPj5cbiAgOiBUIGV4dGVuZHMgV2Vha1NldDxpbmZlciBVPlxuICA/IFdlYWtTZXQ8RGVlcFVuZGVmaW5hYmxlPFU+PlxuICA6IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBVPlxuICA/IFQgZXh0ZW5kcyBJc1R1cGxlPFQ+XG4gICAgPyB7IFtLIGluIGtleW9mIFRdOiBEZWVwVW5kZWZpbmFibGU8VFtLXT4gfCB1bmRlZmluZWQgfVxuICAgIDogQXJyYXk8RGVlcFVuZGVmaW5hYmxlPFU+PlxuICA6IFQgZXh0ZW5kcyBQcm9taXNlPGluZmVyIFU+XG4gID8gUHJvbWlzZTxEZWVwVW5kZWZpbmFibGU8VT4+XG4gIDogVCBleHRlbmRzIHt9XG4gID8geyBbSyBpbiBrZXlvZiBUXTogRGVlcFVuZGVmaW5hYmxlPFRbS10+IH1cbiAgOiBUIHwgdW5kZWZpbmVkO1xuXG4vKiogTGlrZSBOb25OdWxsYWJsZSBidXQgcmVjdXJzaXZlICovXG5leHBvcnQgdHlwZSBEZWVwTm9uTnVsbGFibGU8VD4gPSBUIGV4dGVuZHMgQnVpbHRpblxuICA/IE5vbk51bGxhYmxlPFQ+XG4gIDogVCBleHRlbmRzIE1hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IE1hcDxEZWVwTm9uTnVsbGFibGU8Sz4sIERlZXBOb25OdWxsYWJsZTxWPj5cbiAgOiBUIGV4dGVuZHMgUmVhZG9ubHlNYXA8aW5mZXIgSywgaW5mZXIgVj5cbiAgPyBSZWFkb25seU1hcDxEZWVwTm9uTnVsbGFibGU8Sz4sIERlZXBOb25OdWxsYWJsZTxWPj5cbiAgOiBUIGV4dGVuZHMgV2Vha01hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IFdlYWtNYXA8RGVlcE5vbk51bGxhYmxlPEs+LCBEZWVwTm9uTnVsbGFibGU8Vj4+XG4gIDogVCBleHRlbmRzIFNldDxpbmZlciBVPlxuICA/IFNldDxEZWVwTm9uTnVsbGFibGU8VT4+XG4gIDogVCBleHRlbmRzIFJlYWRvbmx5U2V0PGluZmVyIFU+XG4gID8gUmVhZG9ubHlTZXQ8RGVlcE5vbk51bGxhYmxlPFU+PlxuICA6IFQgZXh0ZW5kcyBXZWFrU2V0PGluZmVyIFU+XG4gID8gV2Vha1NldDxEZWVwTm9uTnVsbGFibGU8VT4+XG4gIDogVCBleHRlbmRzIFByb21pc2U8aW5mZXIgVT5cbiAgPyBQcm9taXNlPERlZXBOb25OdWxsYWJsZTxVPj5cbiAgOiBUIGV4dGVuZHMge31cbiAgPyB7IFtLIGluIGtleW9mIFRdOiBEZWVwTm9uTnVsbGFibGU8VFtLXT4gfVxuICA6IE5vbk51bGxhYmxlPFQ+O1xuXG4vKiogTGlrZSBSZXF1aXJlZCBidXQgcmVjdXJzaXZlICovXG5leHBvcnQgdHlwZSBEZWVwUmVxdWlyZWQ8VD4gPSBUIGV4dGVuZHMgQnVpbHRpblxuICA/IE5vbk51bGxhYmxlPFQ+XG4gIDogVCBleHRlbmRzIE1hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IE1hcDxEZWVwUmVxdWlyZWQ8Sz4sIERlZXBSZXF1aXJlZDxWPj5cbiAgOiBUIGV4dGVuZHMgUmVhZG9ubHlNYXA8aW5mZXIgSywgaW5mZXIgVj5cbiAgPyBSZWFkb25seU1hcDxEZWVwUmVxdWlyZWQ8Sz4sIERlZXBSZXF1aXJlZDxWPj5cbiAgOiBUIGV4dGVuZHMgV2Vha01hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IFdlYWtNYXA8RGVlcFJlcXVpcmVkPEs+LCBEZWVwUmVxdWlyZWQ8Vj4+XG4gIDogVCBleHRlbmRzIFNldDxpbmZlciBVPlxuICA/IFNldDxEZWVwUmVxdWlyZWQ8VT4+XG4gIDogVCBleHRlbmRzIFJlYWRvbmx5U2V0PGluZmVyIFU+XG4gID8gUmVhZG9ubHlTZXQ8RGVlcFJlcXVpcmVkPFU+PlxuICA6IFQgZXh0ZW5kcyBXZWFrU2V0PGluZmVyIFU+XG4gID8gV2Vha1NldDxEZWVwUmVxdWlyZWQ8VT4+XG4gIDogVCBleHRlbmRzIFByb21pc2U8aW5mZXIgVT5cbiAgPyBQcm9taXNlPERlZXBSZXF1aXJlZDxVPj5cbiAgOiBUIGV4dGVuZHMge31cbiAgPyB7IFtLIGluIGtleW9mIFRdLT86IERlZXBSZXF1aXJlZDxUW0tdPiB9XG4gIDogTm9uTnVsbGFibGU8VD47XG5cbi8qKiBMaWtlIFJlYWRvbmx5IGJ1dCByZWN1cnNpdmUgKi9cbmV4cG9ydCB0eXBlIERlZXBSZWFkb25seTxUPiA9IFQgZXh0ZW5kcyBCdWlsdGluXG4gID8gVFxuICA6IFQgZXh0ZW5kcyBNYXA8aW5mZXIgSywgaW5mZXIgVj5cbiAgPyBSZWFkb25seU1hcDxEZWVwUmVhZG9ubHk8Sz4sIERlZXBSZWFkb25seTxWPj5cbiAgOiBUIGV4dGVuZHMgUmVhZG9ubHlNYXA8aW5mZXIgSywgaW5mZXIgVj5cbiAgPyBSZWFkb25seU1hcDxEZWVwUmVhZG9ubHk8Sz4sIERlZXBSZWFkb25seTxWPj5cbiAgOiBUIGV4dGVuZHMgV2Vha01hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IFdlYWtNYXA8RGVlcFJlYWRvbmx5PEs+LCBEZWVwUmVhZG9ubHk8Vj4+XG4gIDogVCBleHRlbmRzIFNldDxpbmZlciBVPlxuICA/IFJlYWRvbmx5U2V0PERlZXBSZWFkb25seTxVPj5cbiAgOiBUIGV4dGVuZHMgUmVhZG9ubHlTZXQ8aW5mZXIgVT5cbiAgPyBSZWFkb25seVNldDxEZWVwUmVhZG9ubHk8VT4+XG4gIDogVCBleHRlbmRzIFdlYWtTZXQ8aW5mZXIgVT5cbiAgPyBXZWFrU2V0PERlZXBSZWFkb25seTxVPj5cbiAgOiBUIGV4dGVuZHMgUHJvbWlzZTxpbmZlciBVPlxuICA/IFByb21pc2U8RGVlcFJlYWRvbmx5PFU+PlxuICA6IFQgZXh0ZW5kcyB7fVxuICA/IHsgcmVhZG9ubHkgW0sgaW4ga2V5b2YgVF06IERlZXBSZWFkb25seTxUW0tdPiB9XG4gIDogdW5rbm93biBleHRlbmRzIFRcbiAgPyB1bmtub3duXG4gIDogUmVhZG9ubHk8VD47XG5cbi8qKiBNYWtlIHJlYWRvbmx5IG9iamVjdCB3cml0YWJsZSAqL1xuZXhwb3J0IHR5cGUgV3JpdGFibGU8VD4gPSB7IC1yZWFkb25seSBbUCBpbiBrZXlvZiBUXTogVFtQXSB9O1xuXG4vKiogTGlrZSBXcml0YWJsZSBidXQgcmVjdXJzaXZlICovXG5leHBvcnQgdHlwZSBEZWVwV3JpdGFibGU8VD4gPSBUIGV4dGVuZHMgQnVpbHRpblxuICA/IFRcbiAgOiBUIGV4dGVuZHMgTWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gTWFwPERlZXBXcml0YWJsZTxLPiwgRGVlcFdyaXRhYmxlPFY+PlxuICA6IFQgZXh0ZW5kcyBSZWFkb25seU1hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IE1hcDxEZWVwV3JpdGFibGU8Sz4sIERlZXBXcml0YWJsZTxWPj5cbiAgOiBUIGV4dGVuZHMgV2Vha01hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IFdlYWtNYXA8RGVlcFdyaXRhYmxlPEs+LCBEZWVwV3JpdGFibGU8Vj4+XG4gIDogVCBleHRlbmRzIFNldDxpbmZlciBVPlxuICA/IFNldDxEZWVwV3JpdGFibGU8VT4+XG4gIDogVCBleHRlbmRzIFJlYWRvbmx5U2V0PGluZmVyIFU+XG4gID8gU2V0PERlZXBXcml0YWJsZTxVPj5cbiAgOiBUIGV4dGVuZHMgV2Vha1NldDxpbmZlciBVPlxuICA/IFdlYWtTZXQ8RGVlcFdyaXRhYmxlPFU+PlxuICA6IFQgZXh0ZW5kcyBQcm9taXNlPGluZmVyIFU+XG4gID8gUHJvbWlzZTxEZWVwV3JpdGFibGU8VT4+XG4gIDogVCBleHRlbmRzIHt9XG4gID8geyAtcmVhZG9ubHkgW0sgaW4ga2V5b2YgVF06IERlZXBXcml0YWJsZTxUW0tdPiB9XG4gIDogVDtcblxuLyoqIENvbWJpbmF0aW9uIG9mIERlZXBQYXJ0aWFsIGFuZCBEZWVwV3JpdGFibGUgKi9cbmV4cG9ydCB0eXBlIEJ1aWxkYWJsZTxUPiA9IERlZXBQYXJ0aWFsPERlZXBXcml0YWJsZTxUPj47XG5cbi8qKiBTaW1pbGFyIHRvIHRoZSBidWlsdGluIE9taXQsIGJ1dCBjaGVja3MgdGhlIGZpbHRlciBzdHJpY3RseS4gKi9cbmV4cG9ydCB0eXBlIFN0cmljdE9taXQ8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gUGljazxULCBFeGNsdWRlPGtleW9mIFQsIEs+PjtcblxuLyoqIFNpbWlsYXIgdG8gdGhlIGJ1aWx0aW4gRXh0cmFjdCwgYnV0IGNoZWNrcyB0aGUgZmlsdGVyIHN0cmljdGx5ICovXG5leHBvcnQgdHlwZSBTdHJpY3RFeHRyYWN0PFQsIFUgZXh0ZW5kcyBQYXJ0aWFsPFQ+PiA9IEV4dHJhY3Q8VCwgVT47XG5cbi8qKiBPbWl0IGFsbCBwcm9wZXJ0aWVzIG9mIGdpdmVuIHR5cGUgaW4gb2JqZWN0IHR5cGUgKi9cbmV4cG9ydCB0eXBlIE9taXRQcm9wZXJ0aWVzPFQsIFA+ID0gUGljazxULCB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgUCA/IG5ldmVyIDogSyB9W2tleW9mIFRdPjtcblxuLyoqIFBpY2sgYWxsIHByb3BlcnRpZXMgb2YgZ2l2ZW4gdHlwZSBpbiBvYmplY3QgdHlwZSAqL1xuZXhwb3J0IHR5cGUgUGlja1Byb3BlcnRpZXM8VCwgUD4gPSBQaWNrPFQsIHsgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBQID8gSyA6IG5ldmVyIH1ba2V5b2YgVF0+O1xuXG4vKiogR2V0cyBrZXlzIG9mIGFuIG9iamVjdCB3aGljaCBhcmUgb3B0aW9uYWwgKi9cbmV4cG9ydCB0eXBlIE9wdGlvbmFsS2V5czxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF0tPzogdW5kZWZpbmVkIGV4dGVuZHMgeyBbSzIgaW4ga2V5b2YgVF06IEsyIH1bS10gPyBLIDogbmV2ZXI7XG59W2tleW9mIFRdO1xuXG4vKiogR2V0cyBrZXlzIG9mIGFuIG9iamVjdCB3aGljaCBhcmUgcmVxdWlyZWQgKi9cbmV4cG9ydCB0eXBlIFJlcXVpcmVkS2V5czxUPiA9IEV4Y2x1ZGU8a2V5b2YgVCwgT3B0aW9uYWxLZXlzPFQ+PjtcblxuLyoqIEdldHMga2V5cyBvZiBwcm9wZXJ0aWVzIG9mIGdpdmVuIHR5cGUgaW4gb2JqZWN0IHR5cGUgKi9cbmV4cG9ydCB0eXBlIFBpY2tLZXlzPFQsIFA+ID0gRXhjbHVkZTxrZXlvZiBQaWNrUHJvcGVydGllczxULCBQPiwgdW5kZWZpbmVkPjtcblxuLyoqIFJlY3Vyc2l2ZWx5IG9taXQgZGVlcCBwcm9wZXJ0aWVzICovXG4vLyBleHBsaWNpdGx5IG1lbnRpb25pbmcgb3B0aW9uYWwgcHJvcGVydGllcywgdG8gd29yayBhcm91bmQgVFMgbWFraW5nIHRoZW0gcmVxdWlyZWRcbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20va3J6a2Fjem9yL3RzLWVzc2VudGlhbHMvaXNzdWVzLzExOFxuZXhwb3J0IHR5cGUgRGVlcE9taXQ8VCBleHRlbmRzIERlZXBPbWl0TW9kaWZ5PEZpbHRlcj4sIEZpbHRlcj4gPSBUIGV4dGVuZHMgQnVpbHRpblxuICA/IFRcbiAgOiBUIGV4dGVuZHMgTWFwPGluZmVyIEtleVR5cGUsIGluZmVyIFZhbHVlVHlwZT5cbiAgPyBWYWx1ZVR5cGUgZXh0ZW5kcyBEZWVwT21pdE1vZGlmeTxGaWx0ZXI+XG4gICAgPyBNYXA8S2V5VHlwZSwgRGVlcE9taXQ8VmFsdWVUeXBlLCBGaWx0ZXI+PlxuICAgIDogVFxuICA6IFQgZXh0ZW5kcyBSZWFkb25seU1hcDxpbmZlciBLZXlUeXBlLCBpbmZlciBWYWx1ZVR5cGU+XG4gID8gVmFsdWVUeXBlIGV4dGVuZHMgRGVlcE9taXRNb2RpZnk8RmlsdGVyPlxuICAgID8gUmVhZG9ubHlNYXA8S2V5VHlwZSwgRGVlcE9taXQ8VmFsdWVUeXBlLCBGaWx0ZXI+PlxuICAgIDogVFxuICA6IFQgZXh0ZW5kcyBXZWFrTWFwPGluZmVyIEtleVR5cGUsIGluZmVyIFZhbHVlVHlwZT5cbiAgPyBWYWx1ZVR5cGUgZXh0ZW5kcyBEZWVwT21pdE1vZGlmeTxGaWx0ZXI+XG4gICAgPyBXZWFrTWFwPEtleVR5cGUsIERlZXBPbWl0PFZhbHVlVHlwZSwgRmlsdGVyPj5cbiAgICA6IFRcbiAgOiBUIGV4dGVuZHMgU2V0PGluZmVyIEl0ZW1UeXBlPlxuICA/IEl0ZW1UeXBlIGV4dGVuZHMgRGVlcE9taXRNb2RpZnk8RmlsdGVyPlxuICAgID8gU2V0PERlZXBPbWl0PEl0ZW1UeXBlLCBGaWx0ZXI+PlxuICAgIDogVFxuICA6IFQgZXh0ZW5kcyBSZWFkb25seVNldDxpbmZlciBJdGVtVHlwZT5cbiAgPyBJdGVtVHlwZSBleHRlbmRzIERlZXBPbWl0TW9kaWZ5PEZpbHRlcj5cbiAgICA/IFJlYWRvbmx5U2V0PERlZXBPbWl0PEl0ZW1UeXBlLCBGaWx0ZXI+PlxuICAgIDogVFxuICA6IFQgZXh0ZW5kcyBXZWFrU2V0PGluZmVyIEl0ZW1UeXBlPlxuICA/IEl0ZW1UeXBlIGV4dGVuZHMgRGVlcE9taXRNb2RpZnk8RmlsdGVyPlxuICAgID8gV2Vha1NldDxEZWVwT21pdDxJdGVtVHlwZSwgRmlsdGVyPj5cbiAgICA6IFRcbiAgOiBUIGV4dGVuZHMgQXJyYXk8aW5mZXIgSXRlbVR5cGU+XG4gID8gSXRlbVR5cGUgZXh0ZW5kcyBEZWVwT21pdE1vZGlmeTxGaWx0ZXI+XG4gICAgPyBBcnJheTxEZWVwT21pdDxJdGVtVHlwZSwgRmlsdGVyPj5cbiAgICA6IFRcbiAgOiBUIGV4dGVuZHMgUHJvbWlzZTxpbmZlciBJdGVtVHlwZT5cbiAgPyBJdGVtVHlwZSBleHRlbmRzIERlZXBPbWl0TW9kaWZ5PEZpbHRlcj5cbiAgICA/IFByb21pc2U8RGVlcE9taXQ8SXRlbVR5cGUsIEZpbHRlcj4+XG4gICAgOiBUXG4gIDogeyBbSyBpbiBFeGNsdWRlPE9wdGlvbmFsS2V5czxUPiwga2V5b2YgRmlsdGVyPl0rPzogVFtLXSB9ICZcbiAgICAgIE9taXRQcm9wZXJ0aWVzPFxuICAgICAgICB7XG4gICAgICAgICAgW0sgaW4gRXh0cmFjdDxPcHRpb25hbEtleXM8VD4sIGtleW9mIEZpbHRlcj5dKz86IEZpbHRlcltLXSBleHRlbmRzIHRydWVcbiAgICAgICAgICAgID8gbmV2ZXJcbiAgICAgICAgICAgIDogVFtLXSBleHRlbmRzIERlZXBPbWl0TW9kaWZ5PEZpbHRlcltLXT5cbiAgICAgICAgICAgID8gRGVlcE9taXQ8VFtLXSwgRmlsdGVyW0tdPlxuICAgICAgICAgICAgOiBUW0tdO1xuICAgICAgICB9LFxuICAgICAgICBuZXZlclxuICAgICAgPiAmXG4gICAgICB7IFtLIGluIEV4Y2x1ZGU8UmVxdWlyZWRLZXlzPFQ+LCBrZXlvZiBGaWx0ZXI+XTogVFtLXSB9ICZcbiAgICAgIE9taXRQcm9wZXJ0aWVzPFxuICAgICAgICB7XG4gICAgICAgICAgW0sgaW4gRXh0cmFjdDxSZXF1aXJlZEtleXM8VD4sIGtleW9mIEZpbHRlcj5dOiBGaWx0ZXJbS10gZXh0ZW5kcyB0cnVlXG4gICAgICAgICAgICA/IG5ldmVyXG4gICAgICAgICAgICA6IFRbS10gZXh0ZW5kcyBEZWVwT21pdE1vZGlmeTxGaWx0ZXJbS10+XG4gICAgICAgICAgICA/IERlZXBPbWl0PFRbS10sIEZpbHRlcltLXT5cbiAgICAgICAgICAgIDogVFtLXTtcbiAgICAgICAgfSxcbiAgICAgICAgbmV2ZXJcbiAgICAgID47XG50eXBlIERlZXBPbWl0TW9kaWZ5PFQ+ID1cbiAgfCB7XG4gICAgICBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIG5ldmVyID8gYW55IDogVFtLXSBleHRlbmRzIG9iamVjdCA/IERlZXBPbWl0TW9kaWZ5PFRbS10+IDogbmV2ZXI7XG4gICAgfVxuICB8IEFycmF5PERlZXBPbWl0TW9kaWZ5PFQ+PlxuICB8IFByb21pc2U8RGVlcE9taXRNb2RpZnk8VD4+XG4gIHwgU2V0PERlZXBPbWl0TW9kaWZ5PFQ+PlxuICB8IFJlYWRvbmx5U2V0PERlZXBPbWl0TW9kaWZ5PFQ+PlxuICB8IFdlYWtTZXQ8RGVlcE9taXRNb2RpZnk8VD4+XG4gIHwgTWFwPGFueSwgRGVlcE9taXRNb2RpZnk8VD4+XG4gIHwgV2Vha01hcDxhbnksIERlZXBPbWl0TW9kaWZ5PFQ+PjtcblxuLyoqIFJlbW92ZSBrZXlzIHdpdGggYG5ldmVyYCB2YWx1ZSBmcm9tIG9iamVjdCB0eXBlICovXG5leHBvcnQgdHlwZSBOb25OZXZlcjxUIGV4dGVuZHMge30+ID0gUGljazxULCB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IEsgfVtrZXlvZiBUXT47XG5cbmV4cG9ydCB0eXBlIE5vbkVtcHR5T2JqZWN0PFQgZXh0ZW5kcyB7fT4gPSBrZXlvZiBUIGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IFQ7XG5cbi8qKiBNZXJnZSAyIHR5cGVzLCBwcm9wZXJ0aWVzIHR5cGVzIGZyb20gdGhlIGxhdHRlciBvdmVycmlkZSB0aGUgb25lcyBkZWZpbmVkIG9uIHRoZSBmb3JtZXIgdHlwZSAqL1xuZXhwb3J0IHR5cGUgTWVyZ2U8TSwgTj4gPSBPbWl0PE0sIGtleW9mIE4+ICYgTjtcblxudHlwZSBfTWVyZ2VOPFQgZXh0ZW5kcyByZWFkb25seSBhbnlbXSwgUmVzdWx0PiA9IFQgZXh0ZW5kcyByZWFkb25seSBbaW5mZXIgSGVhZCwgLi4uKGluZmVyIFRhaWwpXVxuICA/IF9NZXJnZU48VGFpbCwgTWVyZ2U8UmVzdWx0LCBIZWFkPj5cbiAgOiBSZXN1bHQ7XG5cbi8qKiBNZXJnZSBOIHR5cGVzLCBwcm9wZXJ0aWVzIHR5cGVzIGZyb20gdGhlIGxhdHRlciBvdmVycmlkZSB0aGUgb25lcyBkZWZpbmVkIG9uIHRoZSBmb3JtZXIgdHlwZSAqL1xuZXhwb3J0IHR5cGUgTWVyZ2VOPFQgZXh0ZW5kcyByZWFkb25seSBhbnlbXT4gPSBfTWVyZ2VOPFQsIHt9PjtcblxuLyoqIE1hcmsgc29tZSBwcm9wZXJ0aWVzIGFzIHJlcXVpcmVkLCBsZWF2aW5nIG90aGVycyB1bmNoYW5nZWQgKi9cbmV4cG9ydCB0eXBlIE1hcmtSZXF1aXJlZDxULCBSSyBleHRlbmRzIGtleW9mIFQ+ID0gRXhjbHVkZTxULCBSSz4gJiBSZXF1aXJlZDxQaWNrPFQsIFJLPj47XG5cbi8qKiBNYXJrIHNvbWUgcHJvcGVydGllcyBhcyBvcHRpb25hbCwgbGVhdmluZyBvdGhlcnMgdW5jaGFuZ2VkICovXG5leHBvcnQgdHlwZSBNYXJrT3B0aW9uYWw8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gT21pdDxULCBLPiAmIFBhcnRpYWw8UGljazxULCBLPj47XG5cbi8qKiBDb252ZXJ0IHVuaW9uIHR5cGUgdG8gaW50ZXJzZWN0aW9uICNkYXJrbWFnaWMgKi9cbmV4cG9ydCB0eXBlIFVuaW9uVG9JbnRlcnNlY3Rpb248VT4gPSAoVSBleHRlbmRzIGFueSA/IChrOiBVKSA9PiB2b2lkIDogbmV2ZXIpIGV4dGVuZHMgKGs6IGluZmVyIEkpID0+IHZvaWQgPyBJIDogbmV2ZXI7XG5cbnR5cGUgU3RyaW5nTGl0ZXJhbDxUPiA9IFQgZXh0ZW5kcyBzdHJpbmcgPyAoc3RyaW5nIGV4dGVuZHMgVCA/IG5ldmVyIDogVCkgOiBuZXZlcjtcblxuZGVjbGFyZSBjb25zdCBfX09QQVFVRV9UWVBFX186IHVuaXF1ZSBzeW1ib2w7XG5cbi8qKiBFYXNpbHkgY3JlYXRlIG9wYXF1ZSB0eXBlcyBpZS4gdHlwZXMgdGhhdCBhcmUgc3Vic2V0IG9mIHRoZWlyIG9yaWdpbmFsIHR5cGVzIChleDogcG9zaXRpdmUgbnVtYmVycywgdXBwZXJjYXNlZCBzdHJpbmcpICovXG5leHBvcnQgdHlwZSBPcGFxdWU8VHlwZSwgVG9rZW4gZXh0ZW5kcyBzdHJpbmc+ID0gVG9rZW4gZXh0ZW5kcyBTdHJpbmdMaXRlcmFsPFRva2VuPlxuICA/IFR5cGUgJiB7IHJlYWRvbmx5IFtfX09QQVFVRV9UWVBFX19dOiBUb2tlbiB9XG4gIDogbmV2ZXI7XG5cbi8qKiBFYXNpbHkgZXh0cmFjdCB0aGUgdHlwZSBvZiBhIGdpdmVuIG9iamVjdCdzIHZhbHVlcyAqL1xuZXhwb3J0IHR5cGUgVmFsdWVPZjxUPiA9IFRba2V5b2YgVF07XG5cbi8qKiBFYXNpbHkgZXh0cmFjdCB0aGUgdHlwZSBvZiBhIGdpdmVuIGFycmF5J3MgZWxlbWVudHMgKi9cbmV4cG9ydCB0eXBlIEVsZW1lbnRPZjxUIGV4dGVuZHMgcmVhZG9ubHkgYW55W10+ID0gVCBleHRlbmRzIHJlYWRvbmx5IChpbmZlciBFVClbXSA/IEVUIDogbmV2ZXI7XG5cbi8qKiBUeXBlIGNvbnN0cmFpbnQgZm9yIHR1cGxlIGluZmVyZW5jZSAqL1xuZXhwb3J0IHR5cGUgVHVwbGU8VCA9IGFueT4gPSBbVF0gfCBUW107XG5cbi8qKiBVc2VmdWwgYXMgYSByZXR1cm4gdHlwZSBpbiBpbnRlcmZhY2VzIG9yIGFic3RyYWN0IGNsYXNzZXMgd2l0aCBtaXNzaW5nIGltcGxlbWVudGF0aW9uICovXG5leHBvcnQgdHlwZSBBc3luY09yU3luYzxUPiA9IFByb21pc2VMaWtlPFQ+IHwgVDtcblxuZXhwb3J0IHR5cGUgQXdhaXRlZDxUPiA9IFQgZXh0ZW5kcyBQcm9taXNlTGlrZTxpbmZlciBQVD4gPyBQVCA6IG5ldmVyO1xuZXhwb3J0IHR5cGUgQXN5bmNPclN5bmNUeXBlPFQ+ID0gVCBleHRlbmRzIEFzeW5jT3JTeW5jPGluZmVyIFBUPiA/IFBUIDogbmV2ZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV3YWJsZTxUPiB7XG4gIG5ldyAoLi4uYXJnczogYW55W10pOiBUO1xufVxuXG4vLyBBIGhlbHBlciBmb3IgYFJlYWRvbmx5S2V5c2AgJiBgV3JpdGFibGVLZXlzYFxuLy8gVGhpcyBwb3RlbnRpYWxseSBhYnVzZXMgY29tcGlsZXIgc29tZSBpbmNvbnNpc3RlbmNpZXMgaW4gY2hlY2tpbmcgdHlwZSBlcXVhbGl0eSBmb3IgZ2VuZXJpY3MsXG4vLyBiZWNhdXNlIG5vcm1hbGx5IGByZWFkb25seWAgZG9lc24ndCBhZmZlY3Qgd2hldGhlciB0eXBlcyBhcmUgYXNzaWduYWJsZS5cbi8vIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzUyNDczMTA4LzE4MTUyMDkgd2l0aCBjb21tZW50c1xudHlwZSBJc0VxdWFsQ29uc2lkZXJpbmdXcml0YWJpbGl0eTxYLCBZPiA9ICg8VD4oKSA9PiBUIGV4dGVuZHMgWCA/IDEgOiAyKSBleHRlbmRzIDxUPigpID0+IFQgZXh0ZW5kcyBZID8gMSA6IDJcbiAgPyB0cnVlXG4gIDogZmFsc2U7XG5cbi8vIFRoaXMgYWxzbyBwcm9iYWJseSB1c2VzIHNvbWUgaW5jb25zaXN0ZW5jaWVzIC0tIGV2ZW4gdGhvdWdoIGl0IF9zaG91bGRfIGJlIHRoZSBzYW1lIHRvIGp1c3QgdXNlXG4vLyBgVCwgV3JpdGFibGU8VD5gIGZvciBnZW5lcmljIGFyZ3VtZW50cywgaXQgc3RvcHMgd29ya2luZyB0aGVuLCBhbHdheXMgZXZhbHVhdGluZyB0byBgZmFsc2VgLlxuLy8gU3dhcHBpbmcgYFdyaXRhYmxlYCB0byBgUmVhZGFibGVgIGFsd2F5cyByZXR1cm5zIGZhbHNlIHRvbywgaW5zdGVhZCBvZiB5aWVsZGluZyBvcHBvc2l0ZSByZXN1bHRzLlxudHlwZSBJc0Z1bGx5V3JpdGFibGU8VCBleHRlbmRzIG9iamVjdD4gPSBJc0VxdWFsQ29uc2lkZXJpbmdXcml0YWJpbGl0eTxcbiAgeyBbUSBpbiBrZXlvZiBUXTogVFtRXSB9LFxuICBXcml0YWJsZTx7IFtRIGluIGtleW9mIFRdOiBUW1FdIH0+XG4+O1xuXG4vKiogR2V0cyBrZXlzIG9mIGFuIG9iamVjdCB3aGljaCBhcmUgcmVhZG9ubHkgKi9cbmV4cG9ydCB0eXBlIFJlYWRvbmx5S2V5czxUIGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgW1AgaW4ga2V5b2YgVF0tPzogSXNGdWxseVdyaXRhYmxlPFBpY2s8VCwgUD4+IGV4dGVuZHMgdHJ1ZSA/IG5ldmVyIDogUDtcbn1ba2V5b2YgVF07XG5cbi8qKiBHZXRzIGtleXMgb2YgYW4gb2JqZWN0IHdoaWNoIGFyZSB3cml0YWJsZSAqL1xuZXhwb3J0IHR5cGUgV3JpdGFibGVLZXlzPFQgZXh0ZW5kcyB7fT4gPSB7XG4gIFtQIGluIGtleW9mIFRdLT86IElzRnVsbHlXcml0YWJsZTxQaWNrPFQsIFA+PiBleHRlbmRzIHRydWUgPyBQIDogbmV2ZXI7XG59W2tleW9mIFRdO1xuXG4vKiogTWFyayBzb21lIHByb3BlcnRpZXMgd2hpY2ggb25seSB0aGUgZm9ybWVyIGluY2x1ZGluZyBhcyBvcHRpb25hbCBhbmQgc2V0IHRoZSB2YWx1ZSB0byBuZXZlciAqL1xudHlwZSBXaXRob3V0PFQsIFU+ID0geyBbUCBpbiBFeGNsdWRlPGtleW9mIFQsIGtleW9mIFU+XT86IG5ldmVyIH07XG5cbi8qKiBnZXQgdGhlIFhPUiB0eXBlIHdoaWNoIGNvdWxkIG1ha2UgMiB0eXBlcyBleGNsdWRlIGVhY2ggb3RoZXIgKi9cbmV4cG9ydCB0eXBlIFhPUjxULCBVPiA9IFQgfCBVIGV4dGVuZHMgb2JqZWN0ID8gKFdpdGhvdXQ8VCwgVT4gJiBVKSB8IChXaXRob3V0PFUsIFQ+ICYgVCkgOiBUIHwgVTtcblxuLyoqIEZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcgZXNzZW50aWFscyAqL1xuZXhwb3J0IHR5cGUgSGVhZDxUIGV4dGVuZHMgQW55QXJyYXk+ID0gVFtcImxlbmd0aFwiXSBleHRlbmRzIDAgPyBuZXZlciA6IFRbMF07XG5leHBvcnQgdHlwZSBUYWlsPFQgZXh0ZW5kcyBBbnlBcnJheT4gPSBUW1wibGVuZ3RoXCJdIGV4dGVuZHMgMFxuICA/IG5ldmVyXG4gIDogKCguLi50OiBUKSA9PiB2b2lkKSBleHRlbmRzIChmaXJzdDogYW55LCAuLi5yZXN0OiBpbmZlciBSZXN0KSA9PiB2b2lkXG4gID8gUmVzdFxuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBFeGFjdDxULCBTSEFQRT4gPSBUIGV4dGVuZHMgU0hBUEUgPyAoRXhjbHVkZTxrZXlvZiBULCBrZXlvZiBTSEFQRT4gZXh0ZW5kcyBuZXZlciA/IFQgOiBuZXZlcikgOiBuZXZlcjtcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBFc3NlbnRpYWxzICovXG5leHBvcnQgdHlwZSBQcmltaXRpdmUgPSBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgYmlnaW50IHwgc3ltYm9sIHwgdW5kZWZpbmVkIHwgbnVsbDtcbmV4cG9ydCB0eXBlIEJ1aWx0aW4gPSBQcmltaXRpdmUgfCBGdW5jdGlvbiB8IERhdGUgfCBFcnJvciB8IFJlZ0V4cDtcbmV4cG9ydCB0eXBlIElzVHVwbGU8VD4gPSBUIGV4dGVuZHMgYW55W10gPyAoYW55W10gZXh0ZW5kcyBUID8gbmV2ZXIgOiBUKSA6IG5ldmVyO1xudHlwZSBBbnlSZWNvcmQ8VCA9IGFueT4gPSBSZWNvcmQ8UHJvcGVydHlLZXksIFQ+O1xuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDk5Mjc1MjMvZGlzYWxsb3ctY2FsbC13aXRoLWFueS80OTkyODM2MCM0OTkyODM2MFxudHlwZSBJc0FueTxUPiA9IDAgZXh0ZW5kcyAxICYgVCA/IHRydWUgOiBmYWxzZTtcbnR5cGUgSXNVbmtub3duPFQ+ID0gSXNBbnk8VD4gZXh0ZW5kcyB0cnVlID8gZmFsc2UgOiB1bmtub3duIGV4dGVuZHMgVCA/IHRydWUgOiBmYWxzZTtcbmV4cG9ydCB0eXBlIEFueUFycmF5PFQgPSBhbnk+ID0gQXJyYXk8VD4gfCBSZWFkb25seUFycmF5PFQ+O1xuXG4vKipcbiAqIExpa2UgUmVjb3JkLCBidXQgY2FuIGJlIHVzZWQgd2l0aCBvbmx5IG9uZSBhcmd1bWVudC5cbiAqIFVzZWZ1bCwgaWYgeW91IHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIHRoZSBrZXlzIG9mIGEgZmluaXRlIHR5cGUgYXJlIHVzZWQuXG4gKi9cbmV4cG9ydCB0eXBlIERpY3Rpb25hcnk8VCwgSyBleHRlbmRzIHN0cmluZyB8IG51bWJlciA9IHN0cmluZz4gPSB7IFtrZXkgaW4gS106IFQgfTtcbi8qKiBHaXZlbiBEaWN0aW9uYXJ5PFQ+IHJldHVybnMgVCAqL1xuZXhwb3J0IHR5cGUgRGljdGlvbmFyeVZhbHVlczxUPiA9IFRba2V5b2YgVF07XG4vKipcbiAqIExpa2UgRGljdGlvbmFyeSwgYnV0OlxuICogIC0gZW5zdXJlcyB0eXBlIHNhZmV0eSBvZiBpbmRleCBhY2Nlc3NcbiAqICAtIGRvZXMgbm90IGVuZm9yY2Uga2V5IGV4aGF1c3RpdmVuZXNzXG4gKi9cbmV4cG9ydCB0eXBlIFNhZmVEaWN0aW9uYXJ5PFQsIEsgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgPSBzdHJpbmc+ID0geyBba2V5IGluIEtdPzogVCB9O1xuXG4vKiogTGlrZSBQYXJ0aWFsIGJ1dCByZWN1cnNpdmUgKi9cbmV4cG9ydCB0eXBlIERlZXBQYXJ0aWFsPFQ+ID0gVCBleHRlbmRzIEJ1aWx0aW5cbiAgPyBUXG4gIDogVCBleHRlbmRzIE1hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IE1hcDxEZWVwUGFydGlhbDxLPiwgRGVlcFBhcnRpYWw8Vj4+XG4gIDogVCBleHRlbmRzIFJlYWRvbmx5TWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gUmVhZG9ubHlNYXA8RGVlcFBhcnRpYWw8Sz4sIERlZXBQYXJ0aWFsPFY+PlxuICA6IFQgZXh0ZW5kcyBXZWFrTWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gV2Vha01hcDxEZWVwUGFydGlhbDxLPiwgRGVlcFBhcnRpYWw8Vj4+XG4gIDogVCBleHRlbmRzIFNldDxpbmZlciBVPlxuICA/IFNldDxEZWVwUGFydGlhbDxVPj5cbiAgOiBUIGV4dGVuZHMgUmVhZG9ubHlTZXQ8aW5mZXIgVT5cbiAgPyBSZWFkb25seVNldDxEZWVwUGFydGlhbDxVPj5cbiAgOiBUIGV4dGVuZHMgV2Vha1NldDxpbmZlciBVPlxuICA/IFdlYWtTZXQ8RGVlcFBhcnRpYWw8VT4+XG4gIDogVCBleHRlbmRzIEFycmF5PGluZmVyIFU+XG4gID8gVCBleHRlbmRzIElzVHVwbGU8VD5cbiAgICA/IHsgW0sgaW4ga2V5b2YgVF0/OiBEZWVwUGFydGlhbDxUW0tdPiB9XG4gICAgOiBBcnJheTxEZWVwUGFydGlhbDxVPj5cbiAgOiBUIGV4dGVuZHMgUHJvbWlzZTxpbmZlciBVPlxuICA/IFByb21pc2U8RGVlcFBhcnRpYWw8VT4+XG4gIDogVCBleHRlbmRzIHt9XG4gID8geyBbSyBpbiBrZXlvZiBUXT86IERlZXBQYXJ0aWFsPFRbS10+IH1cbiAgOiBJc1Vua25vd248VD4gZXh0ZW5kcyB0cnVlXG4gID8gdW5rbm93blxuICA6IFBhcnRpYWw8VD47XG5cbi8qKiBSZWN1cnNpdmUgbnVsbGFibGUgKi9cbmV4cG9ydCB0eXBlIERlZXBOdWxsYWJsZTxUPiA9IFQgZXh0ZW5kcyBCdWlsdGluXG4gID8gVCB8IG51bGxcbiAgOiBUIGV4dGVuZHMgTWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gTWFwPERlZXBOdWxsYWJsZTxLPiwgRGVlcE51bGxhYmxlPFY+PlxuICA6IFQgZXh0ZW5kcyBSZWFkb25seU1hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IFJlYWRvbmx5TWFwPERlZXBOdWxsYWJsZTxLPiwgRGVlcE51bGxhYmxlPFY+PlxuICA6IFQgZXh0ZW5kcyBXZWFrTWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gV2Vha01hcDxEZWVwTnVsbGFibGU8Sz4sIERlZXBOdWxsYWJsZTxWPj5cbiAgOiBUIGV4dGVuZHMgU2V0PGluZmVyIFU+XG4gID8gU2V0PERlZXBOdWxsYWJsZTxVPj5cbiAgOiBUIGV4dGVuZHMgUmVhZG9ubHlTZXQ8aW5mZXIgVT5cbiAgPyBSZWFkb25seVNldDxEZWVwTnVsbGFibGU8VT4+XG4gIDogVCBleHRlbmRzIFdlYWtTZXQ8aW5mZXIgVT5cbiAgPyBXZWFrU2V0PERlZXBOdWxsYWJsZTxVPj5cbiAgOiBUIGV4dGVuZHMgQXJyYXk8aW5mZXIgVT5cbiAgPyBUIGV4dGVuZHMgSXNUdXBsZTxUPlxuICAgID8geyBbSyBpbiBrZXlvZiBUXTogRGVlcE51bGxhYmxlPFRbS10+IHwgbnVsbCB9XG4gICAgOiBBcnJheTxEZWVwTnVsbGFibGU8VT4+XG4gIDogVCBleHRlbmRzIFByb21pc2U8aW5mZXIgVT5cbiAgPyBQcm9taXNlPERlZXBOdWxsYWJsZTxVPj5cbiAgOiBUIGV4dGVuZHMge31cbiAgPyB7IFtLIGluIGtleW9mIFRdOiBEZWVwTnVsbGFibGU8VFtLXT4gfVxuICA6IFQgfCBudWxsO1xuXG4vKiogUmVjdXJzaXZlIHVuZGVmaW5hYmxlICovXG5leHBvcnQgdHlwZSBEZWVwVW5kZWZpbmFibGU8VD4gPSBUIGV4dGVuZHMgQnVpbHRpblxuICA/IFQgfCB1bmRlZmluZWRcbiAgOiBUIGV4dGVuZHMgTWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gTWFwPERlZXBVbmRlZmluYWJsZTxLPiwgRGVlcFVuZGVmaW5hYmxlPFY+PlxuICA6IFQgZXh0ZW5kcyBSZWFkb25seU1hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IFJlYWRvbmx5TWFwPERlZXBVbmRlZmluYWJsZTxLPiwgRGVlcFVuZGVmaW5hYmxlPFY+PlxuICA6IFQgZXh0ZW5kcyBXZWFrTWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gV2Vha01hcDxEZWVwVW5kZWZpbmFibGU8Sz4sIERlZXBVbmRlZmluYWJsZTxWPj5cbiAgOiBUIGV4dGVuZHMgU2V0PGluZmVyIFU+XG4gID8gU2V0PERlZXBVbmRlZmluYWJsZTxVPj5cbiAgOiBUIGV4dGVuZHMgUmVhZG9ubHlTZXQ8aW5mZXIgVT5cbiAgPyBSZWFkb25seVNldDxEZWVwVW5kZWZpbmFibGU8VT4+XG4gIDogVCBleHRlbmRzIFdlYWtTZXQ8aW5mZXIgVT5cbiAgPyBXZWFrU2V0PERlZXBVbmRlZmluYWJsZTxVPj5cbiAgOiBUIGV4dGVuZHMgQXJyYXk8aW5mZXIgVT5cbiAgPyBUIGV4dGVuZHMgSXNUdXBsZTxUPlxuICAgID8geyBbSyBpbiBrZXlvZiBUXTogRGVlcFVuZGVmaW5hYmxlPFRbS10+IHwgdW5kZWZpbmVkIH1cbiAgICA6IEFycmF5PERlZXBVbmRlZmluYWJsZTxVPj5cbiAgOiBUIGV4dGVuZHMgUHJvbWlzZTxpbmZlciBVPlxuICA/IFByb21pc2U8RGVlcFVuZGVmaW5hYmxlPFU+PlxuICA6IFQgZXh0ZW5kcyB7fVxuICA/IHsgW0sgaW4ga2V5b2YgVF06IERlZXBVbmRlZmluYWJsZTxUW0tdPiB9XG4gIDogVCB8IHVuZGVmaW5lZDtcblxuLyoqIExpa2UgTm9uTnVsbGFibGUgYnV0IHJlY3Vyc2l2ZSAqL1xuZXhwb3J0IHR5cGUgRGVlcE5vbk51bGxhYmxlPFQ+ID0gVCBleHRlbmRzIEJ1aWx0aW5cbiAgPyBOb25OdWxsYWJsZTxUPlxuICA6IFQgZXh0ZW5kcyBNYXA8aW5mZXIgSywgaW5mZXIgVj5cbiAgPyBNYXA8RGVlcE5vbk51bGxhYmxlPEs+LCBEZWVwTm9uTnVsbGFibGU8Vj4+XG4gIDogVCBleHRlbmRzIFJlYWRvbmx5TWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gUmVhZG9ubHlNYXA8RGVlcE5vbk51bGxhYmxlPEs+LCBEZWVwTm9uTnVsbGFibGU8Vj4+XG4gIDogVCBleHRlbmRzIFdlYWtNYXA8aW5mZXIgSywgaW5mZXIgVj5cbiAgPyBXZWFrTWFwPERlZXBOb25OdWxsYWJsZTxLPiwgRGVlcE5vbk51bGxhYmxlPFY+PlxuICA6IFQgZXh0ZW5kcyBTZXQ8aW5mZXIgVT5cbiAgPyBTZXQ8RGVlcE5vbk51bGxhYmxlPFU+PlxuICA6IFQgZXh0ZW5kcyBSZWFkb25seVNldDxpbmZlciBVPlxuICA/IFJlYWRvbmx5U2V0PERlZXBOb25OdWxsYWJsZTxVPj5cbiAgOiBUIGV4dGVuZHMgV2Vha1NldDxpbmZlciBVPlxuICA/IFdlYWtTZXQ8RGVlcE5vbk51bGxhYmxlPFU+PlxuICA6IFQgZXh0ZW5kcyBQcm9taXNlPGluZmVyIFU+XG4gID8gUHJvbWlzZTxEZWVwTm9uTnVsbGFibGU8VT4+XG4gIDogVCBleHRlbmRzIHt9XG4gID8geyBbSyBpbiBrZXlvZiBUXTogRGVlcE5vbk51bGxhYmxlPFRbS10+IH1cbiAgOiBOb25OdWxsYWJsZTxUPjtcblxuLyoqIExpa2UgUmVxdWlyZWQgYnV0IHJlY3Vyc2l2ZSAqL1xuZXhwb3J0IHR5cGUgRGVlcFJlcXVpcmVkPFQ+ID0gVCBleHRlbmRzIEVycm9yXG4gID8gUmVxdWlyZWQ8VD5cbiAgOiBUIGV4dGVuZHMgQnVpbHRpblxuICA/IFRcbiAgOiBUIGV4dGVuZHMgTWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gTWFwPERlZXBSZXF1aXJlZDxLPiwgRGVlcFJlcXVpcmVkPFY+PlxuICA6IFQgZXh0ZW5kcyBSZWFkb25seU1hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IFJlYWRvbmx5TWFwPERlZXBSZXF1aXJlZDxLPiwgRGVlcFJlcXVpcmVkPFY+PlxuICA6IFQgZXh0ZW5kcyBXZWFrTWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gV2Vha01hcDxEZWVwUmVxdWlyZWQ8Sz4sIERlZXBSZXF1aXJlZDxWPj5cbiAgOiBUIGV4dGVuZHMgU2V0PGluZmVyIFU+XG4gID8gU2V0PERlZXBSZXF1aXJlZDxVPj5cbiAgOiBUIGV4dGVuZHMgUmVhZG9ubHlTZXQ8aW5mZXIgVT5cbiAgPyBSZWFkb25seVNldDxEZWVwUmVxdWlyZWQ8VT4+XG4gIDogVCBleHRlbmRzIFdlYWtTZXQ8aW5mZXIgVT5cbiAgPyBXZWFrU2V0PERlZXBSZXF1aXJlZDxVPj5cbiAgOiBUIGV4dGVuZHMgUHJvbWlzZTxpbmZlciBVPlxuICA/IFByb21pc2U8RGVlcFJlcXVpcmVkPFU+PlxuICA6IFQgZXh0ZW5kcyB7fVxuICA/IHsgW0sgaW4ga2V5b2YgVF0tPzogRGVlcFJlcXVpcmVkPFRbS10+IH1cbiAgOiBSZXF1aXJlZDxUPjtcblxuLyoqIExpa2UgUmVhZG9ubHkgYnV0IHJlY3Vyc2l2ZSAqL1xuZXhwb3J0IHR5cGUgRGVlcFJlYWRvbmx5PFQ+ID0gVCBleHRlbmRzIEJ1aWx0aW5cbiAgPyBUXG4gIDogVCBleHRlbmRzIE1hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IFJlYWRvbmx5TWFwPERlZXBSZWFkb25seTxLPiwgRGVlcFJlYWRvbmx5PFY+PlxuICA6IFQgZXh0ZW5kcyBSZWFkb25seU1hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IFJlYWRvbmx5TWFwPERlZXBSZWFkb25seTxLPiwgRGVlcFJlYWRvbmx5PFY+PlxuICA6IFQgZXh0ZW5kcyBXZWFrTWFwPGluZmVyIEssIGluZmVyIFY+XG4gID8gV2Vha01hcDxEZWVwUmVhZG9ubHk8Sz4sIERlZXBSZWFkb25seTxWPj5cbiAgOiBUIGV4dGVuZHMgU2V0PGluZmVyIFU+XG4gID8gUmVhZG9ubHlTZXQ8RGVlcFJlYWRvbmx5PFU+PlxuICA6IFQgZXh0ZW5kcyBSZWFkb25seVNldDxpbmZlciBVPlxuICA/IFJlYWRvbmx5U2V0PERlZXBSZWFkb25seTxVPj5cbiAgOiBUIGV4dGVuZHMgV2Vha1NldDxpbmZlciBVPlxuICA/IFdlYWtTZXQ8RGVlcFJlYWRvbmx5PFU+PlxuICA6IFQgZXh0ZW5kcyBQcm9taXNlPGluZmVyIFU+XG4gID8gUHJvbWlzZTxEZWVwUmVhZG9ubHk8VT4+XG4gIDogVCBleHRlbmRzIHt9XG4gID8geyByZWFkb25seSBbSyBpbiBrZXlvZiBUXTogRGVlcFJlYWRvbmx5PFRbS10+IH1cbiAgOiBJc1Vua25vd248VD4gZXh0ZW5kcyB0cnVlXG4gID8gdW5rbm93blxuICA6IFJlYWRvbmx5PFQ+O1xuXG4vKiogTWFrZSByZWFkb25seSBvYmplY3Qgd3JpdGFibGUgKi9cbmV4cG9ydCB0eXBlIFdyaXRhYmxlPFQ+ID0geyAtcmVhZG9ubHkgW1AgaW4ga2V5b2YgVF06IFRbUF0gfTtcblxuLyoqIExpa2UgV3JpdGFibGUgYnV0IHJlY3Vyc2l2ZSAqL1xuZXhwb3J0IHR5cGUgRGVlcFdyaXRhYmxlPFQ+ID0gVCBleHRlbmRzIEJ1aWx0aW5cbiAgPyBUXG4gIDogVCBleHRlbmRzIE1hcDxpbmZlciBLLCBpbmZlciBWPlxuICA/IE1hcDxEZWVwV3JpdGFibGU8Sz4sIERlZXBXcml0YWJsZTxWPj5cbiAgOiBUIGV4dGVuZHMgUmVhZG9ubHlNYXA8aW5mZXIgSywgaW5mZXIgVj5cbiAgPyBNYXA8RGVlcFdyaXRhYmxlPEs+LCBEZWVwV3JpdGFibGU8Vj4+XG4gIDogVCBleHRlbmRzIFdlYWtNYXA8aW5mZXIgSywgaW5mZXIgVj5cbiAgPyBXZWFrTWFwPERlZXBXcml0YWJsZTxLPiwgRGVlcFdyaXRhYmxlPFY+PlxuICA6IFQgZXh0ZW5kcyBTZXQ8aW5mZXIgVT5cbiAgPyBTZXQ8RGVlcFdyaXRhYmxlPFU+PlxuICA6IFQgZXh0ZW5kcyBSZWFkb25seVNldDxpbmZlciBVPlxuICA/IFNldDxEZWVwV3JpdGFibGU8VT4+XG4gIDogVCBleHRlbmRzIFdlYWtTZXQ8aW5mZXIgVT5cbiAgPyBXZWFrU2V0PERlZXBXcml0YWJsZTxVPj5cbiAgOiBUIGV4dGVuZHMgUHJvbWlzZTxpbmZlciBVPlxuICA/IFByb21pc2U8RGVlcFdyaXRhYmxlPFU+PlxuICA6IFQgZXh0ZW5kcyB7fVxuICA/IHsgLXJlYWRvbmx5IFtLIGluIGtleW9mIFRdOiBEZWVwV3JpdGFibGU8VFtLXT4gfVxuICA6IFQ7XG5cbi8qKiBDb21iaW5hdGlvbiBvZiBEZWVwUGFydGlhbCBhbmQgRGVlcFdyaXRhYmxlICovXG5leHBvcnQgdHlwZSBCdWlsZGFibGU8VD4gPSBEZWVwUGFydGlhbDxEZWVwV3JpdGFibGU8VD4+O1xuXG4vKiogU2ltaWxhciB0byB0aGUgYnVpbHRpbiBPbWl0LCBidXQgY2hlY2tzIHRoZSBmaWx0ZXIgc3RyaWN0bHkuICovXG5leHBvcnQgdHlwZSBTdHJpY3RPbWl0PFQgZXh0ZW5kcyBBbnlSZWNvcmQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IFQgZXh0ZW5kcyBBbnlBcnJheSA/IG5ldmVyIDogT21pdDxULCBLPjtcblxuLyoqIFNpbWlsYXIgdG8gdGhlIGJ1aWx0aW4gRXh0cmFjdCwgYnV0IGNoZWNrcyB0aGUgZmlsdGVyIHN0cmljdGx5ICovXG5leHBvcnQgdHlwZSBTdHJpY3RFeHRyYWN0PFQsIFUgZXh0ZW5kcyBQYXJ0aWFsPFQ+PiA9IEV4dHJhY3Q8VCwgVT47XG5cbnR5cGUgUGlja0tleXNCeVZhbHVlPFQsIFY+ID0geyBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIFYgPyBLIDogbmV2ZXIgfVtrZXlvZiBUXTtcblxuLyoqIE9taXQgYWxsIHByb3BlcnRpZXMgb2YgZ2l2ZW4gdHlwZSBpbiBvYmplY3QgdHlwZSAqL1xuZXhwb3J0IHR5cGUgT21pdFByb3BlcnRpZXM8VCwgUD4gPSBPbWl0PFQsIFBpY2tLZXlzQnlWYWx1ZTxULCBQPj47XG5cbi8qKiBQaWNrIGFsbCBwcm9wZXJ0aWVzIG9mIGdpdmVuIHR5cGUgaW4gb2JqZWN0IHR5cGUgKi9cbmV4cG9ydCB0eXBlIFBpY2tQcm9wZXJ0aWVzPFQsIFA+ID0gUGljazxULCBQaWNrS2V5c0J5VmFsdWU8VCwgUD4+O1xuXG4vKiogR2V0cyBrZXlzIG9mIGFuIG9iamVjdCB3aGljaCBhcmUgb3B0aW9uYWwgKi9cbmV4cG9ydCB0eXBlIE9wdGlvbmFsS2V5czxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF0tPzogdW5kZWZpbmVkIGV4dGVuZHMgeyBbSzIgaW4ga2V5b2YgVF06IEsyIH1bS10gPyBLIDogbmV2ZXI7XG59W2tleW9mIFRdO1xuXG4vKiogR2V0cyBrZXlzIG9mIGFuIG9iamVjdCB3aGljaCBhcmUgcmVxdWlyZWQgKi9cbmV4cG9ydCB0eXBlIFJlcXVpcmVkS2V5czxUPiA9IEV4Y2x1ZGU8a2V5b2YgVCwgT3B0aW9uYWxLZXlzPFQ+PjtcblxuLyoqIEdldHMga2V5cyBvZiBwcm9wZXJ0aWVzIG9mIGdpdmVuIHR5cGUgaW4gb2JqZWN0IHR5cGUgKi9cbmV4cG9ydCB0eXBlIFBpY2tLZXlzPFQsIFA+ID0gRXhjbHVkZTxrZXlvZiBQaWNrUHJvcGVydGllczxULCBQPiwgdW5kZWZpbmVkPjtcblxuLyoqIFJlY3Vyc2l2ZWx5IG9taXQgZGVlcCBwcm9wZXJ0aWVzICovXG4vLyBleHBsaWNpdGx5IG1lbnRpb25pbmcgb3B0aW9uYWwgcHJvcGVydGllcywgdG8gd29yayBhcm91bmQgVFMgbWFraW5nIHRoZW0gcmVxdWlyZWRcbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20va3J6a2Fjem9yL3RzLWVzc2VudGlhbHMvaXNzdWVzLzExOFxuZXhwb3J0IHR5cGUgRGVlcE9taXQ8VCBleHRlbmRzIERlZXBPbWl0TW9kaWZ5PEZpbHRlcj4sIEZpbHRlcj4gPSBUIGV4dGVuZHMgQnVpbHRpblxuICA/IFRcbiAgOiBUIGV4dGVuZHMgTWFwPGluZmVyIEtleVR5cGUsIGluZmVyIFZhbHVlVHlwZT5cbiAgPyBWYWx1ZVR5cGUgZXh0ZW5kcyBEZWVwT21pdE1vZGlmeTxGaWx0ZXI+XG4gICAgPyBNYXA8S2V5VHlwZSwgRGVlcE9taXQ8VmFsdWVUeXBlLCBGaWx0ZXI+PlxuICAgIDogVFxuICA6IFQgZXh0ZW5kcyBSZWFkb25seU1hcDxpbmZlciBLZXlUeXBlLCBpbmZlciBWYWx1ZVR5cGU+XG4gID8gVmFsdWVUeXBlIGV4dGVuZHMgRGVlcE9taXRNb2RpZnk8RmlsdGVyPlxuICAgID8gUmVhZG9ubHlNYXA8S2V5VHlwZSwgRGVlcE9taXQ8VmFsdWVUeXBlLCBGaWx0ZXI+PlxuICAgIDogVFxuICA6IFQgZXh0ZW5kcyBXZWFrTWFwPGluZmVyIEtleVR5cGUsIGluZmVyIFZhbHVlVHlwZT5cbiAgPyBWYWx1ZVR5cGUgZXh0ZW5kcyBEZWVwT21pdE1vZGlmeTxGaWx0ZXI+XG4gICAgPyBXZWFrTWFwPEtleVR5cGUsIERlZXBPbWl0PFZhbHVlVHlwZSwgRmlsdGVyPj5cbiAgICA6IFRcbiAgOiBUIGV4dGVuZHMgU2V0PGluZmVyIEl0ZW1UeXBlPlxuICA/IEl0ZW1UeXBlIGV4dGVuZHMgRGVlcE9taXRNb2RpZnk8RmlsdGVyPlxuICAgID8gU2V0PERlZXBPbWl0PEl0ZW1UeXBlLCBGaWx0ZXI+PlxuICAgIDogVFxuICA6IFQgZXh0ZW5kcyBSZWFkb25seVNldDxpbmZlciBJdGVtVHlwZT5cbiAgPyBJdGVtVHlwZSBleHRlbmRzIERlZXBPbWl0TW9kaWZ5PEZpbHRlcj5cbiAgICA/IFJlYWRvbmx5U2V0PERlZXBPbWl0PEl0ZW1UeXBlLCBGaWx0ZXI+PlxuICAgIDogVFxuICA6IFQgZXh0ZW5kcyBXZWFrU2V0PGluZmVyIEl0ZW1UeXBlPlxuICA/IEl0ZW1UeXBlIGV4dGVuZHMgRGVlcE9taXRNb2RpZnk8RmlsdGVyPlxuICAgID8gV2Vha1NldDxEZWVwT21pdDxJdGVtVHlwZSwgRmlsdGVyPj5cbiAgICA6IFRcbiAgOiBUIGV4dGVuZHMgQXJyYXk8aW5mZXIgSXRlbVR5cGU+XG4gID8gSXRlbVR5cGUgZXh0ZW5kcyBEZWVwT21pdE1vZGlmeTxGaWx0ZXI+XG4gICAgPyBBcnJheTxEZWVwT21pdDxJdGVtVHlwZSwgRmlsdGVyPj5cbiAgICA6IFRcbiAgOiBUIGV4dGVuZHMgUHJvbWlzZTxpbmZlciBJdGVtVHlwZT5cbiAgPyBJdGVtVHlwZSBleHRlbmRzIERlZXBPbWl0TW9kaWZ5PEZpbHRlcj5cbiAgICA/IFByb21pc2U8RGVlcE9taXQ8SXRlbVR5cGUsIEZpbHRlcj4+XG4gICAgOiBUXG4gIDogeyBbSyBpbiBFeGNsdWRlPE9wdGlvbmFsS2V5czxUPiwga2V5b2YgRmlsdGVyPl0rPzogVFtLXSB9ICZcbiAgICAgIE9taXRQcm9wZXJ0aWVzPFxuICAgICAgICB7XG4gICAgICAgICAgW0sgaW4gRXh0cmFjdDxPcHRpb25hbEtleXM8VD4sIGtleW9mIEZpbHRlcj5dKz86IEZpbHRlcltLXSBleHRlbmRzIHRydWVcbiAgICAgICAgICAgID8gbmV2ZXJcbiAgICAgICAgICAgIDogVFtLXSBleHRlbmRzIERlZXBPbWl0TW9kaWZ5PEZpbHRlcltLXT5cbiAgICAgICAgICAgID8gRGVlcE9taXQ8VFtLXSwgRmlsdGVyW0tdPlxuICAgICAgICAgICAgOiBUW0tdO1xuICAgICAgICB9LFxuICAgICAgICBuZXZlclxuICAgICAgPiAmXG4gICAgICB7IFtLIGluIEV4Y2x1ZGU8UmVxdWlyZWRLZXlzPFQ+LCBrZXlvZiBGaWx0ZXI+XTogVFtLXSB9ICZcbiAgICAgIE9taXRQcm9wZXJ0aWVzPFxuICAgICAgICB7XG4gICAgICAgICAgW0sgaW4gRXh0cmFjdDxSZXF1aXJlZEtleXM8VD4sIGtleW9mIEZpbHRlcj5dOiBGaWx0ZXJbS10gZXh0ZW5kcyB0cnVlXG4gICAgICAgICAgICA/IG5ldmVyXG4gICAgICAgICAgICA6IFRbS10gZXh0ZW5kcyBEZWVwT21pdE1vZGlmeTxGaWx0ZXJbS10+XG4gICAgICAgICAgICA/IERlZXBPbWl0PFRbS10sIEZpbHRlcltLXT5cbiAgICAgICAgICAgIDogVFtLXTtcbiAgICAgICAgfSxcbiAgICAgICAgbmV2ZXJcbiAgICAgID47XG50eXBlIERlZXBPbWl0TW9kaWZ5PFQ+ID1cbiAgfCB7XG4gICAgICBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIG5ldmVyID8gYW55IDogVFtLXSBleHRlbmRzIG9iamVjdCA/IERlZXBPbWl0TW9kaWZ5PFRbS10+IDogbmV2ZXI7XG4gICAgfVxuICB8IEFycmF5PERlZXBPbWl0TW9kaWZ5PFQ+PlxuICB8IFByb21pc2U8RGVlcE9taXRNb2RpZnk8VD4+XG4gIHwgU2V0PERlZXBPbWl0TW9kaWZ5PFQ+PlxuICB8IFJlYWRvbmx5U2V0PERlZXBPbWl0TW9kaWZ5PFQ+PlxuICB8IFdlYWtTZXQ8RGVlcE9taXRNb2RpZnk8VD4+XG4gIHwgTWFwPGFueSwgRGVlcE9taXRNb2RpZnk8VD4+XG4gIHwgV2Vha01hcDxhbnksIERlZXBPbWl0TW9kaWZ5PFQ+PjtcblxuLyoqIFJlbW92ZSBrZXlzIHdpdGggYG5ldmVyYCB2YWx1ZSBmcm9tIG9iamVjdCB0eXBlICovXG5leHBvcnQgdHlwZSBOb25OZXZlcjxUIGV4dGVuZHMge30+ID0gUGljazxULCB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IEsgfVtrZXlvZiBUXT47XG5cbmV4cG9ydCB0eXBlIE5vbkVtcHR5T2JqZWN0PFQgZXh0ZW5kcyB7fT4gPSBrZXlvZiBUIGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IFQ7XG5cbi8qKiBNZXJnZSAyIHR5cGVzLCBwcm9wZXJ0aWVzIHR5cGVzIGZyb20gdGhlIGxhdHRlciBvdmVycmlkZSB0aGUgb25lcyBkZWZpbmVkIG9uIHRoZSBmb3JtZXIgdHlwZSAqL1xuZXhwb3J0IHR5cGUgTWVyZ2U8TSwgTj4gPSBPbWl0PE0sIGtleW9mIE4+ICYgTjtcblxudHlwZSBfTWVyZ2VOPFQgZXh0ZW5kcyByZWFkb25seSBhbnlbXSwgUmVzdWx0PiA9IFQgZXh0ZW5kcyByZWFkb25seSBbaW5mZXIgSGVhZCwgLi4uKGluZmVyIFRhaWwpXVxuICA/IF9NZXJnZU48VGFpbCwgTWVyZ2U8UmVzdWx0LCBIZWFkPj5cbiAgOiBSZXN1bHQ7XG5cbi8qKiBNZXJnZSBOIHR5cGVzLCBwcm9wZXJ0aWVzIHR5cGVzIGZyb20gdGhlIGxhdHRlciBvdmVycmlkZSB0aGUgb25lcyBkZWZpbmVkIG9uIHRoZSBmb3JtZXIgdHlwZSAqL1xuZXhwb3J0IHR5cGUgTWVyZ2VOPFQgZXh0ZW5kcyByZWFkb25seSBhbnlbXT4gPSBfTWVyZ2VOPFQsIHt9PjtcblxuLyoqIE1hcmsgc29tZSBwcm9wZXJ0aWVzIGFzIHJlcXVpcmVkLCBsZWF2aW5nIG90aGVycyB1bmNoYW5nZWQgKi9cbmV4cG9ydCB0eXBlIE1hcmtSZXF1aXJlZDxULCBSSyBleHRlbmRzIGtleW9mIFQ+ID0gRXhjbHVkZTxULCBSSz4gJiBSZXF1aXJlZDxQaWNrPFQsIFJLPj47XG5cbi8qKiBNYXJrIHNvbWUgcHJvcGVydGllcyBhcyBvcHRpb25hbCwgbGVhdmluZyBvdGhlcnMgdW5jaGFuZ2VkICovXG5leHBvcnQgdHlwZSBNYXJrT3B0aW9uYWw8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gT21pdDxULCBLPiAmIFBhcnRpYWw8UGljazxULCBLPj47XG5cbi8qKiBDb252ZXJ0IHVuaW9uIHR5cGUgdG8gaW50ZXJzZWN0aW9uICNkYXJrbWFnaWMgKi9cbmV4cG9ydCB0eXBlIFVuaW9uVG9JbnRlcnNlY3Rpb248VT4gPSAoVSBleHRlbmRzIGFueSA/IChrOiBVKSA9PiB2b2lkIDogbmV2ZXIpIGV4dGVuZHMgKGs6IGluZmVyIEkpID0+IHZvaWQgPyBJIDogbmV2ZXI7XG5cbnR5cGUgU3RyaW5nTGl0ZXJhbDxUPiA9IFQgZXh0ZW5kcyBzdHJpbmcgPyAoc3RyaW5nIGV4dGVuZHMgVCA/IG5ldmVyIDogVCkgOiBuZXZlcjtcblxuZGVjbGFyZSBjb25zdCBfX09QQVFVRV9UWVBFX186IHVuaXF1ZSBzeW1ib2w7XG5cbi8qKiBFYXNpbHkgY3JlYXRlIG9wYXF1ZSB0eXBlcyBpZS4gdHlwZXMgdGhhdCBhcmUgc3Vic2V0IG9mIHRoZWlyIG9yaWdpbmFsIHR5cGVzIChleDogcG9zaXRpdmUgbnVtYmVycywgdXBwZXJjYXNlZCBzdHJpbmcpICovXG5leHBvcnQgdHlwZSBPcGFxdWU8VHlwZSwgVG9rZW4gZXh0ZW5kcyBzdHJpbmc+ID0gVG9rZW4gZXh0ZW5kcyBTdHJpbmdMaXRlcmFsPFRva2VuPlxuICA/IFR5cGUgJiB7IHJlYWRvbmx5IFtfX09QQVFVRV9UWVBFX19dOiBUb2tlbiB9XG4gIDogbmV2ZXI7XG5cbi8qKiBFYXNpbHkgZXh0cmFjdCB0aGUgdHlwZSBvZiBhIGdpdmVuIG9iamVjdCdzIHZhbHVlcyAqL1xuZXhwb3J0IHR5cGUgVmFsdWVPZjxUPiA9IFRba2V5b2YgVF07XG5cbi8qKiBFYXNpbHkgZXh0cmFjdCB0aGUgdHlwZSBvZiBhIGdpdmVuIGFycmF5J3MgZWxlbWVudHMgKi9cbmV4cG9ydCB0eXBlIEVsZW1lbnRPZjxUIGV4dGVuZHMgcmVhZG9ubHkgYW55W10+ID0gVCBleHRlbmRzIHJlYWRvbmx5IChpbmZlciBFVClbXSA/IEVUIDogbmV2ZXI7XG5cbi8qKiBUeXBlIGNvbnN0cmFpbnQgZm9yIHR1cGxlIGluZmVyZW5jZSAqL1xuZXhwb3J0IHR5cGUgVHVwbGU8VCA9IGFueT4gPSBbVF0gfCBUW107XG5cbi8qKiBVc2VmdWwgYXMgYSByZXR1cm4gdHlwZSBpbiBpbnRlcmZhY2VzIG9yIGFic3RyYWN0IGNsYXNzZXMgd2l0aCBtaXNzaW5nIGltcGxlbWVudGF0aW9uICovXG5leHBvcnQgdHlwZSBBc3luY09yU3luYzxUPiA9IFByb21pc2VMaWtlPFQ+IHwgVDtcblxuZXhwb3J0IHR5cGUgQXdhaXRlZDxUPiA9IFQgZXh0ZW5kcyBQcm9taXNlTGlrZTxpbmZlciBQVD4gPyBQVCA6IG5ldmVyO1xuZXhwb3J0IHR5cGUgQXN5bmNPclN5bmNUeXBlPFQ+ID0gVCBleHRlbmRzIEFzeW5jT3JTeW5jPGluZmVyIFBUPiA/IFBUIDogbmV2ZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV3YWJsZTxUPiB7XG4gIG5ldyAoLi4uYXJnczogYW55W10pOiBUO1xufVxuXG4vLyBBIGhlbHBlciBmb3IgYFJlYWRvbmx5S2V5c2AgJiBgV3JpdGFibGVLZXlzYFxuLy8gVGhpcyBwb3RlbnRpYWxseSBhYnVzZXMgY29tcGlsZXIgc29tZSBpbmNvbnNpc3RlbmNpZXMgaW4gY2hlY2tpbmcgdHlwZSBlcXVhbGl0eSBmb3IgZ2VuZXJpY3MsXG4vLyBiZWNhdXNlIG5vcm1hbGx5IGByZWFkb25seWAgZG9lc24ndCBhZmZlY3Qgd2hldGhlciB0eXBlcyBhcmUgYXNzaWduYWJsZS5cbi8vIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzUyNDczMTA4LzE4MTUyMDkgd2l0aCBjb21tZW50c1xudHlwZSBJc0VxdWFsQ29uc2lkZXJpbmdXcml0YWJpbGl0eTxYLCBZPiA9ICg8VD4oKSA9PiBUIGV4dGVuZHMgWCA/IDEgOiAyKSBleHRlbmRzIDxUPigpID0+IFQgZXh0ZW5kcyBZID8gMSA6IDJcbiAgPyB0cnVlXG4gIDogZmFsc2U7XG5cbi8vIFRoaXMgYWxzbyBwcm9iYWJseSB1c2VzIHNvbWUgaW5jb25zaXN0ZW5jaWVzIC0tIGV2ZW4gdGhvdWdoIGl0IF9zaG91bGRfIGJlIHRoZSBzYW1lIHRvIGp1c3QgdXNlXG4vLyBgVCwgV3JpdGFibGU8VD5gIGZvciBnZW5lcmljIGFyZ3VtZW50cywgaXQgc3RvcHMgd29ya2luZyB0aGVuLCBhbHdheXMgZXZhbHVhdGluZyB0byBgZmFsc2VgLlxuLy8gU3dhcHBpbmcgYFdyaXRhYmxlYCB0byBgUmVhZGFibGVgIGFsd2F5cyByZXR1cm5zIGZhbHNlIHRvbywgaW5zdGVhZCBvZiB5aWVsZGluZyBvcHBvc2l0ZSByZXN1bHRzLlxudHlwZSBJc0Z1bGx5V3JpdGFibGU8VCBleHRlbmRzIG9iamVjdD4gPSBJc0VxdWFsQ29uc2lkZXJpbmdXcml0YWJpbGl0eTxcbiAgeyBbUSBpbiBrZXlvZiBUXTogVFtRXSB9LFxuICBXcml0YWJsZTx7IFtRIGluIGtleW9mIFRdOiBUW1FdIH0+XG4+O1xuXG4vKiogR2V0cyBrZXlzIG9mIGFuIG9iamVjdCB3aGljaCBhcmUgcmVhZG9ubHkgKi9cbmV4cG9ydCB0eXBlIFJlYWRvbmx5S2V5czxUIGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgW1AgaW4ga2V5b2YgVF0tPzogSXNGdWxseVdyaXRhYmxlPFBpY2s8VCwgUD4+IGV4dGVuZHMgdHJ1ZSA/IG5ldmVyIDogUDtcbn1ba2V5b2YgVF07XG5cbi8qKiBHZXRzIGtleXMgb2YgYW4gb2JqZWN0IHdoaWNoIGFyZSB3cml0YWJsZSAqL1xuZXhwb3J0IHR5cGUgV3JpdGFibGVLZXlzPFQgZXh0ZW5kcyB7fT4gPSB7XG4gIFtQIGluIGtleW9mIFRdLT86IElzRnVsbHlXcml0YWJsZTxQaWNrPFQsIFA+PiBleHRlbmRzIHRydWUgPyBQIDogbmV2ZXI7XG59W2tleW9mIFRdO1xuXG4vKiogTWFyayBzb21lIHByb3BlcnRpZXMgd2hpY2ggb25seSB0aGUgZm9ybWVyIGluY2x1ZGluZyBhcyBvcHRpb25hbCBhbmQgc2V0IHRoZSB2YWx1ZSB0byBuZXZlciAqL1xudHlwZSBXaXRob3V0PFQsIFU+ID0geyBbUCBpbiBFeGNsdWRlPGtleW9mIFQsIGtleW9mIFU+XT86IG5ldmVyIH07XG5cbi8qKiBnZXQgdGhlIFhPUiB0eXBlIHdoaWNoIGNvdWxkIG1ha2UgMiB0eXBlcyBleGNsdWRlIGVhY2ggb3RoZXIgKi9cbmV4cG9ydCB0eXBlIFhPUjxULCBVPiA9IFQgfCBVIGV4dGVuZHMgb2JqZWN0ID8gKFdpdGhvdXQ8VCwgVT4gJiBVKSB8IChXaXRob3V0PFUsIFQ+ICYgVCkgOiBUIHwgVTtcblxuLyoqIEZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcgZXNzZW50aWFscyAqL1xuZXhwb3J0IHR5cGUgSGVhZDxUIGV4dGVuZHMgQW55QXJyYXk+ID0gVFtcImxlbmd0aFwiXSBleHRlbmRzIDAgPyBuZXZlciA6IFRbMF07XG5leHBvcnQgdHlwZSBUYWlsPFQgZXh0ZW5kcyBBbnlBcnJheT4gPSBUW1wibGVuZ3RoXCJdIGV4dGVuZHMgMFxuICA/IG5ldmVyXG4gIDogKCguLi50OiBUKSA9PiB2b2lkKSBleHRlbmRzIChmaXJzdDogYW55LCAuLi5yZXN0OiBpbmZlciBSZXN0KSA9PiB2b2lkXG4gID8gUmVzdFxuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBFeGFjdDxULCBTSEFQRT4gPSBUIGV4dGVuZHMgU0hBUEUgPyAoRXhjbHVkZTxrZXlvZiBULCBrZXlvZiBTSEFQRT4gZXh0ZW5kcyBuZXZlciA/IFQgOiBuZXZlcikgOiBuZXZlcjtcbiJdfQ== |
@@ -14,3 +14,3 @@ { | ||
], | ||
"version": "8.0.0", | ||
"version": "8.1.0", | ||
"main": "dist/index.js", | ||
@@ -17,0 +17,0 @@ "types": "dist/index.d.ts", |
@@ -9,3 +9,3 @@ <p align="center"> | ||
<a href="/package.json"><img alt="Software License" src="https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square"></a> | ||
<img src="https://img.shields.io/badge/all_contributors-31-orange.svg?style=flat-square" alt="All Contributors"> | ||
<img src="https://img.shields.io/badge/all_contributors-32-orange.svg?style=flat-square" alt="All Contributors"> | ||
<a href="https://codechecks.io"><img src="https://raw.githubusercontent.com/codechecks/docs/master/images/badges/badge-default.svg?sanitize=true" alt="codechecks.io"></a> | ||
@@ -24,2 +24,5 @@ </p> | ||
π As we really want types to be stricter, we require enabled | ||
[strictNullChecks](https://www.typescriptlang.org/tsconfig#strictNullChecks) in your project | ||
If you use any [functions](https://github.com/krzkaczor/ts-essentials/blob/master/lib/functions.ts) you should add | ||
@@ -43,2 +46,3 @@ `ts-essentials` to your `dependencies` (`npm install --save ts-essentials`) to avoid runtime errors in production. | ||
- DeepUndefinable | ||
- [Difference between `DeepRequired` and `DeepNonNullable`](#difference-between-deeprequired-and-deepnonnullable) | ||
- [Writable & DeepWritable](#Writable) | ||
@@ -229,2 +233,37 @@ - [Buildable](#Buildable) | ||
#### Difference between `DeepRequired` and `DeepNonNullable` | ||
`DeepRequired` is closer to `Required` but `DeepNonNullable` on the other hand is closer to `NonNullable` | ||
It means that `DeepRequired` doesn't remove `null` and `undefined` but only makes fields required. On the other hand, | ||
`DeepNonNullable` will only remove `null` and `undefined` but doesn't prohibit the field to be optional. | ||
Let's have a look at the optional nullable field: | ||
```typescript | ||
type Person = { | ||
name?: string | null | undefined; | ||
}; | ||
type NonNullablePerson = DeepNonNullable<Person>; | ||
// { name?: string | undefined; } | ||
type RequiredPerson = DeepRequired<Person>; | ||
// { name: string | null; } | ||
``` | ||
Let's have a look at the required nullable field: | ||
```typescript | ||
type FullName = { | ||
first: string | null | undefined; | ||
}; | ||
type NonNullableFullName = DeepNonNullable<FullName>; | ||
// { first: string; } | ||
type RequiredFullName = DeepRequired<FullName>; | ||
// { first: string | null | undefined; } | ||
``` | ||
And there's no difference between `DeepNonNullable` and `DeepRequired` if the property is non nullable and required | ||
### Writable | ||
@@ -966,2 +1005,3 @@ | ||
<td align="center"><a href="https://github.com/itayronen"><img src="https://avatars.githubusercontent.com/u/21139000?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Itay Ronen</b></sub></a><br /><a href="https://github.com/krzkaczor/ts-essentials/commits?author=itayronen" title="Code">π»</a></td> | ||
<td align="center"><a href="https://github.com/cyberbiont"><img src="https://avatars.githubusercontent.com/u/59398323?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Yaroslav Larin</b></sub></a><br /><a href="https://github.com/krzkaczor/ts-essentials/commits?author=cyberbiont" title="Code">π»</a></td> | ||
</tr> | ||
@@ -968,0 +1008,0 @@ </table> |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
77503
430
1012