diff --git a/js/end_to_end_encryption-files.mjs b/js/end_to_end_encryption-files.mjs index 459bd386..c1acdae8 100644 --- a/js/end_to_end_encryption-files.mjs +++ b/js/end_to_end_encryption-files.mjs @@ -1,2 +1,2 @@ (function(){"use strict";try{if(typeof document<"u"){var i=document.createElement("style");i.appendChild(document.createTextNode("/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */.toastify.dialogs{min-width:200px;background:none;background-color:var(--color-main-background);color:var(--color-main-text);box-shadow:0 0 6px 0 var(--color-box-shadow);padding:0 12px;margin-top:45px;position:fixed;z-index:10100;border-radius:var(--border-radius);display:flex;align-items:center}.toastify.dialogs .toast-undo-container{display:flex;align-items:center}.toastify.dialogs .toast-undo-button,.toastify.dialogs .toast-close{position:static;overflow:hidden;box-sizing:border-box;min-width:44px;height:100%;padding:12px;white-space:nowrap;background-repeat:no-repeat;background-position:center;background-color:transparent;min-height:0}.toastify.dialogs .toast-undo-button.toast-close,.toastify.dialogs .toast-close.toast-close{text-indent:0;opacity:.4;border:none;min-height:44px;margin-left:10px;font-size:0}.toastify.dialogs .toast-undo-button.toast-close:before,.toastify.dialogs .toast-close.toast-close:before{background-image:url(\"data:image/svg+xml,%3csvg%20viewBox='0%200%2016%2016'%20height='16'%20width='16'%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2'%3e%3cpath%20d='M6.4%2019%205%2017.6l5.6-5.6L5%206.4%206.4%205l5.6%205.6L17.6%205%2019%206.4%2013.4%2012l5.6%205.6-1.4%201.4-5.6-5.6L6.4%2019Z'%20style='fill-rule:nonzero'%20transform='matrix(.85714%200%200%20.85714%20-2.286%20-2.286)'/%3e%3c/svg%3e\");content:\" \";filter:var(--background-invert-if-dark);display:inline-block;width:16px;height:16px}.toastify.dialogs .toast-undo-button.toast-undo-button,.toastify.dialogs .toast-close.toast-undo-button{height:calc(100% - 6px);margin:3px 3px 3px 12px}.toastify.dialogs .toast-undo-button:hover,.toastify.dialogs .toast-undo-button:focus,.toastify.dialogs .toast-undo-button:active,.toastify.dialogs .toast-close:hover,.toastify.dialogs .toast-close:focus,.toastify.dialogs .toast-close:active{cursor:pointer;opacity:1}.toastify.dialogs.toastify-top{right:10px}.toastify.dialogs.toast-with-click{cursor:pointer}.toastify.dialogs.toast-error{border-left:3px solid var(--color-error)}.toastify.dialogs.toast-info{border-left:3px solid var(--color-primary)}.toastify.dialogs.toast-warning{border-left:3px solid var(--color-warning)}.toastify.dialogs.toast-success,.toastify.dialogs.toast-undo{border-left:3px solid var(--color-success)}.theme--dark .toastify.dialogs .toast-close.toast-close:before{background-image:url(\"data:image/svg+xml,%3csvg%20viewBox='0%200%2016%2016'%20height='16'%20width='16'%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2'%3e%3cpath%20d='M6.4%2019%205%2017.6l5.6-5.6L5%206.4%206.4%205l5.6%205.6L17.6%205%2019%206.4%2013.4%2012l5.6%205.6-1.4%201.4-5.6-5.6L6.4%2019Z'%20style='fill:%23fff;fill-rule:nonzero'%20transform='matrix(.85714%200%200%20.85714%20-2.286%20-2.286)'/%3e%3c/svg%3e\")}.nc-generic-dialog .dialog__actions{justify-content:space-between;min-width:calc(100% - 12px)}/*!\n * SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */._file-picker__file-icon_19mjt_9{width:32px;height:32px;min-width:32px;min-height:32px;background-repeat:no-repeat;background-size:contain;display:flex;justify-content:center}tr.file-picker__row[data-v-15187afc]{height:var(--row-height, 50px)}tr.file-picker__row td[data-v-15187afc]{cursor:pointer;overflow:hidden;text-overflow:ellipsis;border-bottom:none}tr.file-picker__row td.row-checkbox[data-v-15187afc]{padding:0 2px}tr.file-picker__row td[data-v-15187afc]:not(.row-checkbox){padding-inline:14px 0}tr.file-picker__row td.row-size[data-v-15187afc]{text-align:end;padding-inline:0 14px}tr.file-picker__row td.row-name[data-v-15187afc]{padding-inline:2px 0}@keyframes gradient-15187afc{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.loading-row .row-checkbox[data-v-15187afc]{text-align:center!important}.loading-row span[data-v-15187afc]{display:inline-block;height:24px;background:linear-gradient(to right,var(--color-background-darker),var(--color-text-maxcontrast),var(--color-background-darker));background-size:600px 100%;border-radius:var(--border-radius);animation:gradient-15187afc 12s ease infinite}.loading-row .row-wrapper[data-v-15187afc]{display:inline-flex;align-items:center}.loading-row .row-checkbox span[data-v-15187afc]{width:24px}.loading-row .row-name span[data-v-15187afc]:last-of-type{margin-inline-start:6px;width:130px}.loading-row .row-size span[data-v-15187afc]{width:80px}.loading-row .row-modified span[data-v-15187afc]{width:90px}/*!\n* SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors\n* SPDX-License-Identifier: AGPL-3.0-or-later\n*/tr.file-picker__row[data-v-cb12dccb]{height:var(--row-height, 50px)}tr.file-picker__row td[data-v-cb12dccb]{cursor:pointer;overflow:hidden;text-overflow:ellipsis;border-bottom:none}tr.file-picker__row td.row-checkbox[data-v-cb12dccb]{padding:0 2px}tr.file-picker__row td[data-v-cb12dccb]:not(.row-checkbox){padding-inline:14px 0}tr.file-picker__row td.row-size[data-v-cb12dccb]{text-align:end;padding-inline:0 14px}tr.file-picker__row td.row-name[data-v-cb12dccb]{padding-inline:2px 0}.file-picker__row--selected[data-v-cb12dccb]{background-color:var(--color-background-dark)}.file-picker__row[data-v-cb12dccb]:hover{background-color:var(--color-background-hover)}.file-picker__name-container[data-v-cb12dccb]{display:flex;justify-content:start;align-items:center;height:100%}.file-picker__file-name[data-v-cb12dccb]{padding-inline-start:6px;min-width:0;overflow:hidden;text-overflow:ellipsis}.file-picker__file-extension[data-v-cb12dccb]{color:var(--color-text-maxcontrast);min-width:fit-content}.file-picker__header-preview[data-v-006fdbd0]{width:22px;height:32px;flex:0 0 auto}.file-picker__files[data-v-006fdbd0]{margin:2px;margin-inline-start:12px;overflow:scroll auto}.file-picker__files table[data-v-006fdbd0]{width:100%;max-height:100%;table-layout:fixed}.file-picker__files th[data-v-006fdbd0]{position:-webkit-sticky;position:sticky;z-index:1;top:0;background-color:var(--color-main-background);padding:2px}.file-picker__files th .header-wrapper[data-v-006fdbd0]{display:flex}.file-picker__files th.row-checkbox[data-v-006fdbd0]{width:44px}.file-picker__files th.row-name[data-v-006fdbd0]{width:230px}.file-picker__files th.row-size[data-v-006fdbd0]{width:100px}.file-picker__files th.row-modified[data-v-006fdbd0]{width:120px}.file-picker__files th[data-v-006fdbd0]:not(.row-size) .button-vue__wrapper{justify-content:start;flex-direction:row-reverse}.file-picker__files th[data-v-006fdbd0]:not(.row-size) .button-vue{padding-inline:16px 4px}.file-picker__files th.row-size[data-v-006fdbd0] .button-vue__wrapper{justify-content:end}.file-picker__files th[data-v-006fdbd0] .button-vue__wrapper{color:var(--color-text-maxcontrast)}.file-picker__files th[data-v-006fdbd0] .button-vue__wrapper .button-vue__text{font-weight:400}.file-picker__breadcrumbs[data-v-b357227a]{flex-grow:0!important}.file-picker__side[data-v-b42054b8]{display:flex;flex-direction:column;align-items:stretch;gap:.5rem;min-width:200px;padding:2px;margin-block-start:7px;overflow:auto}.file-picker__side[data-v-b42054b8] .button-vue__wrapper{justify-content:start}.file-picker__filter-input[data-v-b42054b8]{margin-block:7px;max-width:260px}@media (max-width: 736px){.file-picker__side[data-v-b42054b8]{flex-direction:row;min-width:unset}}@media (max-width: 512px){.file-picker__side[data-v-b42054b8]{flex-direction:row;min-width:unset}.file-picker__filter-input[data-v-b42054b8]{max-width:unset}}.file-picker__navigation{padding-inline:8px 2px}.file-picker__navigation,.file-picker__navigation *{box-sizing:border-box}.file-picker__navigation .v-select.select{min-width:220px}@media (min-width: 513px) and (max-width: 736px){.file-picker__navigation{gap:11px}}@media (max-width: 512px){.file-picker__navigation{flex-direction:column-reverse!important}}.file-picker__view[data-v-20b719ba]{height:50px;display:flex;justify-content:start;align-items:center}.file-picker__view h3[data-v-20b719ba]{font-weight:700;height:fit-content;margin:0}.file-picker__main[data-v-20b719ba]{box-sizing:border-box;width:100%;display:flex;flex-direction:column;min-height:0;flex:1;padding-inline:2px}.file-picker__main *[data-v-20b719ba]{box-sizing:border-box}[data-v-20b719ba] .file-picker{height:min(80vh,800px)!important}@media (max-width: 512px){[data-v-20b719ba] .file-picker{height:calc(100% - 16px - var(--default-clickable-area))!important}}[data-v-20b719ba] .file-picker__content{display:flex;flex-direction:column;overflow:hidden}.material-design-icon[data-v-e4fac465]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.input-field[data-v-e4fac465]{--input-border-radius: var(--border-radius-element, var(--border-radius-large));--input-padding-start: var(--border-radius-large);--input-padding-end: var(--border-radius-large);position:relative;width:100%;margin-block-start:6px}.input-field--disabled[data-v-e4fac465]{opacity:.4;filter:saturate(.4)}.input-field--label-outside[data-v-e4fac465]{margin-block-start:0}.input-field--leading-icon[data-v-e4fac465]{--input-padding-start: calc(var(--default-clickable-area) - var(--default-grid-baseline))}.input-field--trailing-icon[data-v-e4fac465]{--input-padding-end: calc(var(--default-clickable-area) - var(--default-grid-baseline))}.input-field--pill[data-v-e4fac465]{--input-border-radius: var(--border-radius-pill)}.input-field__main-wrapper[data-v-e4fac465]{height:var(--default-clickable-area);position:relative}.input-field__input[data-v-e4fac465]{--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));background-color:var(--color-main-background);color:var(--color-main-text);border:var(--border-width-input, 2px) solid var(--color-border-maxcontrast);border-radius:var(--input-border-radius);cursor:pointer;-webkit-appearance:textfield!important;-moz-appearance:textfield!important;appearance:textfield!important;font-size:var(--default-font-size);text-overflow:ellipsis;height:calc(var(--default-clickable-area) - 2 * var(--input-border-width-offset))!important;width:100%;padding-inline:calc(var(--input-padding-start) + var(--input-border-width-offset)) calc(var(--input-padding-end) + var(--input-border-width-offset));padding-block:var(--input-border-width-offset)}.input-field__input[data-v-e4fac465]::placeholder{color:var(--color-text-maxcontrast)}.input-field__input[data-v-e4fac465]:active:not([disabled]),.input-field__input[data-v-e4fac465]:hover:not([disabled]),.input-field__input[data-v-e4fac465]:focus:not([disabled]){border-color:var(--color-main-text);border-width:var(--border-width-input-focused, 2px);box-shadow:0 0 0 2px var(--color-main-background)!important;--input-border-width-offset: 0px}.input-field__input:focus+.input-field__label[data-v-e4fac465],.input-field__input:hover:not(:placeholder-shown)+.input-field__label[data-v-e4fac465]{color:var(--color-main-text)}.input-field__input[data-v-e4fac465]:focus{cursor:text}.input-field__input[data-v-e4fac465]:disabled{cursor:default}.input-field__input[data-v-e4fac465]:focus-visible{box-shadow:unset!important}.input-field__input--success[data-v-e4fac465]{border-color:var(--color-success)!important}.input-field__input--success[data-v-e4fac465]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.input-field__input--error[data-v-e4fac465],.input-field__input[data-v-e4fac465]:invalid{border-color:var(--color-error)!important}.input-field__input--error[data-v-e4fac465]:focus-visible,.input-field__input[data-v-e4fac465]:invalid:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.input-field:not(.input-field--label-outside) .input-field__input[data-v-e4fac465]:not(:focus)::placeholder{opacity:0}.input-field__label[data-v-e4fac465]{--input-label-font-size: var(--default-font-size);position:absolute;margin-inline:var(--input-padding-start) var(--input-padding-end);max-width:fit-content;font-size:var(--input-label-font-size);inset-block-start:calc((var(--default-clickable-area) - 1lh) / 2);inset-inline:var(--border-width-input-focused, 2px);color:var(--color-text-maxcontrast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick),background-color var(--animation-quick) var(--animation-slow)}.input-field__input:focus+.input-field__label[data-v-e4fac465],.input-field__input:not(:placeholder-shown)+.input-field__label[data-v-e4fac465]{--input-label-font-size: 13px;line-height:1.5;inset-block-start:calc(-1.5 * var(--input-label-font-size) / 2);font-weight:500;border-radius:var(--default-grid-baseline) var(--default-grid-baseline) 0 0;background-color:var(--color-main-background);padding-inline:var(--default-grid-baseline);margin-inline:calc(var(--input-padding-start) - var(--default-grid-baseline)) calc(var(--input-padding-end) - var(--default-grid-baseline));transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick)}.input-field__icon[data-v-e4fac465]{position:absolute;height:var(--default-clickable-area);width:var(--default-clickable-area);display:flex;align-items:center;justify-content:center;opacity:.7;inset-block-end:0}.input-field__icon--leading[data-v-e4fac465]{inset-inline-start:0px}.input-field__icon--trailing[data-v-e4fac465]{inset-inline-end:0px}.input-field__trailing-button[data-v-e4fac465]{--button-size: calc(var(--default-clickable-area) - 2 * var(--border-width-input-focused, 2px)) !important;--button-radius: calc(var(--input-border-radius) - var(--border-width-input-focused, 2px))}.input-field__trailing-button.button-vue[data-v-e4fac465]{position:absolute;top:var(--border-width-input-focused, 2px);inset-inline-end:var(--border-width-input-focused, 2px)}.input-field__trailing-button.button-vue[data-v-e4fac465]:focus-visible{box-shadow:none!important}.input-field__helper-text-message[data-v-e4fac465]{padding-block:4px;padding-inline:var(--border-radius-large);display:flex;align-items:center;color:var(--color-text-maxcontrast)}.input-field__helper-text-message__icon[data-v-e4fac465]{margin-inline-end:8px}.input-field__helper-text-message--error[data-v-e4fac465]{color:var(--color-error-text)}.input-field__helper-text-message--success[data-v-e4fac465]{color:var(--color-success-text)}")),document.head.appendChild(i)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})(); -var Jg=Object.defineProperty,qg=Object.defineProperties;var Wg=Object.getOwnPropertyDescriptors;var pd=Object.getOwnPropertySymbols;var Gg=Object.prototype.hasOwnProperty,zg=Object.prototype.propertyIsEnumerable;var gd=r=>{throw TypeError(r)};var Qh=(r,e,t)=>e in r?Jg(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,it=(r,e)=>{for(var t in e||(e={}))Gg.call(e,t)&&Qh(r,t,e[t]);if(pd)for(var t of pd(e))zg.call(e,t)&&Qh(r,t,e[t]);return r},os=(r,e)=>qg(r,Wg(e));var Ke=(r,e,t)=>Qh(r,typeof e!="symbol"?e+"":e,t),Yh=(r,e,t)=>e.has(r)||gd("Cannot "+t);var H=(r,e,t)=>(Yh(r,e,"read from private field"),t?t.call(r):e.get(r)),Et=(r,e,t)=>e.has(r)?gd("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(r):e.set(r,t),Be=(r,e,t,s)=>(Yh(r,e,"write to private field"),s?s.call(r,t):e.set(r,t),t),zs=(r,e,t)=>(Yh(r,e,"access private method"),t);import{p as Ge,g as It,l as Lf,a as Gm,b as Uf,U as _g,o as Xg,c as Zg,d as Bp,v as Pp,n as qh,N as Qg,G as Yg,r as ew,C as tw,t as em,e as sw,f as rw,h as aw,i as tm,j as wd,k as zm,m as nw,q as iw,s as ow,u as uw,w as No}from"./_plugin-vue2_normalizer-CrJFl0zs.chunk.mjs";import{f as Le,B as pe,s as ko,a as Ah,O as $,N as Fe,I as B,S as A,g as f,A as X,b as J,c as T,d as R,e as re,C as I,R as Z,h as Ne,P as _,i as ce,j as Je,G as ke,k as ia,u as go,l as Zl,m as Nh,t as _m,n as Ql,o as lw,p as cw,q as yd,r as vd,E as Yl,U as Xm,v as kh,w as Zm,x as Qm,y as Hc,z as Ts,T as Ym,V as hw,D as Op,F as mw,H as fw,J as dw,K as pw,X as gw,L as ww}from"./ArrowRight-CY2b9hgN-BYrXno-G.chunk.mjs";import{C as yw}from"./Check-BkThHPH7-CnRQr-6z.chunk.mjs";import{u as Dp}from"./useModelMigration-EhAWvqDD-Db3pyjwR.chunk.mjs";import{N as vw}from"./NcCheckboxRadioSwitch-Dm_27r-z-DDJ8c5wz.chunk.mjs";function tr(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function bd(r,e,t){bw(r,e),e.set(r,t)}function bw(r,e){if(e.has(r))throw new TypeError("Cannot initialize the same private elements twice on an object")}function at(r,e){var t=Tp(r,e,"get");return Sw(r,t)}function Sw(r,e){return e.get?e.get.call(r):e.value}function Sd(r,e,t){var s=Tp(r,e,"set");return Aw(r,s,t),t}function Tp(r,e,t){if(!e.has(r))throw new TypeError("attempted to "+t+" private field on non-instance");return e.get(r)}function Aw(r,e,t){if(e.set)e.set.call(r,t);else{if(!e.writable)throw new TypeError("attempted to set read only private field");e.value=t}}var Nw=typeof Symbol<"u"?Symbol.toStringTag:"@@toStringTag",ot=new WeakMap,Po=new WeakMap;class Wh{constructor(e){var{executor:t=()=>{},internals:s=$f(),promise:a=new Promise((n,u)=>t(n,u,i=>{s.onCancelList.push(i)}))}=e;bd(this,ot,{writable:!0,value:void 0}),bd(this,Po,{writable:!0,value:void 0}),tr(this,Nw,"CancelablePromise"),this.cancel=this.cancel.bind(this),Sd(this,ot,s),Sd(this,Po,a||new Promise((n,u)=>t(n,u,i=>{s.onCancelList.push(i)})))}then(e,t){return Mc(at(this,Po).then(hc(e,at(this,ot)),hc(t,at(this,ot))),at(this,ot))}catch(e){return Mc(at(this,Po).catch(hc(e,at(this,ot))),at(this,ot))}finally(e,t){return t&&at(this,ot).onCancelList.push(e),Mc(at(this,Po).finally(hc(()=>{if(e)return t&&(at(this,ot).onCancelList=at(this,ot).onCancelList.filter(s=>s!==e)),e()},at(this,ot))),at(this,ot))}cancel(){at(this,ot).isCanceled=!0;var e=at(this,ot).onCancelList;at(this,ot).onCancelList=[];for(var t of e)if(typeof t=="function")try{t()}catch(s){console.error(s)}}isCanceled(){return at(this,ot).isCanceled===!0}}class sr extends Wh{constructor(e){super({executor:e})}}tr(sr,"all",function(r){return mc(r,Promise.all(r))}),tr(sr,"allSettled",function(r){return mc(r,Promise.allSettled(r))}),tr(sr,"any",function(r){return mc(r,Promise.any(r))}),tr(sr,"race",function(r){return mc(r,Promise.race(r))}),tr(sr,"resolve",function(r){return Ad(Promise.resolve(r))}),tr(sr,"reject",function(r){return Ad(Promise.reject(r))}),tr(sr,"isCancelable",jf);function Ad(r){return Mc(r,$f())}function jf(r){return r instanceof sr||r instanceof Wh}function hc(r,e){if(r)return t=>{if(!e.isCanceled){var s=r(t);return jf(s)&&e.onCancelList.push(s.cancel),s}return t}}function Mc(r,e){return new Wh({internals:e,promise:r})}function mc(r,e){var t=$f();return t.onCancelList.push(()=>{for(var s of r)jf(s)&&s.cancel()}),new Wh({internals:t,promise:e})}function $f(){return{isCanceled:!1,onCancelList:[]}}var sm={},kw={2:r=>{function e(a,n,u){a instanceof RegExp&&(a=t(a,u)),n instanceof RegExp&&(n=t(n,u));var i=s(a,n,u);return i&&{start:i[0],end:i[1],pre:u.slice(0,i[0]),body:u.slice(i[0]+a.length,i[1]),post:u.slice(i[1]+n.length)}}function t(a,n){var u=n.match(a);return u?u[0]:null}function s(a,n,u){var i,l,o,c,m,h=u.indexOf(a),p=u.indexOf(n,h+1),d=h;if(h>=0&&p>0){for(i=[],o=u.length;d>=0&&!m;)d==h?(i.push(d),h=u.indexOf(a,d+1)):i.length==1?m=[i.pop(),p]:((l=i.pop())=0?h:p;i.length&&(m=[o,c])}return m}r.exports=e,e.range=s},101:function(r,e,t){var s;r=t.nmd(r),function(a){var n=(r&&r.exports,typeof It=="object"&&It);n.global!==n&&n.window;var u=function(m){this.message=m};(u.prototype=new Error).name="InvalidCharacterError";var i=function(m){throw new u(m)},l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=/[\t\n\f\r ]/g,c={encode:function(m){m=String(m),/[^\0-\xFF]/.test(m)&&i("The string to be encoded contains characters outside of the Latin1 range.");for(var h,p,d,w,y=m.length%3,k="",g=-1,b=m.length-y;++g>18&63)+l.charAt(w>>12&63)+l.charAt(w>>6&63)+l.charAt(63&w);return y==2?(h=m.charCodeAt(g)<<8,p=m.charCodeAt(++g),k+=l.charAt((w=h+p)>>10)+l.charAt(w>>4&63)+l.charAt(w<<2&63)+"="):y==1&&(w=m.charCodeAt(g),k+=l.charAt(w>>2)+l.charAt(w<<4&63)+"=="),k},decode:function(m){var h=(m=String(m).replace(o,"")).length;h%4==0&&(h=(m=m.replace(/==?$/,"")).length),(h%4==1||/[^+a-zA-Z0-9/]/.test(m))&&i("Invalid character: the string to be decoded is not correctly encoded.");for(var p,d,w=0,y="",k=-1;++k>(-2*w&6)));return y},version:"1.0.0"};(s=function(){return c}.call(e,t,e,r))===void 0||(r.exports=s)}()},172:(r,e)=>{e.d=function(t){if(!t)return 0;for(var s=(t=t.toString()).length,a=t.length;a--;){var n=t.charCodeAt(a);56320<=n&&n<=57343&&a--,127{var e={utf8:{stringToBytes:function(t){return e.bin.stringToBytes(unescape(encodeURIComponent(t)))},bytesToString:function(t){return decodeURIComponent(escape(e.bin.bytesToString(t)))}},bin:{stringToBytes:function(t){for(var s=[],a=0;a{var e,t;e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t={rotl:function(s,a){return s<>>32-a},rotr:function(s,a){return s<<32-a|s>>>a},endian:function(s){if(s.constructor==Number)return 16711935&t.rotl(s,8)|4278255360&t.rotl(s,24);for(var a=0;a0;s--)a.push(Math.floor(256*Math.random()));return a},bytesToWords:function(s){for(var a=[],n=0,u=0;n>>5]|=s[n]<<24-u%32;return a},wordsToBytes:function(s){for(var a=[],n=0;n<32*s.length;n+=8)a.push(s[n>>>5]>>>24-n%32&255);return a},bytesToHex:function(s){for(var a=[],n=0;n>>4).toString(16)),a.push((15&s[n]).toString(16));return a.join("")},hexToBytes:function(s){for(var a=[],n=0;n>>6*(3-i)&63)):a.push("=");return a.join("")},base64ToBytes:function(s){s=s.replace(/[^A-Z0-9+\/]/gi,"");for(var a=[],n=0,u=0;n>>6-2*u);return a}},r.exports=t},635:(r,e,t)=>{const s=t(31),a=t(338),n=t(221);r.exports={XMLParser:a,XMLValidator:s,XMLBuilder:n}},705:(r,e)=>{const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",s="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",a=new RegExp("^"+s+"$");e.isExist=function(n){return n!==void 0},e.isEmptyObject=function(n){return Object.keys(n).length===0},e.merge=function(n,u,i){if(u){const l=Object.keys(u),o=l.length;for(let c=0;c{const s=t(705),a={allowBooleanAttributes:!1,unpairedTags:[]};function n(g){return g===" "||g===" "||g==="\n"||g==="\r"}function u(g,b){const N=b;for(;b5&&S==="xml")return d("InvalidXml","XML declaration allowed only at the start of the document.",y(g,b));if(g[b]=="?"&&g[b+1]==">"){b++;break}}return b}function i(g,b){if(g.length>b+5&&g[b+1]==="-"&&g[b+2]==="-"){for(b+=3;b"){b+=2;break}}else if(g.length>b+8&&g[b+1]==="D"&&g[b+2]==="O"&&g[b+3]==="C"&&g[b+4]==="T"&&g[b+5]==="Y"&&g[b+6]==="P"&&g[b+7]==="E"){let N=1;for(b+=8;b"&&(N--,N===0))break}else if(g.length>b+9&&g[b+1]==="["&&g[b+2]==="C"&&g[b+3]==="D"&&g[b+4]==="A"&&g[b+5]==="T"&&g[b+6]==="A"&&g[b+7]==="["){for(b+=8;b"){b+=2;break}}return b}e.validate=function(g,b){b=Object.assign({},a,b);const N=[];let S=!1,E=!1;g[0]==="\uFEFF"&&(g=g.substr(1));for(let C=0;C"&&g[C]!==" "&&g[C]!==" "&&g[C]!=="\n"&&g[C]!=="\r";C++)L+=g[C];if(L=L.trim(),L[L.length-1]==="/"&&(L=L.substring(0,L.length-1),C--),x=L,!s.isName(x)){let M;return M=L.trim().length===0?"Invalid space after '<'.":"Tag '"+L+"' is an invalid name.",d("InvalidTag",M,y(g,C))}const j=c(g,C);if(j===!1)return d("InvalidAttr","Attributes for '"+L+"' have open quote.",y(g,C));let U=j.value;if(C=j.index,U[U.length-1]==="/"){const M=C-U.length;U=U.substring(0,U.length-1);const G=h(U,b);if(G!==!0)return d(G.err.code,G.err.msg,y(g,M+G.err.line));S=!0}else if(K){if(!j.tagClosed)return d("InvalidTag","Closing tag '"+L+"' doesn't have proper closing.",y(g,C));if(U.trim().length>0)return d("InvalidTag","Closing tag '"+L+"' can't have attributes or invalid starting.",y(g,P));if(N.length===0)return d("InvalidTag","Closing tag '"+L+"' has not been opened.",y(g,P));{const M=N.pop();if(L!==M.tagName){let G=y(g,M.tagStartPos);return d("InvalidTag","Expected closing tag '"+M.tagName+"' (opened in line "+G.line+", col "+G.col+") instead of closing tag '"+L+"'.",y(g,P))}N.length==0&&(E=!0)}}else{const M=h(U,b);if(M!==!0)return d(M.err.code,M.err.msg,y(g,C-U.length+M.err.line));if(E===!0)return d("InvalidXml","Multiple possible root nodes found.",y(g,C));b.unpairedTags.indexOf(L)!==-1||N.push({tagName:L,tagStartPos:P}),S=!0}for(C++;C0)||d("InvalidXml","Invalid '"+JSON.stringify(N.map(C=>C.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):d("InvalidXml","Start tag expected.",1)};const l='"',o="'";function c(g,b){let N="",S="",E=!1;for(;b"&&S===""){E=!0;break}N+=g[b]}return S===""&&{value:N,index:b,tagClosed:E}}const m=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function h(g,b){const N=s.getAllMatches(g,m),S={};for(let E=0;E{const s=t(87),a={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(o,c){return c},attributeValueProcessor:function(o,c){return c},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function n(o){this.options=Object.assign({},a,o),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=l),this.processTextOrObjNode=u,this.options.format?(this.indentate=i,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function u(o,c,m){const h=this.j2x(o,m+1);return o[this.options.textNodeName]!==void 0&&Object.keys(o).length===1?this.buildTextValNode(o[this.options.textNodeName],c,h.attrStr,m):this.buildObjectNode(h.val,c,h.attrStr,m)}function i(o){return this.options.indentBy.repeat(o)}function l(o){return!(!o.startsWith(this.options.attributeNamePrefix)||o===this.options.textNodeName)&&o.substr(this.attrPrefixLen)}n.prototype.build=function(o){return this.options.preserveOrder?s(o,this.options):(Array.isArray(o)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(o={[this.options.arrayNodeName]:o}),this.j2x(o,0).val)},n.prototype.j2x=function(o,c){let m="",h="";for(let p in o)if(Object.prototype.hasOwnProperty.call(o,p))if(o[p]===void 0)this.isAttribute(p)&&(h+="");else if(o[p]===null)this.isAttribute(p)?h+="":p[0]==="?"?h+=this.indentate(c)+"<"+p+"?"+this.tagEndChar:h+=this.indentate(c)+"<"+p+"/"+this.tagEndChar;else if(o[p]instanceof Date)h+=this.buildTextValNode(o[p],p,"",c);else if(typeof o[p]!="object"){const d=this.isAttribute(p);if(d)m+=this.buildAttrPairStr(d,""+o[p]);else if(p===this.options.textNodeName){let w=this.options.tagValueProcessor(p,""+o[p]);h+=this.replaceEntitiesValue(w)}else h+=this.buildTextValNode(o[p],p,"",c)}else if(Array.isArray(o[p])){const d=o[p].length;let w="",y="";for(let k=0;k")+this.newLine:this.indentate(h)+"<"+c+m+d+this.tagEndChar+o+this.indentate(h)+p:this.indentate(h)+"<"+c+m+d+">"+o+p}},n.prototype.closeTag=function(o){let c="";return this.options.unpairedTags.indexOf(o)!==-1?this.options.suppressUnpairedNode||(c="/"):c=this.options.suppressEmptyNode?"/":">")+this.newLine;if(this.options.commentPropName!==!1&&c===this.options.commentPropName)return this.indentate(h)+"")+this.newLine;if(c[0]==="?")return this.indentate(h)+"<"+c+m+"?"+this.tagEndChar;{let p=this.options.tagValueProcessor(c,o);return p=this.replaceEntitiesValue(p),p===""?this.indentate(h)+"<"+c+m+this.closeTag(c)+this.tagEndChar:this.indentate(h)+"<"+c+m+">"+p+"0&&this.options.processEntities)for(let c=0;c{function e(u,i,l,o){let c="",m=!1;for(let h=0;h"),m=!1;continue}if(d===i.commentPropName){c+=o+""),m=!0;continue}if(d[0]==="?"){const b=s(p[":@"],i),N=d==="?xml"?"":o;let S=p[d][0][i.textNodeName];S=S.length!==0?" "+S:"",c+=N+"<".concat(d).concat(S).concat(b,"?>"),m=!0;continue}let y=o;y!==""&&(y+=i.indentBy);const k=o+"<".concat(d).concat(s(p[":@"],i)),g=e(p[d],i,w,y);i.unpairedTags.indexOf(d)!==-1?i.suppressUnpairedNode?c+=k+">":c+=k+"/>":g&&g.length!==0||!i.suppressEmptyNode?g&&g.endsWith(">")?c+=k+">".concat(g).concat(o,""):(c+=k+">",g&&o!==""&&(g.includes("/>")||g.includes("")):c+=k+"/>",m=!0}return c}function t(u){const i=Object.keys(u);for(let l=0;l0&&i.processEntities)for(let l=0;l0&&(l="\n"),e(u,i,"",l)}},193:(r,e,t)=>{const s=t(705);function a(m,h){let p="";for(;h"){if(y?m[h-1]==="-"&&m[h-2]==="-"&&(y=!1,d--):d--,d===0)break}else m[h]==="["?w=!0:k+=m[h];else{if(w&&u(m,h))h+=7,[entityName,val,h]=a(m,h+1),val.indexOf("&")===-1&&(p[c(entityName)]={regx:RegExp("&".concat(entityName,";"),"g"),val});else if(w&&i(m,h))h+=8;else if(w&&l(m,h))h+=8;else if(w&&o(m,h))h+=9;else{if(!n)throw new Error("Invalid DOCTYPE");y=!0}d++,k=""}if(d!==0)throw new Error("Unclosed DOCTYPE")}return{entities:p,i:h}}},63:(r,e)=>{const t={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(s,a){return a},attributeValueProcessor:function(s,a){return a},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(s,a,n){return s}};e.buildOptions=function(s){return Object.assign({},t,s)},e.defaultOptions=t},299:(r,e,t)=>{const s=t(705),a=t(365),n=t(193),u=t(494);function i(S){const E=Object.keys(S);for(let x=0;x0)){L||(S=this.replaceEntitiesValue(S));const j=this.options.tagValueProcessor(E,S,x,P,K);return j==null?S:typeof j!=typeof S||j!==S?j:this.options.trimValues||S.trim()===S?N(S,this.options.parseTagValue,this.options.numberParseOptions):S}}function o(S){if(this.options.removeNSPrefix){const E=S.split(":"),x=S.charAt(0)==="/"?"/":"";if(E[0]==="xmlns")return"";E.length===2&&(S=x+E[1])}return S}const c=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function m(S,E,x){if(!this.options.ignoreAttributes&&typeof S=="string"){const C=s.getAllMatches(S,c),P=C.length,K={};for(let L=0;L",K,"Closing Tag is not closed.");let j=S.substring(K+2,L).trim();if(this.options.removeNSPrefix){const G=j.indexOf(":");G!==-1&&(j=j.substr(G+1))}this.options.transformTagName&&(j=this.options.transformTagName(j)),x&&(C=this.saveTextToParentTag(C,x,P));const U=P.substring(P.lastIndexOf(".")+1);if(j&&this.options.unpairedTags.indexOf(j)!==-1)throw new Error("Unpaired tag can not be used as closing tag: "));let M=0;U&&this.options.unpairedTags.indexOf(U)!==-1?(M=P.lastIndexOf(".",P.lastIndexOf(".")-1),this.tagsNodeStack.pop()):M=P.lastIndexOf("."),P=P.substring(0,M),x=this.tagsNodeStack.pop(),C="",K=L}else if(S[K+1]==="?"){let L=g(S,K,!1,"?>");if(!L)throw new Error("Pi Tag is not closed.");if(C=this.saveTextToParentTag(C,x,P),!(this.options.ignoreDeclaration&&L.tagName==="?xml"||this.options.ignorePiTags)){const j=new a(L.tagName);j.add(this.options.textNodeName,""),L.tagName!==L.tagExp&&L.attrExpPresent&&(j[":@"]=this.buildAttributesMap(L.tagExp,P,L.tagName)),this.addChild(x,j,P)}K=L.closeIndex+1}else if(S.substr(K+1,3)==="!--"){const L=k(S,"-->",K+4,"Comment is not closed.");if(this.options.commentPropName){const j=S.substring(K+4,L-2);C=this.saveTextToParentTag(C,x,P),x.add(this.options.commentPropName,[{[this.options.textNodeName]:j}])}K=L}else if(S.substr(K+1,2)==="!D"){const L=n(S,K);this.docTypeEntities=L.entities,K=L.i}else if(S.substr(K+1,2)==="!["){const L=k(S,"]]>",K,"CDATA is not closed.")-2,j=S.substring(K+9,L);C=this.saveTextToParentTag(C,x,P);let U=this.parseTextData(j,x.tagname,P,!0,!1,!0,!0);U==null&&(U=""),this.options.cdataPropName?x.add(this.options.cdataPropName,[{[this.options.textNodeName]:j}]):x.add(this.options.textNodeName,U),K=L+2}else{let L=g(S,K,this.options.removeNSPrefix),j=L.tagName;const U=L.rawTagName;let M=L.tagExp,G=L.attrExpPresent,we=L.closeIndex;this.options.transformTagName&&(j=this.options.transformTagName(j)),x&&C&&x.tagname!=="!xml"&&(C=this.saveTextToParentTag(C,x,P,!1));const ae=x;if(ae&&this.options.unpairedTags.indexOf(ae.tagname)!==-1&&(x=this.tagsNodeStack.pop(),P=P.substring(0,P.lastIndexOf("."))),j!==E.tagname&&(P+=P?"."+j:j),this.isItStopNode(this.options.stopNodes,P,j)){let Y="";if(M.length>0&&M.lastIndexOf("/")===M.length-1)j[j.length-1]==="/"?(j=j.substr(0,j.length-1),P=P.substr(0,P.length-1),M=j):M=M.substr(0,M.length-1),K=L.closeIndex;else if(this.options.unpairedTags.indexOf(j)!==-1)K=L.closeIndex;else{const F=this.readStopNodeData(S,U,we+1);if(!F)throw new Error("Unexpected end of ".concat(U));K=F.i,Y=F.tagContent}const se=new a(j);j!==M&&G&&(se[":@"]=this.buildAttributesMap(M,P,j)),Y&&(Y=this.parseTextData(Y,j,P,!0,G,!0,!0)),P=P.substr(0,P.lastIndexOf(".")),se.add(this.options.textNodeName,Y),this.addChild(x,se,P)}else{if(M.length>0&&M.lastIndexOf("/")===M.length-1){j[j.length-1]==="/"?(j=j.substr(0,j.length-1),P=P.substr(0,P.length-1),M=j):M=M.substr(0,M.length-1),this.options.transformTagName&&(j=this.options.transformTagName(j));const Y=new a(j);j!==M&&G&&(Y[":@"]=this.buildAttributesMap(M,P,j)),this.addChild(x,Y,P),P=P.substr(0,P.lastIndexOf("."))}else{const Y=new a(j);this.tagsNodeStack.push(x),j!==M&&G&&(Y[":@"]=this.buildAttributesMap(M,P,j)),this.addChild(x,Y,P),x=Y}C="",K=we}}else C+=S[K];return E.child};function p(S,E,x){const C=this.options.updateTag(E.tagname,x,E[":@"]);C===!1||(typeof C=="string"&&(E.tagname=C),S.addChild(E))}const d=function(S){if(this.options.processEntities){for(let E in this.docTypeEntities){const x=this.docTypeEntities[E];S=S.replace(x.regx,x.val)}for(let E in this.lastEntities){const x=this.lastEntities[E];S=S.replace(x.regex,x.val)}if(this.options.htmlEntities)for(let E in this.htmlEntities){const x=this.htmlEntities[E];S=S.replace(x.regex,x.val)}S=S.replace(this.ampEntity.regex,this.ampEntity.val)}return S};function w(S,E,x,C){return S&&(C===void 0&&(C=Object.keys(E.child).length===0),(S=this.parseTextData(S,E.tagname,x,!1,!!E[":@"]&&Object.keys(E[":@"]).length!==0,C))!==void 0&&S!==""&&E.add(this.options.textNodeName,S),S=""),S}function y(S,E,x){const C="*."+x;for(const P in S){const K=S[P];if(C===K||E===K)return!0}return!1}function k(S,E,x,C){const P=S.indexOf(E,x);if(P===-1)throw new Error(C);return P+E.length-1}function g(S,E,x){const C=function(G,we){let ae,Y=arguments.length>2&&arguments[2]!==void 0?arguments[2]:">",se="";for(let F=we;F3&&arguments[3]!==void 0?arguments[3]:">");if(!C)return;let P=C.data;const K=C.index,L=P.search(/\s/);let j=P,U=!0;L!==-1&&(j=P.substring(0,L),P=P.substring(L+1).trimStart());const M=j;if(x){const G=j.indexOf(":");G!==-1&&(j=j.substr(G+1),U=j!==C.data.substr(G+1))}return{tagName:j,tagExp:P,closeIndex:K,attrExpPresent:U,rawTagName:M}}function b(S,E,x){const C=x;let P=1;for(;x",x,"".concat(E," is not closed"));if(S.substring(x+2,K).trim()===E&&(P--,P===0))return{tagContent:S.substring(C,x),i:K};x=K}else if(S[x+1]==="?")x=k(S,"?>",x+1,"StopNode is not closed.");else if(S.substr(x+1,3)==="!--")x=k(S,"-->",x+3,"StopNode is not closed.");else if(S.substr(x+1,2)==="![")x=k(S,"]]>",x,"StopNode is not closed.")-2;else{const K=g(S,x,">");K&&((K&&K.tagName)===E&&K.tagExp[K.tagExp.length-1]!=="/"&&P++,x=K.closeIndex)}}function N(S,E,x){if(E&&typeof S=="string"){const C=S.trim();return C==="true"||C!=="false"&&u(S,x)}return s.isExist(S)?S:""}r.exports=class{constructor(S){this.options=S,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(E,x)=>String.fromCharCode(Number.parseInt(x,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(E,x)=>String.fromCharCode(Number.parseInt(x,16))}},this.addExternalEntities=i,this.parseXml=h,this.parseTextData=l,this.resolveNameSpace=o,this.buildAttributesMap=m,this.isItStopNode=y,this.replaceEntitiesValue=d,this.readStopNodeData=b,this.saveTextToParentTag=w,this.addChild=p}}},338:(r,e,t)=>{const{buildOptions:s}=t(63),a=t(299),{prettify:n}=t(728),u=t(31);r.exports=class{constructor(i){this.externalEntities={},this.options=s(i)}parse(i,l){if(typeof i!="string"){if(!i.toString)throw new Error("XML data is accepted in String or Bytes[] form.");i=i.toString()}if(l){l===!0&&(l={});const m=u.validate(i,l);if(m!==!0)throw Error("".concat(m.err.msg,":").concat(m.err.line,":").concat(m.err.col))}const o=new a(this.options);o.addExternalEntities(this.externalEntities);const c=o.parseXml(i);return this.options.preserveOrder||c===void 0?c:n(c,this.options)}addEntity(i,l){if(l.indexOf("&")!==-1)throw new Error("Entity value can't have '&'");if(i.indexOf("&")!==-1||i.indexOf(";")!==-1)throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if(l==="&")throw new Error("An entity with value '&' is not permitted");this.externalEntities[i]=l}}},728:(r,e)=>{function t(u,i,l){let o;const c={};for(let m=0;m0&&(c[i.textNodeName]=o):o!==void 0&&(c[i.textNodeName]=o),c}function s(u){const i=Object.keys(u);for(let l=0;l{r.exports=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){e==="__proto__"&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){e.tagname==="__proto__"&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}},135:r=>{function e(t){return!!t.constructor&&typeof t.constructor.isBuffer=="function"&&t.constructor.isBuffer(t)}r.exports=function(t){return t!=null&&(e(t)||function(s){return typeof s.readFloatLE=="function"&&typeof s.slice=="function"&&e(s.slice(0,0))}(t)||!!t._isBuffer)}},542:(r,e,t)=>{(function(){var s=t(298),a=t(526).utf8,n=t(135),u=t(526).bin,i=function(l,o){l.constructor==String?l=o&&o.encoding==="binary"?u.stringToBytes(l):a.stringToBytes(l):n(l)?l=Array.prototype.slice.call(l,0):Array.isArray(l)||l.constructor===Uint8Array||(l=l.toString());for(var c=s.bytesToWords(l),m=8*l.length,h=1732584193,p=-271733879,d=-1732584194,w=271733878,y=0;y>>24)|4278255360&(c[y]<<24|c[y]>>>8);c[m>>>5]|=128<>>9<<4)]=m;var k=i._ff,g=i._gg,b=i._hh,N=i._ii;for(y=0;y>>0,p=p+E>>>0,d=d+x>>>0,w=w+C>>>0}return s.endian([h,p,d,w])};i._ff=function(l,o,c,m,h,p,d){var w=l+(o&c|~o&m)+(h>>>0)+d;return(w<>>32-p)+o},i._gg=function(l,o,c,m,h,p,d){var w=l+(o&m|c&~m)+(h>>>0)+d;return(w<>>32-p)+o},i._hh=function(l,o,c,m,h,p,d){var w=l+(o^c^m)+(h>>>0)+d;return(w<>>32-p)+o},i._ii=function(l,o,c,m,h,p,d){var w=l+(c^(o|~m))+(h>>>0)+d;return(w<>>32-p)+o},i._blocksize=16,i._digestsize=16,r.exports=function(l,o){if(l==null)throw new Error("Illegal argument "+l);var c=s.wordsToBytes(i(l,o));return o&&o.asBytes?c:o&&o.asString?u.bytesToString(c):s.bytesToHex(c)}})()},285:(r,e,t)=>{var s=t(2);r.exports=function(k){return k?(k.substr(0,2)==="{}"&&(k="\\{\\}"+k.substr(2)),y(function(g){return g.split("\\\\").join(a).split("\\{").join(n).split("\\}").join(u).split("\\,").join(i).split("\\.").join(l)}(k),!0).map(c)):[]};var a="\0SLASH"+Math.random()+"\0",n="\0OPEN"+Math.random()+"\0",u="\0CLOSE"+Math.random()+"\0",i="\0COMMA"+Math.random()+"\0",l="\0PERIOD"+Math.random()+"\0";function o(k){return parseInt(k,10)==k?parseInt(k,10):k.charCodeAt(0)}function c(k){return k.split(a).join("\\").split(n).join("{").split(u).join("}").split(i).join(",").split(l).join(".")}function m(k){if(!k)return[""];var g=[],b=s("{","}",k);if(!b)return k.split(",");var N=b.pre,S=b.body,E=b.post,x=N.split(",");x[x.length-1]+="{"+S+"}";var C=m(E);return E.length&&(x[x.length-1]+=C.shift(),x.push.apply(x,C)),g.push.apply(g,x),g}function h(k){return"{"+k+"}"}function p(k){return/^-?0\d/.test(k)}function d(k,g){return k<=g}function w(k,g){return k>=g}function y(k,g){var b=[],N=s("{","}",k);if(!N)return[k];var S=N.pre,E=N.post.length?y(N.post,!1):[""];if(/\$$/.test(N.pre))for(var x=0;x=0;if(!U&&!M)return N.post.match(/,.*\}/)?y(k=N.pre+"{"+N.body+u+N.post):[k];if(U)P=N.body.split(/\.\./);else if((P=m(N.body)).length===1&&(P=y(P[0],!1).map(h)).length===1)return E.map(function(_t){return N.pre+P[0]+_t});if(U){var G=o(P[0]),we=o(P[1]),ae=Math.max(P[0].length,P[1].length),Y=P.length==3?Math.abs(o(P[2])):1,se=d;we0){var ie=new Array(ee+1).join("0");q=W<0?"-"+ie+q.slice(1):ie+q}}K.push(q)}}else{K=[];for(var xe=0;xe{function e(o){return e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(c){return typeof c}:function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},e(o)}function t(o){var c=typeof Map=="function"?new Map:void 0;return t=function(m){if(m===null||(h=m,Function.toString.call(h).indexOf("[native code]")===-1))return m;var h;if(typeof m!="function")throw new TypeError("Super expression must either be null or a function");if(c!==void 0){if(c.has(m))return c.get(m);c.set(m,p)}function p(){return s(m,arguments,n(this).constructor)}return p.prototype=Object.create(m.prototype,{constructor:{value:p,enumerable:!1,writable:!0,configurable:!0}}),a(p,m)},t(o)}function s(o,c,m){return s=function(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(h){return!1}}()?Reflect.construct:function(h,p,d){var w=[null];w.push.apply(w,p);var y=new(Function.bind.apply(h,w));return d&&a(y,d.prototype),y},s.apply(null,arguments)}function a(o,c){return a=Object.setPrototypeOf||function(m,h){return m.__proto__=h,m},a(o,c)}function n(o){return n=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},n(o)}var u=function(o){function c(m){var h;return function(p,d){if(!(p instanceof d))throw new TypeError("Cannot call a class as a function")}(this,c),(h=function(p,d){return!d||e(d)!=="object"&&typeof d!="function"?function(w){if(w===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return w}(p):d}(this,n(c).call(this,m))).name="ObjectPrototypeMutationError",h}return function(m,h){if(typeof h!="function"&&h!==null)throw new TypeError("Super expression must either be null or a function");m.prototype=Object.create(h&&h.prototype,{constructor:{value:m,writable:!0,configurable:!0}}),h&&a(m,h)}(c,o),c}(t(Error));function i(o,c){for(var m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},h=c.split("."),p=h.length,d=function(k){var g=h[k];if(!o)return{v:void 0};if(g==="+"){if(Array.isArray(o))return{v:o.map(function(N,S){var E=h.slice(k+1);return E.length>0?i(N,E.join("."),m):m(o,S,h,k)})};var b=h.slice(0,k).join(".");throw new Error("Object at wildcard (".concat(b,") is not an array"))}o=m(o,g,h,k)},w=0;w2&&arguments[2]!==void 0?arguments[2]:{};if(e(o)!="object"||o===null||c===void 0)return!1;if(typeof c=="number")return c in o;try{var h=!1;return i(o,c,function(p,d,w,y){if(!l(w,y))return p&&p[d];h=m.own?p.hasOwnProperty(d):d in p}),h}catch(p){return!1}},hasOwn:function(o,c,m){return this.has(o,c,m||{own:!0})},isIn:function(o,c,m){var h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};if(e(o)!="object"||o===null||c===void 0)return!1;try{var p=!1,d=!1;return i(o,c,function(w,y,k,g){return p=p||w===m||!!w&&w[y]===m,d=l(k,g)&&e(w)==="object"&&y in w,w&&w[y]}),h.validPath?p&&d:p}catch(w){return!1}},ObjectPrototypeMutationError:u}},47:(r,e,t)=>{var s=t(410),a=function(o){return typeof o=="string"};function n(o,c){for(var m=[],h=0;h=-1&&!c;m--){var h=m>=0?arguments[m]:Ge.cwd();if(!a(h))throw new TypeError("Arguments to path.resolve must be strings");h&&(o=h+"/"+o,c=h.charAt(0)==="/")}return(c?"/":"")+(o=n(o.split("/"),!c).join("/"))||"."},i.normalize=function(o){var c=i.isAbsolute(o),m=o.substr(-1)==="/";return(o=n(o.split("/"),!c).join("/"))||c||(o="."),o&&m&&(o+="/"),(c?"/":"")+o},i.isAbsolute=function(o){return o.charAt(0)==="/"},i.join=function(){for(var o="",c=0;c=0&&g[N]==="";N--);return b>N?[]:g.slice(b,N+1)}o=i.resolve(o).substr(1),c=i.resolve(c).substr(1);for(var h=m(o.split("/")),p=m(c.split("/")),d=Math.min(h.length,p.length),w=d,y=0;y{var t=Object.prototype.hasOwnProperty;function s(n){try{return decodeURIComponent(n.replace(/\+/g," "))}catch(u){return null}}function a(n){try{return encodeURIComponent(n)}catch(u){return null}}e.stringify=function(n,u){u=u||"";var i,l,o=[];for(l in typeof u!="string"&&(u="?"),n)if(t.call(n,l)){if((i=n[l])||i!=null&&!isNaN(i)||(i=""),l=a(l),i=a(i),l===null||i===null)continue;o.push(l+"="+i)}return o.length?u+o.join("&"):""},e.parse=function(n){for(var u,i=/([^=?#&]+)=?([^&]*)/g,l={};u=i.exec(n);){var o=s(u[1]),c=s(u[2]);o===null||c===null||o in l||(l[o]=c)}return l}},670:r=>{r.exports=function(e,t){if(t=t.split(":")[0],!(e=+e))return!1;switch(t){case"http":case"ws":return e!==80;case"https":case"wss":return e!==443;case"ftp":return e!==21;case"gopher":return e!==70;case"file":return!1}return e!==0}},494:r=>{const e=/^[-+]?0x[a-fA-F0-9]+$/,t=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const s={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};r.exports=function(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(n=Object.assign({},s,n),!a||typeof a!="string")return a;let u=a.trim();if(n.skipLike!==void 0&&n.skipLike.test(u))return a;if(n.hex&&e.test(u))return Number.parseInt(u,16);{const l=t.exec(u);if(l){const o=l[1],c=l[2];let m=((i=l[3])&&i.indexOf(".")!==-1&&((i=i.replace(/0+$/,""))==="."?i="0":i[0]==="."?i="0"+i:i[i.length-1]==="."&&(i=i.substr(0,i.length-1))),i);const h=l[4]||l[6];if(!n.leadingZeros&&c.length>0&&o&&u[2]!=="."||!n.leadingZeros&&c.length>0&&!o&&u[1]!==".")return a;{const p=Number(u),d=""+p;return d.search(/[eE]/)!==-1||h?n.eNotation?p:a:u.indexOf(".")!==-1?d==="0"&&m===""||d===m||o&&d==="-"+m?p:a:c?m===d||o+m===d?p:a:u===d||u===o+d?p:a}}return a}var i}},737:(r,e,t)=>{var s=t(670),a=t(647),n=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,u=/[\n\r\t]/g,i=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,l=/:\d+$/,o=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,c=/^[a-zA-Z]:/;function m(g){return(g||"").toString().replace(n,"")}var h=[["#","hash"],["?","query"],function(g,b){return w(b.protocol)?g.replace(/\\/g,"/"):g},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],p={hash:1,query:1};function d(g){var b,N=(typeof window<"u"?window:typeof It<"u"?It:typeof self<"u"?self:{}).location||{},S={},E=typeof(g=g||N);if(g.protocol==="blob:")S=new k(unescape(g.pathname),{});else if(E==="string")for(b in S=new k(g,{}),p)delete S[b];else if(E==="object"){for(b in g)b in p||(S[b]=g[b]);S.slashes===void 0&&(S.slashes=i.test(g.href))}return S}function w(g){return g==="file:"||g==="ftp:"||g==="http:"||g==="https:"||g==="ws:"||g==="wss:"}function y(g,b){g=(g=m(g)).replace(u,""),b=b||{};var N,S=o.exec(g),E=S[1]?S[1].toLowerCase():"",x=!!S[2],C=!!S[3],P=0;return x?C?(N=S[2]+S[3]+S[4],P=S[2].length+S[3].length):(N=S[2]+S[4],P=S[2].length):C?(N=S[3]+S[4],P=S[3].length):N=S[4],E==="file:"?P>=2&&(N=N.slice(2)):w(E)?N=S[4]:E?x&&(N=N.slice(2)):P>=2&&w(b.protocol)&&(N=S[4]),{protocol:E,slashes:x||w(E),slashesCount:P,rest:N}}function k(g,b,N){if(g=(g=m(g)).replace(u,""),!(this instanceof k))return new k(g,b,N);var S,E,x,C,P,K,L=h.slice(),j=typeof b,U=this,M=0;for(j!=="object"&&j!=="string"&&(N=b,b=null),N&&typeof N!="function"&&(N=a.parse),S=!(E=y(g||"",b=d(b))).protocol&&!E.slashes,U.slashes=E.slashes||S&&b.slashes,U.protocol=E.protocol||b.protocol||"",g=E.rest,(E.protocol==="file:"&&(E.slashesCount!==2||c.test(g))||!E.slashes&&(E.protocol||E.slashesCount<2||!w(U.protocol)))&&(L[3]=[/(.*)/,"pathname"]);M{},388:()=>{},805:()=>{},345:()=>{},800:()=>{}},Nd={};function de(r){var e=Nd[r];if(e!==void 0)return e.exports;var t=Nd[r]={id:r,loaded:!1,exports:{}};return kw[r].call(t.exports,t,t.exports,de),t.loaded=!0,t.exports}de.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return de.d(e,{a:e}),e},de.d=(r,e)=>{for(var t in e)de.o(e,t)&&!de.o(r,t)&&Object.defineProperty(r,t,{enumerable:!0,get:e[t]})},de.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),de.nmd=r=>(r.paths=[],r.children||(r.children=[]),r);var zt={};de.d(zt,{hT:()=>bt,O4:()=>Js,Kd:()=>Dw,YK:()=>Tw,UU:()=>Ky,Gu:()=>jp,ky:()=>_p,h4:()=>lc,ch:()=>Gh,hq:()=>Tn,i5:()=>Xp});var Cw=de(737),Ew=de.n(Cw);function rm(r){if(!ef(r))throw new Error("Parameter was not an error")}function ef(r){return!!r&&typeof r=="object"&&(e=r,Object.prototype.toString.call(e)==="[object Error]")||r instanceof Error;var e}class Nt extends Error{constructor(e,t){const s=[...arguments],{options:a,shortMessage:n}=function(i){let l,o="";if(i.length===0)l={};else if(ef(i[0]))l={cause:i[0]},o=i.slice(1).join(" ")||"";else if(i[0]&&typeof i[0]=="object")l=Object.assign({},i[0]),o=i.slice(1).join(" ")||"";else{if(typeof i[0]!="string")throw new Error("Invalid arguments passed to Layerr");l={},o=o=i.join(" ")||""}return{options:l,shortMessage:o}}(s);let u=n;if(a.cause&&(u="".concat(u,": ").concat(a.cause.message)),super(u),this.message=u,a.name&&typeof a.name=="string"?this.name=a.name:this.name="Layerr",a.cause&&Object.defineProperty(this,"_cause",{value:a.cause}),Object.defineProperty(this,"_info",{value:{}}),a.info&&typeof a.info=="object"&&Object.assign(this._info,a.info),Error.captureStackTrace){const i=a.constructorOpt||this.constructor;Error.captureStackTrace(this,i)}}static cause(e){return rm(e),e._cause&&ef(e._cause)?e._cause:null}static fullStack(e){var s;rm(e);const t=Nt.cause(e);return t?"".concat(e.stack,"\ncaused by: ").concat(Nt.fullStack(t)):(s=e.stack)!=null?s:""}static info(e){rm(e);const t={},s=Nt.cause(e);return s&&Object.assign(t,Nt.info(s)),e._info&&Object.assign(t,e._info),t}toString(){let e=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(e="".concat(e,": ").concat(this.message)),e}}var xw=de(47),Ch=de.n(xw);const kd="__PATH_SEPARATOR_POSIX__",Cd="__PATH_SEPARATOR_WINDOWS__";function Ce(r){try{const e=r.replace(/\//g,kd).replace(/\\\\/g,Cd);return encodeURIComponent(e).split(Cd).join("\\\\").split(kd).join("/")}catch(e){throw new Nt(e,"Failed encoding path")}}function Ed(r){return r.startsWith("/")?r:"/"+r}function ec(r){let e=r;return e[0]!=="/"&&(e="/"+e),/^.+\/$/.test(e)&&(e=e.substr(0,e.length-1)),e}function Iw(r){let e=new(Ew())(r).pathname;return e.length<=0&&(e="/"),ec(e)}function Ee(){for(var r=arguments.length,e=new Array(r),t=0;t1){var n=s.shift();s[0]=n+s[0]}s[0].match(/^file:\/\/\//)?s[0]=s[0].replace(/^([^/:]+):\/*/,"$1:///"):s[0]=s[0].replace(/^([^/:]+):\/*/,"$1://");for(var u=0;u0&&(i=i.replace(/^[\/]+/,"")),i=u0?"?":"")+o.join("&")}(typeof arguments[0]=="object"?arguments[0]:[].slice.call(arguments))}(e.reduce((s,a,n)=>((n===0||a!=="/"||a==="/"&&s[s.length-1]!=="/")&&s.push(a),s),[]))}var Vw=de(542),Oo=de.n(Vw);const Bw="abcdef0123456789";function xd(r,e){const t=r.url.replace("//",""),s=t.indexOf("/")==-1?"/":t.slice(t.indexOf("/")),a=r.method?r.method.toUpperCase():"GET",n=!!/(^|,)\s*auth\s*($|,)/.test(e.qop)&&"auth",u="00000000".concat(e.nc).slice(-8),i=function(h,p,d,w,y,k,g){const b=g||Oo()("".concat(p,":").concat(d,":").concat(w));return h&&h.toLowerCase()==="md5-sess"?Oo()("".concat(b,":").concat(y,":").concat(k)):b}(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),l=Oo()("".concat(a,":").concat(s)),o=n?Oo()("".concat(i,":").concat(e.nonce,":").concat(u,":").concat(e.cnonce,":").concat(n,":").concat(l)):Oo()("".concat(i,":").concat(e.nonce,":").concat(l)),c={username:e.username,realm:e.realm,nonce:e.nonce,uri:s,qop:n,response:o,nc:u,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},m=[];for(const h in c)c[h]&&(h==="qop"||h==="nc"||h==="algorithm"?m.push("".concat(h,"=").concat(c[h])):m.push("".concat(h,'="').concat(c[h],'"')));return"Digest ".concat(m.join(", "))}function Rp(r){return(r.headers&&r.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()==="digest"}var Pw=de(101),Lp=de.n(Pw);function Id(r){return Lp().decode(r)}function Vd(r,e){var t;return"Basic ".concat((t="".concat(r,":").concat(e),Lp().encode(t)))}const Eh=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:typeof window<"u"?window:globalThis,Ow=Eh.fetch.bind(Eh),Dw=Eh.Request,Tw=Eh.Response;let bt=function(r){return r.Auto="auto",r.Digest="digest",r.None="none",r.Password="password",r.Token="token",r}({}),Js=function(r){return r.DataTypeNoLength="data-type-no-length",r.InvalidAuthType="invalid-auth-type",r.InvalidOutputFormat="invalid-output-format",r.LinkUnsupportedAuthType="link-unsupported-auth",r.InvalidUpdateRange="invalid-update-range",r.NotSupported="not-supported",r}({});function Up(r,e,t,s,a){switch(r.authType){case bt.Auto:e&&t&&(r.headers.Authorization=Vd(e,t));break;case bt.Digest:r.digest=function(u,i,l){return{username:u,password:i,ha1:l,nc:0,algorithm:"md5",hasDigestAuth:!1}}(e,t,a);break;case bt.None:break;case bt.Password:r.headers.Authorization=Vd(e,t);break;case bt.Token:r.headers.Authorization="".concat((n=s).token_type," ").concat(n.access_token);break;default:throw new Nt({info:{code:Js.InvalidAuthType}},"Invalid auth type: ".concat(r.authType))}var n}de(345),de(800);const Bd="@@HOTPATCHER",Rw=()=>{};function am(r){return{original:r,methods:[r],final:!1}}class Lw{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=Bd}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(e){this.configuration.getEmptyAction=e}control(e){let t=arguments.length>1&&arguments[1]!==void 0&&arguments[1];if(!e||e.__type__!==Bd)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(e.configuration.registry).forEach(s=>{this.configuration.registry.hasOwnProperty(s)?t&&(this.configuration.registry[s]=Object.assign({},e.configuration.registry[s])):this.configuration.registry[s]=Object.assign({},e.configuration.registry[s])}),e._configuration=this.configuration,this}execute(e){const t=this.get(e)||Rw;for(var s=arguments.length,a=new Array(s>1?s-1:0),n=1;n0;)o=[a.shift().apply(c,o)];return o[0]}}(...t.methods)}isPatched(e){return!!this.configuration.registry[e]}patch(e,t){let s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{chain:a=!1}=s;if(this.configuration.registry[e]&&this.configuration.registry[e].final)throw new Error("Failed patching '".concat(e,"': Method marked as being final"));if(typeof t!="function")throw new Error("Failed patching '".concat(e,"': Provided method is not a function"));if(a)this.configuration.registry[e]?this.configuration.registry[e].methods.push(t):this.configuration.registry[e]=am(t);else if(this.isPatched(e)){const{original:n}=this.configuration.registry[e];this.configuration.registry[e]=Object.assign(am(t),{original:n})}else this.configuration.registry[e]=am(t);return this}patchInline(e,t){this.isPatched(e)||this.patch(e,t);for(var s=arguments.length,a=new Array(s>2?s-2:0),n=2;n1?t-1:0),a=1;a{this.patch(e,n,{chain:!0})}),this}restore(e){if(!this.isPatched(e))throw new Error("Failed restoring method: No method present for key: ".concat(e));if(typeof this.configuration.registry[e].original!="function")throw new Error("Failed restoring method: Original method not found or of invalid type for key: ".concat(e));return this.configuration.registry[e].methods=[this.configuration.registry[e].original],this}setFinal(e){if(!this.configuration.registry.hasOwnProperty(e))throw new Error("Failed marking '".concat(e,"' as final: No method found for key"));return this.configuration.registry[e].final=!0,this}}let nm=null;function jp(){return nm||(nm=new Lw),nm}function xh(r){return function(e){if(typeof e!="object"||e===null||Object.prototype.toString.call(e)!="[object Object]")return!1;if(Object.getPrototypeOf(e)===null)return!0;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}(r)?Object.assign({},r):Object.setPrototypeOf(Object.assign({},r),Object.getPrototypeOf(r))}function Pd(){for(var r=arguments.length,e=new Array(r),t=0;t0;){const n=a.shift();s=s?$p(s,n):xh(n)}return s}function $p(r,e){const t=xh(r);return Object.keys(e).forEach(s=>{t.hasOwnProperty(s)?Array.isArray(e[s])?t[s]=Array.isArray(t[s])?[...t[s],...e[s]]:[...e[s]]:typeof e[s]=="object"&&e[s]?t[s]=typeof t[s]=="object"&&t[s]?$p(t[s],e[s]):xh(e[s]):t[s]=e[s]:t[s]=e[s]}),t}function Uw(r){const e={};for(const t of r.keys())e[t]=r.get(t);return e}function tf(){for(var r=arguments.length,e=new Array(r),t=0;t(Object.keys(n).forEach(u=>{const i=u.toLowerCase();s.hasOwnProperty(i)?a[s[i]]=n[u]:(s[i]=u,a[u]=n[u])}),a),{})}de(805);const jw=typeof ArrayBuffer=="function",{toString:$w}=Object.prototype;function Kp(r){return jw&&(r instanceof ArrayBuffer||$w.call(r)==="[object ArrayBuffer]")}function Hp(r){return r!=null&&r.constructor!=null&&typeof r.constructor.isBuffer=="function"&&r.constructor.isBuffer(r)}function Kf(r){return function(){for(var e=[],t=0;te.patchInline("fetch",Ow,t.url,function(s){let a={};const n={method:s.method};if(s.headers&&(a=tf(a,s.headers)),s.data!==void 0){const[u,i]=function(l){if(typeof l=="string")return[l,{}];if(Hp(l))return[l,{}];if(Kp(l))return[l,{}];if(l&&typeof l=="object")return[JSON.stringify(l),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof l)}(s.data);n.body=u,a=tf(a,i)}return s.signal&&(n.signal=s.signal),s.withCredentials&&(n.credentials="include"),n.headers=a,n}(t)),r)}var Hw=de(285);const Vh=r=>{if(typeof r!="string")throw new TypeError("invalid pattern");if(r.length>65536)throw new TypeError("pattern is too long")},Mw={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},Do=r=>r.replace(/[[\]\\-]/g,"\\$&"),Od=r=>r.join(""),Fw=(r,e)=>{const t=e;if(r.charAt(t)!=="[")throw new Error("not in a brace expression");const s=[],a=[];let n=t+1,u=!1,i=!1,l=!1,o=!1,c=t,m="";e:for(;nm?s.push(Do(m)+"-"+Do(w)):w===m&&s.push(Do(w)),m="",n++):r.startsWith("-]",n+1)?(s.push(Do(w+"-")),n+=2):r.startsWith("-",n+1)?(m=w,n+=2):(s.push(Do(w)),n++)}else l=!0,n++}else o=!0,n++}if(c1&&arguments[1]!==void 0?arguments[1]:{};return e?r.replace(/\[([^\/\\])\]/g,"$1"):r.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")},Jw=new Set(["!","?","+","*","@"]),Dd=r=>Jw.has(r),im="(?!\\.)",qw=new Set(["[","."]),Ww=new Set(["..","."]),Gw=new Set("().*{}+?[]^$\\!"),Hf="[^/]",Td=Hf+"*?",Rd=Hf+"+?";var We,et,Os,be,He,Wr,Sn,Gr,hs,An,uc,Dn,Fp,na,Fc,rf,Jp;const pt=class pt{constructor(e,t){Et(this,Dn);Ke(this,"type");Et(this,We);Et(this,et);Et(this,Os,!1);Et(this,be,[]);Et(this,He);Et(this,Wr);Et(this,Sn);Et(this,Gr,!1);Et(this,hs);Et(this,An);Et(this,uc,!1);let s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.type=e,e&&Be(this,et,!0),Be(this,He,t),Be(this,We,H(this,He)?H(H(this,He),We):this),Be(this,hs,H(this,We)===this?s:H(H(this,We),hs)),Be(this,Sn,H(this,We)===this?[]:H(H(this,We),Sn)),e!=="!"||H(H(this,We),Gr)||H(this,Sn).push(this),Be(this,Wr,H(this,He)?H(H(this,He),be).length:0)}get hasMagic(){if(H(this,et)!==void 0)return H(this,et);for(const e of H(this,be))if(typeof e!="string"&&(e.type||e.hasMagic))return Be(this,et,!0);return H(this,et)}toString(){return H(this,An)!==void 0?H(this,An):this.type?Be(this,An,this.type+"("+H(this,be).map(e=>String(e)).join("|")+")"):Be(this,An,H(this,be).map(e=>String(e)).join(""))}push(){for(var e=arguments.length,t=new Array(e),s=0;stypeof s=="string"?s:s.toJSON()):[this.type,...H(this,be).map(s=>s.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===H(this,We)||H(H(this,We),Gr)&&((t=H(this,He))==null?void 0:t.type)==="!")&&e.push({}),e}isStart(){var t;if(H(this,We)===this)return!0;if(!((t=H(this,He))!=null&&t.isStart()))return!1;if(H(this,Wr)===0)return!0;const e=H(this,He);for(let s=0;s1&&arguments[1]!==void 0?arguments[1]:{};const s=new pt(null,void 0,t);return zs(a=pt,na,Fc).call(a,e,s,0,t),s}toMMPattern(){if(this!==H(this,We))return H(this,We).toMMPattern();const e=this.toString(),[t,s,a,n]=this.toRegExpSource();if(!(a||H(this,et)||H(this,hs).nocase&&!H(this,hs).nocaseMagicOnly&&e.toUpperCase()!==e.toLowerCase()))return s;const u=(H(this,hs).nocase?"i":"")+(n?"u":"");return Object.assign(new RegExp("^".concat(t,"$"),u),{_src:t,_glob:e})}get options(){return H(this,hs)}toRegExpSource(e){var l;const t=e!=null?e:!!H(this,hs).dot;if(H(this,We)===this&&zs(this,Dn,Fp).call(this),!this.type){const o=this.isStart()&&this.isEnd(),c=H(this,be).map(p=>{var g;const[d,w,y,k]=typeof p=="string"?zs(g=pt,na,Jp).call(g,p,H(this,et),o):p.toRegExpSource(e);return Be(this,et,H(this,et)||y),Be(this,Os,H(this,Os)||k),d}).join("");let m="";if(this.isStart()&&typeof H(this,be)[0]=="string"&&(H(this,be).length!==1||!Ww.has(H(this,be)[0]))){const p=qw,d=t&&p.has(c.charAt(0))||c.startsWith("\\.")&&p.has(c.charAt(2))||c.startsWith("\\.\\.")&&p.has(c.charAt(4)),w=!t&&!e&&p.has(c.charAt(0));m=d?"(?!(?:^|/)\\.\\.?(?:$|/))":w?im:""}let h="";return this.isEnd()&&H(H(this,We),Gr)&&((l=H(this,He))==null?void 0:l.type)==="!"&&(h="(?:$|\\/)"),[m+c+h,Xo(c),Be(this,et,!!H(this,et)),H(this,Os)]}const s=this.type==="*"||this.type==="+",a=this.type==="!"?"(?:(?!(?:":"(?:";let n=zs(this,Dn,rf).call(this,t);if(this.isStart()&&this.isEnd()&&!n&&this.type!=="!"){const o=this.toString();return Be(this,be,[o]),this.type=null,Be(this,et,void 0),[o,Xo(this.toString()),!1,!1]}let u=!s||e||t?"":zs(this,Dn,rf).call(this,!0);u===n&&(u=""),u&&(n="(?:".concat(n,")(?:").concat(u,")*?"));let i="";return i=this.type==="!"&&H(this,uc)?(this.isStart()&&!t?im:"")+Rd:a+n+(this.type==="!"?"))"+(!this.isStart()||t||e?"":im)+Td+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&u?")":this.type==="*"&&u?")?":")".concat(this.type)),[i,Xo(n),Be(this,et,!!H(this,et)),H(this,Os)]}};We=new WeakMap,et=new WeakMap,Os=new WeakMap,be=new WeakMap,He=new WeakMap,Wr=new WeakMap,Sn=new WeakMap,Gr=new WeakMap,hs=new WeakMap,An=new WeakMap,uc=new WeakMap,Dn=new WeakSet,Fp=function(){if(this!==H(this,We))throw new Error("should only call on root");if(H(this,Gr))return this;let e;for(this.toString(),Be(this,Gr,!0);e=H(this,Sn).pop();){if(e.type!=="!")continue;let t=e,s=H(t,He);for(;s;){for(let a=H(t,Wr)+1;!s.type&&a{if(typeof t=="string")throw new Error("string type in extglob ast??");const[s,a,n,u]=t.toRegExpSource(e);return Be(this,Os,H(this,Os)||u),s}).filter(t=>!(this.isStart()&&this.isEnd()&&!t)).join("|")},Jp=function(e,t){let s=arguments.length>2&&arguments[2]!==void 0&&arguments[2],a=!1,n="",u=!1;for(let i=0;i2&&arguments[2]!==void 0?arguments[2]:{};return Vh(e),!(!t.nocomment&&e.charAt(0)==="#")&&new Ph(e,t).match(r)},zw=/^\*+([^+@!?\*\[\(]*)$/,_w=r=>e=>!e.startsWith(".")&&e.endsWith(r),Xw=r=>e=>e.endsWith(r),Zw=r=>(r=r.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(r)),Qw=r=>(r=r.toLowerCase(),e=>e.toLowerCase().endsWith(r)),Yw=/^\*+\.\*+$/,ey=r=>!r.startsWith(".")&&r.includes("."),ty=r=>r!=="."&&r!==".."&&r.includes("."),sy=/^\.\*+$/,ry=r=>r!=="."&&r!==".."&&r.startsWith("."),ay=/^\*+$/,ny=r=>r.length!==0&&!r.startsWith("."),iy=r=>r.length!==0&&r!=="."&&r!=="..",oy=/^\?+([^+@!?\*\[\(]*)?$/,uy=r=>{let[e,t=""]=r;const s=qp([e]);return t?(t=t.toLowerCase(),a=>s(a)&&a.toLowerCase().endsWith(t)):s},ly=r=>{let[e,t=""]=r;const s=Wp([e]);return t?(t=t.toLowerCase(),a=>s(a)&&a.toLowerCase().endsWith(t)):s},cy=r=>{let[e,t=""]=r;const s=Wp([e]);return t?a=>s(a)&&a.endsWith(t):s},hy=r=>{let[e,t=""]=r;const s=qp([e]);return t?a=>s(a)&&a.endsWith(t):s},qp=r=>{let[e]=r;const t=e.length;return s=>s.length===t&&!s.startsWith(".")},Wp=r=>{let[e]=r;const t=e.length;return s=>s.length===t&&s!=="."&&s!==".."},Gp=typeof Ge=="object"&&Ge?typeof sm=="object"&&sm&&sm.__MINIMATCH_TESTING_PLATFORM__||Ge.platform:"posix";ft.sep=Gp==="win32"?"\\":"/";const Kt=Symbol("globstar **");ft.GLOBSTAR=Kt,ft.filter=function(r){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return t=>ft(t,r,e)};const jt=function(r){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.assign({},r,e)};ft.defaults=r=>{if(!r||typeof r!="object"||!Object.keys(r).length)return ft;const e=ft;return Object.assign(function(t,s){return e(t,s,jt(r,arguments.length>2&&arguments[2]!==void 0?arguments[2]:{}))},{Minimatch:class extends e.Minimatch{constructor(t){super(t,jt(r,arguments.length>1&&arguments[1]!==void 0?arguments[1]:{}))}static defaults(t){return e.defaults(jt(r,t)).Minimatch}},AST:class extends e.AST{constructor(t,s){super(t,s,jt(r,arguments.length>2&&arguments[2]!==void 0?arguments[2]:{}))}static fromGlob(t){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.AST.fromGlob(t,jt(r,s))}},unescape:function(t){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.unescape(t,jt(r,s))},escape:function(t){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.escape(t,jt(r,s))},filter:function(t){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.filter(t,jt(r,s))},defaults:t=>e.defaults(jt(r,t)),makeRe:function(t){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.makeRe(t,jt(r,s))},braceExpand:function(t){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.braceExpand(t,jt(r,s))},match:function(t,s){let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return e.match(t,s,jt(r,a))},sep:e.sep,GLOBSTAR:Kt})};const zp=function(r){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Vh(r),e.nobrace||!/\{(?:(?!\{).)*\}/.test(r)?[r]:Hw(r)};ft.braceExpand=zp,ft.makeRe=function(r){return new Ph(r,arguments.length>1&&arguments[1]!==void 0?arguments[1]:{}).makeRe()},ft.match=function(r,e){const t=new Ph(e,arguments.length>2&&arguments[2]!==void 0?arguments[2]:{});return r=r.filter(s=>t.match(s)),t.options.nonull&&!r.length&&r.push(e),r};const Ld=/[?*]|[+@!]\(.*?\)|\[|\]/;class Ph{constructor(e){Ke(this,"options");Ke(this,"set");Ke(this,"pattern");Ke(this,"windowsPathsNoEscape");Ke(this,"nonegate");Ke(this,"negate");Ke(this,"comment");Ke(this,"empty");Ke(this,"preserveMultipleSlashes");Ke(this,"partial");Ke(this,"globSet");Ke(this,"globParts");Ke(this,"nocase");Ke(this,"isWindows");Ke(this,"platform");Ke(this,"windowsNoMagicRoot");Ke(this,"regexp");let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Vh(e),t=t||{},this.options=t,this.pattern=e,this.platform=t.platform||Gp,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=t.windowsNoMagicRoot!==void 0?t.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const e of this.set)for(const t of e)if(typeof t!="string")return!0;return!1}debug(){}make(){const e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)==="#")return void(this.comment=!0);if(!e)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=function(){return console.error(...arguments)}),this.debug(this.pattern,this.globSet);const s=this.globSet.map(n=>this.slashSplit(n));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let a=this.globParts.map((n,u,i)=>{if(this.isWindows&&this.windowsNoMagicRoot){const l=!(n[0]!==""||n[1]!==""||n[2]!=="?"&&Ld.test(n[2])||Ld.test(n[3])),o=/^[a-z]:/i.test(n[0]);if(l)return[...n.slice(0,4),...n.slice(4).map(c=>this.parse(c))];if(o)return[n[0],...n.slice(1).map(c=>this.parse(c))]}return n.map(l=>this.parse(l))});if(this.debug(this.pattern,a),this.set=a.filter(n=>n.indexOf(!1)===-1),this.isWindows)for(let n=0;n=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):e=t>=1?this.levelOneOptimize(e):this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(t=>{let s=-1;for(;(s=t.indexOf("**",s+1))!==-1;){let a=s;for(;t[a+1]==="**";)a++;a!==s&&t.splice(s,a-s)}return t})}levelOneOptimize(e){return e.map(t=>(t=t.reduce((s,a)=>{const n=s[s.length-1];return a==="**"&&n==="**"?s:a===".."&&n&&n!==".."&&n!=="."&&n!=="**"?(s.pop(),s):(s.push(a),s)},[])).length===0?[""]:t)}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let a=1;aa&&s.splice(a+1,u-a);let i=s[a+1];const l=s[a+2],o=s[a+3];if(i!==".."||!l||l==="."||l===".."||!o||o==="."||o==="..")continue;t=!0,s.splice(a,1);const c=s.slice(0);c[a]="**",e.push(c),a--}if(!this.preserveMultipleSlashes){for(let u=1;ut.length)}partsMatch(e,t){let s=arguments.length>2&&arguments[2]!==void 0&&arguments[2],a=0,n=0,u=[],i="";for(;a2&&arguments[2]!==void 0&&arguments[2];const a=this.options;if(this.isWindows){const w=typeof e[0]=="string"&&/^[a-z]:$/i.test(e[0]),y=!w&&e[0]===""&&e[1]===""&&e[2]==="?"&&/^[a-z]:$/i.test(e[3]),k=typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0]),g=y?3:w?0:void 0,b=!k&&t[0]===""&&t[1]===""&&t[2]==="?"&&typeof t[3]=="string"&&/^[a-z]:$/i.test(t[3])?3:k?0:void 0;if(typeof g=="number"&&typeof b=="number"){const[N,S]=[e[g],t[b]];N.toLowerCase()===S.toLowerCase()&&(t[b]=N,b>g?t=t.slice(b):g>b&&(e=e.slice(g)))}}const{optimizationLevel:n=1}=this.options;n>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:t}),this.debug("matchOne",e.length,t.length);for(var u=0,i=0,l=e.length,o=t.length;u>> no match, partial?",e,h,t,p),h!==l))}let w;if(typeof c=="string"?(w=m===c,this.debug("string match",c,m,w)):(w=c.test(m),this.debug("pattern match",c,m,w)),!w)return!1}if(u===l&&i===o)return!0;if(u===l)return s;if(i===o)return u===l-1&&e[u]==="";throw new Error("wtf?")}braceExpand(){return zp(this.pattern,this.options)}parse(e){Vh(e);const t=this.options;if(e==="**")return Kt;if(e==="")return"";let s,a=null;(s=e.match(ay))?a=t.dot?iy:ny:(s=e.match(zw))?a=(t.nocase?t.dot?Qw:Zw:t.dot?Xw:_w)(s[1]):(s=e.match(oy))?a=(t.nocase?t.dot?ly:uy:t.dot?cy:hy)(s):(s=e.match(Yw))?a=t.dot?ty:ey:(s=e.match(sy))&&(a=ry);const n=Bh.fromGlob(e,this.options).toMMPattern();return a&&typeof n=="object"&&Reflect.defineProperty(n,"test",{value:a}),n}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;const e=this.set;if(!e.length)return this.regexp=!1,this.regexp;const t=this.options,s=t.noglobstar?"[^/]*?":t.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",a=new Set(t.nocase?["i"]:[]);let n=e.map(l=>{const o=l.map(c=>{if(c instanceof RegExp)for(const m of c.flags.split(""))a.add(m);return typeof c=="string"?c.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):c===Kt?Kt:c._src});return o.forEach((c,m)=>{const h=o[m+1],p=o[m-1];c===Kt&&p!==Kt&&(p===void 0?h!==void 0&&h!==Kt?o[m+1]="(?:\\/|"+s+"\\/)?"+h:o[m]=s:h===void 0?o[m-1]=p+"(?:\\/|"+s+")?":h!==Kt&&(o[m-1]=p+"(?:\\/|\\/"+s+"\\/)"+h,o[m+1]=Kt))}),o.filter(c=>c!==Kt).join("/")}).join("|");const[u,i]=e.length>1?["(?:",")"]:["",""];n="^"+u+n+i+"$",this.negate&&(n="^(?!"+n+").+$");try{this.regexp=new RegExp(n,[...a].join(""))}catch(l){this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.partial;if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return e==="";if(e==="/"&&t)return!0;const s=this.options;this.isWindows&&(e=e.split("\\").join("/"));const a=this.slashSplit(e);this.debug(this.pattern,"split",a);const n=this.set;this.debug(this.pattern,"set",n);let u=a[a.length-1];if(!u)for(let i=a.length-2;!u&&i>=0;i--)u=a[i];for(let i=0;i1&&arguments[1]!==void 0?arguments[1]:"","Invalid response: ").concat(r.status," ").concat(r.statusText));return e.status=r.status,e.response=r,e}function Qe(r,e){const{status:t}=e;if(t===401&&r.digest)return e;if(t>=400)throw Mf(e);return e}function Tn(r,e){return arguments.length>2&&arguments[2]!==void 0&&arguments[2]?{data:e,headers:r.headers?Uw(r.headers):{},status:r.status,statusText:r.statusText}:e}ft.AST=Bh,ft.Minimatch=Ph,ft.escape=function(r){let{windowsPathsNoEscape:e=!1}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e?r.replace(/[?*()[\]]/g,"[$&]"):r.replace(/[?*()[\]\\]/g,"\\$&")},ft.unescape=Xo;const my=(Ud=function(r,e,t){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const a=Ze({url:Ee(r.remoteURL,Ce(e)),method:"COPY",headers:{Destination:Ee(r.remoteURL,Ce(t)),Overwrite:s.overwrite===!1?"F":"T",Depth:s.shallow?"0":"infinity"}},r,s);return u=function(i){Qe(r,i)},(n=Xe(a,r))&&n.then||(n=Promise.resolve(n)),u?n.then(u):n;var n,u},function(){for(var r=[],e=0;e2&&arguments[2]!==void 0?arguments[2]:ho.Original;const s=Ps().get(r,e);return t==="array"&&Array.isArray(s)===!1?[s]:t==="object"&&Array.isArray(s)?s[0]:s}function lc(r){return new Promise(e=>{e(function(t){const{multistatus:s}=t;if(s==="")return{multistatus:{response:[]}};if(!s)throw new Error("Invalid response: No root multistatus found");const a={multistatus:Array.isArray(s)?s[0]:s};return Ps().set(a,"multistatus.response",fc(a,"multistatus.response",ho.Array)),Ps().set(a,"multistatus.response",Ps().get(a,"multistatus.response").map(n=>function(u){const i=Object.assign({},u);return i.status?Ps().set(i,"status",fc(i,"status",ho.Object)):(Ps().set(i,"propstat",fc(i,"propstat",ho.Object)),Ps().set(i,"propstat.prop",fc(i,"propstat.prop",ho.Object))),i}(n))),a}(new Ff.XMLParser({removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1}}).parse(r)))})}function Gh(r,e){let t=arguments.length>2&&arguments[2]!==void 0&&arguments[2];const{getlastmodified:s=null,getcontentlength:a="0",resourcetype:n=null,getcontenttype:u=null,getetag:i=null}=r,l=n&&typeof n=="object"&&n.collection!==void 0?"directory":"file",o={filename:e,basename:Ch().basename(e),lastmod:s,size:parseInt(a,10),type:l,etag:typeof i=="string"?i.replace(/"/g,""):null};return l==="file"&&(o.mime=u&&typeof u=="string"?u.split(";")[0]:""),t&&(r.displayname!==void 0&&(r.displayname=String(r.displayname)),o.props=r),o}function _p(r,e){let t=arguments.length>2&&arguments[2]!==void 0&&arguments[2],s=null;try{r.multistatus.response[0].propstat&&(s=r.multistatus.response[0])}catch(c){}if(!s)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:a,status:n}}=s,[u,i,l]=n.split(" ",3),o=parseInt(i,10);if(o>=400){const c=new Error("Invalid response: ".concat(o," ").concat(l));throw c.status=o,c}return Gh(a,ec(e),t)}function Xp(r){switch(String(r)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(r),10)}}function om(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}const Jf=function(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};const{details:s=!1}=t,a=Ze({url:Ee(r.remoteURL,Ce(e)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},r,t);return om(Xe(a,r),function(n){return Qe(r,n),om(n.text(),function(u){return om(lc(u),function(i){const l=_p(i,e,s);return Tn(n,l,s)})})})});function Zp(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}const dy=Qp(function(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const s=function(n){if(!n||n==="/")return[];let u=n;const i=[];do i.push(u),u=Ch().dirname(u);while(u&&u!=="/");return i}(ec(e));s.sort((n,u)=>n.length>u.length?1:u.length>n.length?-1:0);let a=!1;return function(n,u,i){if(typeof n[$d]=="function"){let w=function(y){try{for(;!(l=m.next()).done;)if((y=u(l.value))&&y.then){if(!Kd(y))return void y.then(w,c||(c=St.bind(null,o=new mo,2)));y=y.v}o?St(o,1,y):o=y}catch(k){St(o||(o=new mo),2,k)}};var l,o,c,m=n[$d]();if(w(),m.return){var h=function(y){try{l.done||m.return()}catch(k){}return y};if(o&&o.then)return o.then(h,function(y){throw h(y)});h()}return o}if(!("length"in n))throw new TypeError("Object is not iterable");for(var p=[],d=0;d2&&arguments[2]!==void 0?arguments[2]:{};if(t.recursive===!0)return dy(r,e,t);const s=Ze({url:Ee(r.remoteURL,(a=Ce(e),a.endsWith("/")?a:a+"/")),method:"MKCOL"},r,t);var a;return Zp(Xe(s,r),function(n){Qe(r,n)})});var gy=de(388),Hd=de.n(gy);const wy=function(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};const s={};if(typeof t.range=="object"&&typeof t.range.start=="number"){let i="bytes=".concat(t.range.start,"-");typeof t.range.end=="number"&&(i="".concat(i).concat(t.range.end)),s.Range=i}const a=Ze({url:Ee(r.remoteURL,Ce(e)),method:"GET",headers:s},r,t);return u=function(i){if(Qe(r,i),s.Range&&i.status!==206){const l=new Error("Invalid response code for partial request: ".concat(i.status));throw l.status=i.status,l}return t.callback&&setTimeout(()=>{t.callback(i)},0),i.body},(n=Xe(a,r))&&n.then||(n=Promise.resolve(n)),u?n.then(u):n;var n,u}),yy=()=>{},vy=function(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};const s=Ze({url:Ee(r.remoteURL,Ce(e)),method:"DELETE"},r,t);return n=function(u){Qe(r,u)},(a=Xe(s,r))&&a.then||(a=Promise.resolve(a)),n?a.then(n):a;var a,n}),Sy=function(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};return function(s,a){try{var n=(u=Jf(r,e,t),i=function(){return!0},l?i?i(u):u:(u&&u.then||(u=Promise.resolve(u)),i?u.then(i):u))}catch(o){return a(o)}var u,i,l;return n&&n.then?n.then(void 0,a):n}(0,function(s){if(s.status===404)return!1;throw s})});function um(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}const Ay=function(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};const s=Ze({url:Ee(r.remoteURL,Ce(e),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:t.deep?"infinity":"1"}},r,t);return um(Xe(s,r),function(a){return Qe(r,a),um(a.text(),function(n){if(!n)throw new Error("Failed parsing directory contents: Empty response");return um(lc(n),function(u){const i=Ed(e);let l=function(o,c,m){let h=arguments.length>3&&arguments[3]!==void 0&&arguments[3],p=arguments.length>4&&arguments[4]!==void 0&&arguments[4];const d=Ch().join(c,"/"),{multistatus:{response:w}}=o,y=w.map(k=>{const g=function(N){try{return N.replace(/^https?:\/\/[^\/]+/,"")}catch(S){throw new Nt(S,"Failed normalising HREF")}}(k.href),{propstat:{prop:b}}=k;return Gh(b,d==="/"?decodeURIComponent(ec(g)):ec(Ch().relative(decodeURIComponent(d),decodeURIComponent(g))),h)});return p?y:y.filter(k=>k.basename&&(k.type==="file"||k.filename!==m.replace(/\/$/,"")))}(u,Ed(r.remoteBasePath||r.remotePath),i,t.details,t.includeSelf);return t.glob&&(l=function(o,c){return o.filter(m=>ft(m.filename,c,{matchBase:!0}))}(l,t.glob)),Tn(a,l,t.details)})})})});function qf(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};const s=Ze({url:Ee(r.remoteURL,Ce(e)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[Ey]},r,t);return Oh(Xe(s,r),function(a){return Qe(r,a),Oh(a.text(),function(n){return Tn(a,n,t.details)})})});function Oh(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}const ky=qf(function(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const s=Ze({url:Ee(r.remoteURL,Ce(e)),method:"GET"},r,t);return Oh(Xe(s,r),function(a){let n;return Qe(r,a),function(u,i){var l=u();return l&&l.then?l.then(i):i()}(function(){return Oh(a.arrayBuffer(),function(u){n=u})},function(){return Tn(a,n,t.details)})})}),Cy=qf(function(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{format:s="binary"}=t;if(s!=="binary"&&s!=="text")throw new Nt({info:{code:Js.InvalidOutputFormat}},"Invalid output format: ".concat(s));return s==="text"?Ny(r,e,t):ky(r,e,t)}),Ey=r=>r;function xy(r){return new Ff.XMLBuilder({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(Yp({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:r}}},"d"))}function Yp(r,e){const t=it({},r);for(const s in t)t.hasOwnProperty(s)&&(t[s]&&typeof t[s]=="object"&&s.indexOf(":")===-1?(t["".concat(e,":").concat(s)]=Yp(t[s],e),delete t[s]):/^@_/.test(s)===!1&&(t["".concat(e,":").concat(s)]=t[s],delete t[s]));return t}function nf(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}function eg(r){return function(){for(var e=[],t=0;t3&&arguments[3]!==void 0?arguments[3]:{};const a=Ze({url:Ee(r.remoteURL,Ce(e)),method:"UNLOCK",headers:{"Lock-Token":t}},r,s);return nf(Xe(a,r),function(n){if(Qe(r,n),n.status!==204&&n.status!==200)throw Mf(n)})}),Vy=eg(function(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{refreshToken:s,timeout:a=By}=t,n={Accept:"text/plain,application/xml",Timeout:a};s&&(n.If=s);const u=Ze({url:Ee(r.remoteURL,Ce(e)),method:"LOCK",headers:n,data:xy(r.contactHref)},r,t);return nf(Xe(u,r),function(i){return Qe(r,i),nf(i.text(),function(l){const o=(h=l,new Ff.XMLParser({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(h)),c=Ps().get(o,"prop.lockdiscovery.activelock.locktoken.href"),m=Ps().get(o,"prop.lockdiscovery.activelock.timeout");var h;if(!c)throw Mf(i,"No lock token received: ");return{token:c,serverTimeout:m}})})}),By="Infinite, Second-4100000000";function lm(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}const Py=function(r){return function(){for(var e=[],t=0;t1&&arguments[1]!==void 0?arguments[1]:{};const t=e.path||"/",s=Ze({url:Ee(r.remoteURL,t),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},r,e);return lm(Xe(s,r),function(a){return Qe(r,a),lm(a.text(),function(n){return lm(lc(n),function(u){const i=function(l){try{const[o]=l.multistatus.response,{propstat:{prop:{"quota-used-bytes":c,"quota-available-bytes":m}}}=o;return c!==void 0&&m!==void 0?{used:parseInt(String(c),10),available:Xp(m)}:null}catch(o){}return null}(u);return Tn(a,i,e.details)})})})});function cm(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}const Oy=function(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};const{details:s=!1}=t,a=Ze({url:Ee(r.remoteURL,Ce(e)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":r.headers["Content-Type"]||"application/xml; charset=utf-8"}},r,t);return cm(Xe(a,r),function(n){return Qe(r,n),cm(n.text(),function(u){return cm(lc(u),function(i){const l=function(o,c,m){const h={truncated:!1,results:[]};return h.truncated=o.multistatus.response.some(p=>{var d,w;return((w=(p.status||((d=p.propstat)==null?void 0:d.status)).split(" ",3))==null?void 0:w[1])==="507"&&p.href.replace(/\/$/,"").endsWith(Ce(c).replace(/\/$/,""))}),o.multistatus.response.forEach(p=>{if(p.propstat===void 0)return;const d=p.href.split("/").map(decodeURIComponent).join("/");h.results.push(Gh(p.propstat.prop,d,m))}),h}(i,e,s);return Tn(n,l,s)})})})}),Dy=function(r){return function(){for(var e=[],t=0;t3&&arguments[3]!==void 0?arguments[3]:{};const a=Ze({url:Ee(r.remoteURL,Ce(e)),method:"MOVE",headers:{Destination:Ee(r.remoteURL,Ce(t)),Overwrite:s.overwrite===!1?"F":"T"}},r,s);return u=function(i){Qe(r,i)},(n=Xe(a,r))&&n.then||(n=Promise.resolve(n)),u?n.then(u):n;var n,u});var Ty=de(172);const Ry=function(r){return function(){for(var e=[],t=0;t3&&arguments[3]!==void 0?arguments[3]:{};const{contentLength:a=!0,overwrite:n=!0}=s,u={"Content-Type":"application/octet-stream"};a===!1||(u["Content-Length"]=typeof a=="number"?"".concat(a):"".concat(function(c){if(Kp(c))return c.byteLength;if(Hp(c))return c.length;if(typeof c=="string")return(0,Ty.d)(c);throw new Nt({info:{code:Js.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}(t))),n||(u["If-None-Match"]="*");const i=Ze({url:Ee(r.remoteURL,Ce(e)),method:"PUT",headers:u,data:t},r,s);return o=function(c){try{Qe(r,c)}catch(m){const h=m;if(h.status!==412||n)throw h;return!1}return!0},(l=Xe(i,r))&&l.then||(l=Promise.resolve(l)),o?l.then(o):l;var l,o}),tg=function(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};const s=Ze({url:Ee(r.remoteURL,Ce(e)),method:"OPTIONS"},r,t);return n=function(u){var i,l;try{Qe(r,u)}catch(o){throw o}return{compliance:((i=u.headers.get("DAV"))!=null?i:"").split(",").map(o=>o.trim()),server:(l=u.headers.get("Server"))!=null?l:""}},(a=Xe(s,r))&&a.then||(a=Promise.resolve(a)),n?a.then(n):a;var a,n});function Gl(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}const Ly=Wf(function(r,e,t,s,a){let n=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{};if(t>s||t<0)throw new Nt({info:{code:Js.InvalidUpdateRange}},"Invalid update range ".concat(t," for partial update"));const u={"Content-Type":"application/octet-stream","Content-Length":""+(s-t+1),"Content-Range":"bytes ".concat(t,"-").concat(s,"/*")},i=Ze({url:Ee(r.remoteURL,Ce(e)),method:"PUT",headers:u,data:a},r,n);return Gl(Xe(i,r),function(l){Qe(r,l)})});function Md(r,e){var t=r();return t&&t.then?t.then(e):e(t)}const Uy=Wf(function(r,e,t,s,a){let n=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{};if(t>s||t<0)throw new Nt({info:{code:Js.InvalidUpdateRange}},"Invalid update range ".concat(t," for partial update"));const u={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(s-t+1),"X-Update-Range":"bytes=".concat(t,"-").concat(s)},i=Ze({url:Ee(r.remoteURL,Ce(e)),method:"PATCH",headers:u,data:a},r,n);return Gl(Xe(i,r),function(l){Qe(r,l)})});function Wf(r){return function(){for(var e=[],t=0;t5&&arguments[5]!==void 0?arguments[5]:{};return Gl(tg(r,e,n),function(u){let i=!1;return Md(function(){if(u.compliance.includes("sabredav-partialupdate"))return Gl(Uy(r,e,t,s,a,n),function(l){return i=!0,l})},function(l){let o=!1;return i?l:Md(function(){if(u.server.includes("Apache")&&u.compliance.includes(""))return Gl(Ly(r,e,t,s,a,n),function(c){return o=!0,c})},function(c){if(o)return c;throw new Nt({info:{code:Js.NotSupported}},"Not supported")})})})}),$y="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function Ky(r){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{authType:t=null,remoteBasePath:s,contactHref:a=$y,ha1:n,headers:u={},httpAgent:i,httpsAgent:l,password:o,token:c,username:m,withCredentials:h}=e;let p=t;p||(p=m||o?bt.Password:bt.None);const d={authType:p,remoteBasePath:s,contactHref:a,ha1:n,headers:Object.assign({},u),httpAgent:i,httpsAgent:l,password:o,remotePath:Iw(r),remoteURL:r,token:c,username:m,withCredentials:h};return Up(d,m,o,c,n),{copyFile:(w,y,k)=>my(d,w,y,k),createDirectory:(w,y)=>af(d,w,y),createReadStream:(w,y)=>function(k,g){let b=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const N=new(Hd()).PassThrough;return wy(k,g,b).then(S=>{S.pipe(N)}).catch(S=>{N.emit("error",S)}),N}(d,w,y),createWriteStream:(w,y,k)=>function(g,b){let N=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},S=arguments.length>3&&arguments[3]!==void 0?arguments[3]:yy;const E=new(Hd()).PassThrough,x={};N.overwrite===!1&&(x["If-None-Match"]="*");const C=Ze({url:Ee(g.remoteURL,Ce(b)),method:"PUT",headers:x,data:E,maxRedirects:0},g,N);return Xe(C,g).then(P=>Qe(g,P)).then(P=>{setTimeout(()=>{S(P)},0)}).catch(P=>{E.emit("error",P)}),E}(d,w,y,k),customRequest:(w,y)=>vy(d,w,y),deleteFile:(w,y)=>by(d,w,y),exists:(w,y)=>Sy(d,w,y),getDirectoryContents:(w,y)=>Ay(d,w,y),getFileContents:(w,y)=>Cy(d,w,y),getFileDownloadLink:w=>function(y,k){let g=Ee(y.remoteURL,Ce(k));const b=/^https:/i.test(g)?"https":"http";switch(y.authType){case bt.None:break;case bt.Password:{const N=Id(y.headers.Authorization.replace(/^Basic /i,"").trim());g=g.replace(/^https?:\/\//,"".concat(b,"://").concat(N,"@"));break}default:throw new Nt({info:{code:Js.LinkUnsupportedAuthType}},"Unsupported auth type for file link: ".concat(y.authType))}return g}(d,w),getFileUploadLink:w=>function(y,k){let g="".concat(Ee(y.remoteURL,Ce(k)),"?Content-Type=application/octet-stream");const b=/^https:/i.test(g)?"https":"http";switch(y.authType){case bt.None:break;case bt.Password:{const N=Id(y.headers.Authorization.replace(/^Basic /i,"").trim());g=g.replace(/^https?:\/\//,"".concat(b,"://").concat(N,"@"));break}default:throw new Nt({info:{code:Js.LinkUnsupportedAuthType}},"Unsupported auth type for file link: ".concat(y.authType))}return g}(d,w),getHeaders:()=>Object.assign({},d.headers),getQuota:w=>Py(d,w),lock:(w,y)=>Vy(d,w,y),moveFile:(w,y,k)=>Dy(d,w,y,k),putFileContents:(w,y,k)=>Ry(d,w,y,k),partialUpdateFileContents:(w,y,k,g,b)=>jy(d,w,y,k,g,b),getDAVCompliance:w=>tg(d,w),search:(w,y)=>Oy(d,w,y),setHeaders:w=>{d.headers=Object.assign({},w)},stat:(w,y)=>Jf(d,w,y),unlock:(w,y,k)=>Iy(d,w,y,k)}}zt.hT,zt.O4,zt.Kd,zt.YK;var Hy=zt.UU,My=zt.Gu,Fy=zt.ky,Jy=zt.h4;zt.ch,zt.hq,zt.i5;function sg(){var r;return(r=Lf("files_sharing","isPublic",null))!=null?r:document.querySelector('input#isPublic[type="hidden"][name="isPublic"][value="1"]')!==null}function qy(){var r,e,t;return(t=(e=Lf("files_sharing","sharingToken",null))!=null?e:(r=document.querySelector('input#sharingToken[type="hidden"]'))==null?void 0:r.value)!=null?t:null}const wo=Gm().setApp("@nextcloud/files").detectUser().build();var rg=(r=>(r[r.NONE=0]="NONE",r[r.CREATE=4]="CREATE",r[r.READ=1]="READ",r[r.UPDATE=2]="UPDATE",r[r.DELETE=8]="DELETE",r[r.SHARE=16]="SHARE",r[r.ALL=31]="ALL",r))(rg||{}),ag=(r=>(r.Folder="folder",r.File="file",r))(ag||{});const ng=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:creationdate","d:displayname","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],ig={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},hm=function(r,e={nc:"http://nextcloud.org/ns"}){typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...ng],window._nc_dav_namespaces=it({},ig));const t=it(it({},window._nc_dav_namespaces),e);if(window._nc_dav_properties.find(a=>a===r))return wo.warn("".concat(r," already registered"),{prop:r}),!1;if(r.startsWith("<")||r.split(":").length!==2)return wo.error("".concat(r," is not valid. See example: 'oc:fileid'"),{prop:r}),!1;const s=r.split(":")[0];return t[s]?(window._nc_dav_properties.push(r),window._nc_dav_namespaces=t,!0):(wo.error("".concat(r," namespace unknown"),{prop:r,namespaces:t}),!1)},Wy=function(){return typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...ng]),window._nc_dav_properties.map(r=>"<".concat(r," />")).join(" ")},Gy=function(){return typeof window._nc_dav_namespaces>"u"&&(window._nc_dav_namespaces=it({},ig)),Object.keys(window._nc_dav_namespaces).map(r=>{var e;return"xmlns:".concat(r,'="').concat((e=window._nc_dav_namespaces)==null?void 0:e[r],'"')}).join(" ")},zy=function(){return'\n \n \n ").concat(Wy(),"\n \n ")};function _y(){var r;return sg()?"/files/".concat(qy()):"/files/".concat((r=Uf())==null?void 0:r.uid)}_y();function Xy(){const r=_g("dav");return sg()?r.replace("remote.php","public.php"):r}const Zy=Xy(),Qy=function(r=Zy,e={}){const t=Hy(r,{headers:e});function s(a){t.setHeaders(os(it({},e),{"X-Requested-With":"XMLHttpRequest",requesttoken:a!=null?a:""}))}return Xg(s),s(Zg()),My().patch("fetch",(a,n)=>{const u=n.headers;return u!=null&&u.method&&(n.method=u.method,delete u.method),fetch(a,n)}),t};var mm={},Gf=(r=>(r.DEFAULT="default",r.HIDDEN="hidden",r))(Gf||{});class Yy{constructor(e){Ke(this,"_action");this.validateAction(e),this._action=e}get id(){return this._action.id}get displayName(){return this._action.displayName}get title(){return this._action.title}get iconSvgInline(){return this._action.iconSvgInline}get enabled(){return this._action.enabled}get exec(){return this._action.exec}get execBatch(){return this._action.execBatch}get order(){return this._action.order}get parent(){return this._action.parent}get default(){return this._action.default}get destructive(){return this._action.destructive}get inline(){return this._action.inline}get renderInline(){return this._action.renderInline}validateAction(e){if(!e.id||typeof e.id!="string")throw new Error("Invalid id");if(!e.displayName||typeof e.displayName!="function")throw new Error("Invalid displayName function");if("title"in e&&typeof e.title!="function")throw new Error("Invalid title function");if(!e.iconSvgInline||typeof e.iconSvgInline!="function")throw new Error("Invalid iconSvgInline function");if(!e.exec||typeof e.exec!="function")throw new Error("Invalid exec function");if("enabled"in e&&typeof e.enabled!="function")throw new Error("Invalid enabled function");if("execBatch"in e&&typeof e.execBatch!="function")throw new Error("Invalid execBatch function");if("order"in e&&typeof e.order!="number")throw new Error("Invalid order");if(e.destructive!==void 0&&typeof e.destructive!="boolean")throw new Error("Invalid destructive flag");if("parent"in e&&typeof e.parent!="string")throw new Error("Invalid parent");if(e.default&&!Object.values(Gf).includes(e.default))throw new Error("Invalid default");if("inline"in e&&typeof e.inline!="function")throw new Error("Invalid inline function");if("renderInline"in e&&typeof e.renderInline!="function")throw new Error("Invalid renderInline function")}}const ev=function(r){if(typeof window._nc_fileactions>"u"&&(window._nc_fileactions=[],wo.debug("FileActions initialized")),window._nc_fileactions.find(e=>e.id===r.id)){wo.error("FileAction ".concat(r.id," already registered"),{action:r});return}window._nc_fileactions.push(r)},tv=function(){return typeof window._nc_fileactions>"u"&&(window._nc_fileactions=[],wo.debug("FileActions initialized")),window._nc_fileactions};var sv={};(function(r){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",t=e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",s="["+e+"]["+t+"]*",a=new RegExp("^"+s+"$"),n=function(i,l){const o=[];let c=l.exec(i);for(;c;){const m=[];m.startIndex=l.lastIndex-c[0].length;const h=c.length;for(let p=0;p"u")};r.isExist=function(i){return typeof i<"u"},r.isEmptyObject=function(i){return Object.keys(i).length===0},r.merge=function(i,l,o){if(l){const c=Object.keys(l),m=c.length;for(let h=0;hconsole.error("SEMVER",...r):()=>{};var av=rv;const nv="2.0.0",og=256,iv=Number.MAX_SAFE_INTEGER||9007199254740991,ov=16,uv=og-6,lv=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var cv={MAX_LENGTH:og,MAX_SAFE_COMPONENT_LENGTH:ov,MAX_SAFE_BUILD_LENGTH:uv,MAX_SAFE_INTEGER:iv,RELEASE_TYPES:lv,SEMVER_SPEC_VERSION:nv,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},Fd={exports:{}};(function(r,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:s,MAX_LENGTH:a}=cv,n=av;e=r.exports={};const u=e.re=[],i=e.safeRe=[],l=e.src=[],o=e.t={};let c=0;const m="[a-zA-Z0-9-]",h=[["\\s",1],["\\d",a],[m,s]],p=w=>{for(const[y,k]of h)w=w.split("".concat(y,"*")).join("".concat(y,"{0,").concat(k,"}")).split("".concat(y,"+")).join("".concat(y,"{1,").concat(k,"}"));return w},d=(w,y,k)=>{const g=p(y),b=c++;n(w,b,y),o[w]=b,l[b]=y,u[b]=new RegExp(y,k?"g":void 0),i[b]=new RegExp(g,k?"g":void 0)};d("NUMERICIDENTIFIER","0|[1-9]\\d*"),d("NUMERICIDENTIFIERLOOSE","\\d+"),d("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-]".concat(m,"*")),d("MAINVERSION","(".concat(l[o.NUMERICIDENTIFIER],")\\.(").concat(l[o.NUMERICIDENTIFIER],")\\.(").concat(l[o.NUMERICIDENTIFIER],")")),d("MAINVERSIONLOOSE","(".concat(l[o.NUMERICIDENTIFIERLOOSE],")\\.(").concat(l[o.NUMERICIDENTIFIERLOOSE],")\\.(").concat(l[o.NUMERICIDENTIFIERLOOSE],")")),d("PRERELEASEIDENTIFIER","(?:".concat(l[o.NUMERICIDENTIFIER],"|").concat(l[o.NONNUMERICIDENTIFIER],")")),d("PRERELEASEIDENTIFIERLOOSE","(?:".concat(l[o.NUMERICIDENTIFIERLOOSE],"|").concat(l[o.NONNUMERICIDENTIFIER],")")),d("PRERELEASE","(?:-(".concat(l[o.PRERELEASEIDENTIFIER],"(?:\\.").concat(l[o.PRERELEASEIDENTIFIER],")*))")),d("PRERELEASELOOSE","(?:-?(".concat(l[o.PRERELEASEIDENTIFIERLOOSE],"(?:\\.").concat(l[o.PRERELEASEIDENTIFIERLOOSE],")*))")),d("BUILDIDENTIFIER","".concat(m,"+")),d("BUILD","(?:\\+(".concat(l[o.BUILDIDENTIFIER],"(?:\\.").concat(l[o.BUILDIDENTIFIER],")*))")),d("FULLPLAIN","v?".concat(l[o.MAINVERSION]).concat(l[o.PRERELEASE],"?").concat(l[o.BUILD],"?")),d("FULL","^".concat(l[o.FULLPLAIN],"$")),d("LOOSEPLAIN","[v=\\s]*".concat(l[o.MAINVERSIONLOOSE]).concat(l[o.PRERELEASELOOSE],"?").concat(l[o.BUILD],"?")),d("LOOSE","^".concat(l[o.LOOSEPLAIN],"$")),d("GTLT","((?:<|>)?=?)"),d("XRANGEIDENTIFIERLOOSE","".concat(l[o.NUMERICIDENTIFIERLOOSE],"|x|X|\\*")),d("XRANGEIDENTIFIER","".concat(l[o.NUMERICIDENTIFIER],"|x|X|\\*")),d("XRANGEPLAIN","[v=\\s]*(".concat(l[o.XRANGEIDENTIFIER],")(?:\\.(").concat(l[o.XRANGEIDENTIFIER],")(?:\\.(").concat(l[o.XRANGEIDENTIFIER],")(?:").concat(l[o.PRERELEASE],")?").concat(l[o.BUILD],"?)?)?")),d("XRANGEPLAINLOOSE","[v=\\s]*(".concat(l[o.XRANGEIDENTIFIERLOOSE],")(?:\\.(").concat(l[o.XRANGEIDENTIFIERLOOSE],")(?:\\.(").concat(l[o.XRANGEIDENTIFIERLOOSE],")(?:").concat(l[o.PRERELEASELOOSE],")?").concat(l[o.BUILD],"?)?)?")),d("XRANGE","^".concat(l[o.GTLT],"\\s*").concat(l[o.XRANGEPLAIN],"$")),d("XRANGELOOSE","^".concat(l[o.GTLT],"\\s*").concat(l[o.XRANGEPLAINLOOSE],"$")),d("COERCEPLAIN","(^|[^\\d])(\\d{1,".concat(t,"})(?:\\.(\\d{1,").concat(t,"}))?(?:\\.(\\d{1,").concat(t,"}))?")),d("COERCE","".concat(l[o.COERCEPLAIN],"(?:$|[^\\d])")),d("COERCEFULL",l[o.COERCEPLAIN]+"(?:".concat(l[o.PRERELEASE],")?(?:").concat(l[o.BUILD],")?(?:$|[^\\d])")),d("COERCERTL",l[o.COERCE],!0),d("COERCERTLFULL",l[o.COERCEFULL],!0),d("LONETILDE","(?:~>?)"),d("TILDETRIM","(\\s*)".concat(l[o.LONETILDE],"\\s+"),!0),e.tildeTrimReplace="$1~",d("TILDE","^".concat(l[o.LONETILDE]).concat(l[o.XRANGEPLAIN],"$")),d("TILDELOOSE","^".concat(l[o.LONETILDE]).concat(l[o.XRANGEPLAINLOOSE],"$")),d("LONECARET","(?:\\^)"),d("CARETTRIM","(\\s*)".concat(l[o.LONECARET],"\\s+"),!0),e.caretTrimReplace="$1^",d("CARET","^".concat(l[o.LONECARET]).concat(l[o.XRANGEPLAIN],"$")),d("CARETLOOSE","^".concat(l[o.LONECARET]).concat(l[o.XRANGEPLAINLOOSE],"$")),d("COMPARATORLOOSE","^".concat(l[o.GTLT],"\\s*(").concat(l[o.LOOSEPLAIN],")$|^$")),d("COMPARATOR","^".concat(l[o.GTLT],"\\s*(").concat(l[o.FULLPLAIN],")$|^$")),d("COMPARATORTRIM","(\\s*)".concat(l[o.GTLT],"\\s*(").concat(l[o.LOOSEPLAIN],"|").concat(l[o.XRANGEPLAIN],")"),!0),e.comparatorTrimReplace="$1$2$3",d("HYPHENRANGE","^\\s*(".concat(l[o.XRANGEPLAIN],")\\s+-\\s+(").concat(l[o.XRANGEPLAIN],")\\s*$")),d("HYPHENRANGELOOSE","^\\s*(".concat(l[o.XRANGEPLAINLOOSE],")\\s+-\\s+(").concat(l[o.XRANGEPLAINLOOSE],")\\s*$")),d("STAR","(<|>)?=?\\s*\\*"),d("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),d("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(Fd,Fd.exports);var zf={},zh={};(function(r){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",t=e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",s="["+e+"]["+t+"]*",a=new RegExp("^"+s+"$"),n=function(i,l){const o=[];let c=l.exec(i);for(;c;){const m=[];m.startIndex=l.lastIndex-c[0].length;const h=c.length;for(let p=0;p"u")};r.isExist=function(i){return typeof i<"u"},r.isEmptyObject=function(i){return Object.keys(i).length===0},r.merge=function(i,l,o){if(l){const c=Object.keys(l),m=c.length;for(let h=0;h"&&r[n]!==" "&&r[n]!==" "&&r[n]!=="\n"&&r[n]!=="\r";n++)l+=r[n];if(l=l.trim(),l[l.length-1]==="/"&&(l=l.substring(0,l.length-1),n--),!vv(l)){let m;return l.trim().length===0?m="Invalid space after '<'.":m="Tag '"+l+"' is an invalid name.",Pe("InvalidTag",m,dt(r,n))}const o=dv(r,n);if(o===!1)return Pe("InvalidAttr","Attributes for '"+l+"' have open quote.",dt(r,n));let c=o.value;if(n=o.index,c[c.length-1]==="/"){const m=n-c.length;c=c.substring(0,c.length-1);const h=Gd(c,e);if(h===!0)s=!0;else return Pe(h.err.code,h.err.msg,dt(r,m+h.err.line))}else if(i)if(o.tagClosed){if(c.trim().length>0)return Pe("InvalidTag","Closing tag '"+l+"' can't have attributes or invalid starting.",dt(r,u));if(t.length===0)return Pe("InvalidTag","Closing tag '"+l+"' has not been opened.",dt(r,u));{const m=t.pop();if(l!==m.tagName){let h=dt(r,m.tagStartPos);return Pe("InvalidTag","Expected closing tag '"+m.tagName+"' (opened in line "+h.line+", col "+h.col+") instead of closing tag '"+l+"'.",dt(r,u))}t.length==0&&(a=!0)}}else return Pe("InvalidTag","Closing tag '"+l+"' doesn't have proper closing.",dt(r,n));else{const m=Gd(c,e);if(m!==!0)return Pe(m.err.code,m.err.msg,dt(r,n-c.length+m.err.line));if(a===!0)return Pe("InvalidXml","Multiple possible root nodes found.",dt(r,n));e.unpairedTags.indexOf(l)!==-1||t.push({tagName:l,tagStartPos:u}),s=!0}for(n++;n0)return Pe("InvalidXml","Invalid '"+JSON.stringify(t.map(n=>n.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}else return Pe("InvalidXml","Start tag expected.",1);return!0};function Jd(r){return r===" "||r===" "||r==="\n"||r==="\r"}function qd(r,e){const t=e;for(;e5&&s==="xml")return Pe("InvalidXml","XML declaration allowed only at the start of the document.",dt(r,e));if(r[e]=="?"&&r[e+1]==">"){e++;break}else continue}return e}function Wd(r,e){if(r.length>e+5&&r[e+1]==="-"&&r[e+2]==="-"){for(e+=3;e"){e+=2;break}}else if(r.length>e+8&&r[e+1]==="D"&&r[e+2]==="O"&&r[e+3]==="C"&&r[e+4]==="T"&&r[e+5]==="Y"&&r[e+6]==="P"&&r[e+7]==="E"){let t=1;for(e+=8;e"&&(t--,t===0))break}else if(r.length>e+9&&r[e+1]==="["&&r[e+2]==="C"&&r[e+3]==="D"&&r[e+4]==="A"&&r[e+5]==="T"&&r[e+6]==="A"&&r[e+7]==="["){for(e+=8;e"){e+=2;break}}return e}const mv='"',fv="'";function dv(r,e){let t="",s="",a=!1;for(;e"&&s===""){a=!0;break}t+=r[e]}return s!==""?!1:{value:t,index:e,tagClosed:a}}const pv=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function Gd(r,e){const t=_f.getAllMatches(r,pv),s={};for(let a=0;a!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(r,e,t){return r}},bv=function(r){return Object.assign({},ug,r)};of.buildOptions=bv,of.defaultOptions=ug;class Sv{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){e==="__proto__"&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){e.tagname==="__proto__"&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}var Av=Sv;const Nv=zh;function kv(r,e){const t={};if(r[e+3]==="O"&&r[e+4]==="C"&&r[e+5]==="T"&&r[e+6]==="Y"&&r[e+7]==="P"&&r[e+8]==="E"){e=e+9;let s=1,a=!1,n=!1,u="";for(;e"){if(n?r[e-1]==="-"&&r[e-2]==="-"&&(n=!1,s--):s--,s===0)break}else r[e]==="["?a=!0:u+=r[e];if(s!==0)throw new Error("Unclosed DOCTYPE")}else throw new Error("Invalid Tag instead of DOCTYPE");return{entities:t,i:e}}function Cv(r,e){let t="";for(;e0&&a&&t[2]!=="."||!e.leadingZeros&&n.length>0&&!a&&t[1]!==".")return r;{const l=Number(t),o=""+l;return o.search(/[eE]/)!==-1||i?e.eNotation?l:r:t.indexOf(".")!==-1?o==="0"&&u===""||o===u||a&&o==="-"+u?l:r:n?u===o||a+u===o?l:r:t===o||t===a+o?l:r}}else return r}}function Uv(r){return r&&r.indexOf(".")!==-1&&(r=r.replace(/0+$/,""),r==="."?r="0":r[0]==="."?r="0"+r:r[r.length-1]==="."&&(r=r.substr(0,r.length-1))),r}var jv=Lv;function $v(r){return typeof r=="function"?r:Array.isArray(r)?e=>{for(const t of r)if(typeof t=="string"&&e===t||t instanceof RegExp&&t.test(e))return!0}:()=>!1}var lg=$v;const cg=zh,Ro=Av,Kv=Ov,Hv=jv,Mv=lg;let Fv=class{constructor(r){this.options=r,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=Jv,this.parseXml=_v,this.parseTextData=qv,this.resolveNameSpace=Wv,this.buildAttributesMap=zv,this.isItStopNode=Yv,this.replaceEntitiesValue=Zv,this.readStopNodeData=tb,this.saveTextToParentTag=Qv,this.addChild=Xv,this.ignoreAttributesFn=Mv(this.options.ignoreAttributes)}};function Jv(r){const e=Object.keys(r);for(let t=0;t0)){u||(r=this.replaceEntitiesValue(r));const i=this.options.tagValueProcessor(e,r,t,a,n);return i==null?r:typeof i!=typeof r||i!==r?i:this.options.trimValues?lf(r,this.options.parseTagValue,this.options.numberParseOptions):r.trim()===r?lf(r,this.options.parseTagValue,this.options.numberParseOptions):r}}function Wv(r){if(this.options.removeNSPrefix){const e=r.split(":"),t=r.charAt(0)==="/"?"/":"";if(e[0]==="xmlns")return"";e.length===2&&(r=t+e[1])}return r}const Gv=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function zv(r,e,t){if(this.options.ignoreAttributes!==!0&&typeof r=="string"){const s=cg.getAllMatches(r,Gv),a=s.length,n={};for(let u=0;u",n,"Closing Tag is not closed.");let i=r.substring(n+2,u).trim();if(this.options.removeNSPrefix){const c=i.indexOf(":");c!==-1&&(i=i.substr(c+1))}this.options.transformTagName&&(i=this.options.transformTagName(i)),t&&(s=this.saveTextToParentTag(s,t,a));const l=a.substring(a.lastIndexOf(".")+1);if(i&&this.options.unpairedTags.indexOf(i)!==-1)throw new Error("Unpaired tag can not be used as closing tag: "));let o=0;l&&this.options.unpairedTags.indexOf(l)!==-1?(o=a.lastIndexOf(".",a.lastIndexOf(".")-1),this.tagsNodeStack.pop()):o=a.lastIndexOf("."),a=a.substring(0,o),t=this.tagsNodeStack.pop(),s="",n=u}else if(r[n+1]==="?"){let u=uf(r,n,!1,"?>");if(!u)throw new Error("Pi Tag is not closed.");if(s=this.saveTextToParentTag(s,t,a),!(this.options.ignoreDeclaration&&u.tagName==="?xml"||this.options.ignorePiTags)){const i=new Ro(u.tagName);i.add(this.options.textNodeName,""),u.tagName!==u.tagExp&&u.attrExpPresent&&(i[":@"]=this.buildAttributesMap(u.tagExp,a,u.tagName)),this.addChild(t,i,a)}n=u.closeIndex+1}else if(r.substr(n+1,3)==="!--"){const u=wn(r,"-->",n+4,"Comment is not closed.");if(this.options.commentPropName){const i=r.substring(n+4,u-2);s=this.saveTextToParentTag(s,t,a),t.add(this.options.commentPropName,[{[this.options.textNodeName]:i}])}n=u}else if(r.substr(n+1,2)==="!D"){const u=Kv(r,n);this.docTypeEntities=u.entities,n=u.i}else if(r.substr(n+1,2)==="!["){const u=wn(r,"]]>",n,"CDATA is not closed.")-2,i=r.substring(n+9,u);s=this.saveTextToParentTag(s,t,a);let l=this.parseTextData(i,t.tagname,a,!0,!1,!0,!0);l==null&&(l=""),this.options.cdataPropName?t.add(this.options.cdataPropName,[{[this.options.textNodeName]:i}]):t.add(this.options.textNodeName,l),n=u+2}else{let u=uf(r,n,this.options.removeNSPrefix),i=u.tagName;const l=u.rawTagName;let o=u.tagExp,c=u.attrExpPresent,m=u.closeIndex;this.options.transformTagName&&(i=this.options.transformTagName(i)),t&&s&&t.tagname!=="!xml"&&(s=this.saveTextToParentTag(s,t,a,!1));const h=t;if(h&&this.options.unpairedTags.indexOf(h.tagname)!==-1&&(t=this.tagsNodeStack.pop(),a=a.substring(0,a.lastIndexOf("."))),i!==e.tagname&&(a+=a?"."+i:i),this.isItStopNode(this.options.stopNodes,a,i)){let p="";if(o.length>0&&o.lastIndexOf("/")===o.length-1)i[i.length-1]==="/"?(i=i.substr(0,i.length-1),a=a.substr(0,a.length-1),o=i):o=o.substr(0,o.length-1),n=u.closeIndex;else if(this.options.unpairedTags.indexOf(i)!==-1)n=u.closeIndex;else{const w=this.readStopNodeData(r,l,m+1);if(!w)throw new Error("Unexpected end of ".concat(l));n=w.i,p=w.tagContent}const d=new Ro(i);i!==o&&c&&(d[":@"]=this.buildAttributesMap(o,a,i)),p&&(p=this.parseTextData(p,i,a,!0,c,!0,!0)),a=a.substr(0,a.lastIndexOf(".")),d.add(this.options.textNodeName,p),this.addChild(t,d,a)}else{if(o.length>0&&o.lastIndexOf("/")===o.length-1){i[i.length-1]==="/"?(i=i.substr(0,i.length-1),a=a.substr(0,a.length-1),o=i):o=o.substr(0,o.length-1),this.options.transformTagName&&(i=this.options.transformTagName(i));const p=new Ro(i);i!==o&&c&&(p[":@"]=this.buildAttributesMap(o,a,i)),this.addChild(t,p,a),a=a.substr(0,a.lastIndexOf("."))}else{const p=new Ro(i);this.tagsNodeStack.push(t),i!==o&&c&&(p[":@"]=this.buildAttributesMap(o,a,i)),this.addChild(t,p,a),t=p}s="",n=m}}else s+=r[n];return e.child};function Xv(r,e,t){const s=this.options.updateTag(e.tagname,t,e[":@"]);s===!1||(typeof s=="string"&&(e.tagname=s),r.addChild(e))}const Zv=function(r){if(this.options.processEntities){for(let e in this.docTypeEntities){const t=this.docTypeEntities[e];r=r.replace(t.regx,t.val)}for(let e in this.lastEntities){const t=this.lastEntities[e];r=r.replace(t.regex,t.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){const t=this.htmlEntities[e];r=r.replace(t.regex,t.val)}r=r.replace(this.ampEntity.regex,this.ampEntity.val)}return r};function Qv(r,e,t,s){return r&&(s===void 0&&(s=Object.keys(e.child).length===0),r=this.parseTextData(r,e.tagname,t,!1,e[":@"]?Object.keys(e[":@"]).length!==0:!1,s),r!==void 0&&r!==""&&e.add(this.options.textNodeName,r),r=""),r}function Yv(r,e,t){const s="*."+t;for(const a in r){const n=r[a];if(s===n||e===n)return!0}return!1}function eb(r,e,t=">"){let s,a="";for(let n=e;n",t,"".concat(e," is not closed"));if(r.substring(t+2,n).trim()===e&&(a--,a===0))return{tagContent:r.substring(s,t),i:n};t=n}else if(r[t+1]==="?")t=wn(r,"?>",t+1,"StopNode is not closed.");else if(r.substr(t+1,3)==="!--")t=wn(r,"-->",t+3,"StopNode is not closed.");else if(r.substr(t+1,2)==="![")t=wn(r,"]]>",t,"StopNode is not closed.")-2;else{const n=uf(r,t,">");n&&((n&&n.tagName)===e&&n.tagExp[n.tagExp.length-1]!=="/"&&a++,t=n.closeIndex)}}function lf(r,e,t){if(e&&typeof r=="string"){const s=r.trim();return s==="true"?!0:s==="false"?!1:Hv(r,t)}else return cg.isExist(r)?r:""}var sb=Fv,hg={};function rb(r,e){return mg(r,e)}function mg(r,e,t){let s;const a={};for(let n=0;n0&&(a[e.textNodeName]=s):s!==void 0&&(a[e.textNodeName]=s),a}function ab(r){const e=Object.keys(r);for(let t=0;t0&&(t=fb),fg(r,e,"",t)}function fg(r,e,t,s){let a="",n=!1;for(let u=0;u"),n=!1;continue}else if(l===e.commentPropName){a+=s+""),n=!0;continue}else if(l[0]==="?"){const d=zd(i[":@"],e),w=l==="?xml"?"":s;let y=i[l][0][e.textNodeName];y=y.length!==0?" "+y:"",a+=w+"<".concat(l).concat(y).concat(d,"?>"),n=!0;continue}let c=s;c!==""&&(c+=e.indentBy);const m=zd(i[":@"],e),h=s+"<".concat(l).concat(m),p=fg(i[l],e,o,c);e.unpairedTags.indexOf(l)!==-1?e.suppressUnpairedNode?a+=h+">":a+=h+"/>":(!p||p.length===0)&&e.suppressEmptyNode?a+=h+"/>":p&&p.endsWith(">")?a+=h+">".concat(p).concat(s,""):(a+=h+">",p&&s!==""&&(p.includes("/>")||p.includes("")),n=!0}return a}function pb(r){const e=Object.keys(r);for(let t=0;t0&&e.processEntities)for(let t=0;t","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function zr(r){this.options=Object.assign({},bb,r),this.options.ignoreAttributes===!0||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=vb(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=Nb),this.processTextOrObjNode=Sb,this.options.format?(this.indentate=Ab,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}zr.prototype.build=function(r){return this.options.preserveOrder?yb(r,this.options):(Array.isArray(r)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(r={[this.options.arrayNodeName]:r}),this.j2x(r,0,[]).val)},zr.prototype.j2x=function(r,e,t){let s="",a="";const n=t.join(".");for(let u in r)if(Object.prototype.hasOwnProperty.call(r,u))if(typeof r[u]>"u")this.isAttribute(u)&&(a+="");else if(r[u]===null)this.isAttribute(u)?a+="":u[0]==="?"?a+=this.indentate(e)+"<"+u+"?"+this.tagEndChar:a+=this.indentate(e)+"<"+u+"/"+this.tagEndChar;else if(r[u]instanceof Date)a+=this.buildTextValNode(r[u],u,"",e);else if(typeof r[u]!="object"){const i=this.isAttribute(u);if(i&&!this.ignoreAttributesFn(i,n))s+=this.buildAttrPairStr(i,""+r[u]);else if(!i)if(u===this.options.textNodeName){let l=this.options.tagValueProcessor(u,""+r[u]);a+=this.replaceEntitiesValue(l)}else a+=this.buildTextValNode(r[u],u,"",e)}else if(Array.isArray(r[u])){const i=r[u].length;let l="",o="";for(let c=0;c"u"))if(m===null)u[0]==="?"?a+=this.indentate(e)+"<"+u+"?"+this.tagEndChar:a+=this.indentate(e)+"<"+u+"/"+this.tagEndChar;else if(typeof m=="object")if(this.options.oneListGroup){const h=this.j2x(m,e+1,t.concat(u));l+=h.val,this.options.attributesGroupName&&m.hasOwnProperty(this.options.attributesGroupName)&&(o+=h.attrStr)}else l+=this.processTextOrObjNode(m,u,e,t);else if(this.options.oneListGroup){let h=this.options.tagValueProcessor(u,m);h=this.replaceEntitiesValue(h),l+=h}else l+=this.buildTextValNode(m,u,"",e)}this.options.oneListGroup&&(l=this.buildObjectNode(l,u,o,e)),a+=l}else if(this.options.attributesGroupName&&u===this.options.attributesGroupName){const i=Object.keys(r[u]),l=i.length;for(let o=0;o"+r+a:this.options.commentPropName!==!1&&e===this.options.commentPropName&&n.length===0?this.indentate(s)+"")+this.newLine:this.indentate(s)+"<"+e+t+n+this.tagEndChar+r+this.indentate(s)+a}},zr.prototype.closeTag=function(r){let e="";return this.options.unpairedTags.indexOf(r)!==-1?this.options.suppressUnpairedNode||(e="/"):this.options.suppressEmptyNode?e="/":e=">")+this.newLine;if(this.options.commentPropName!==!1&&e===this.options.commentPropName)return this.indentate(s)+"")+this.newLine;if(e[0]==="?")return this.indentate(s)+"<"+e+t+"?"+this.tagEndChar;{let a=this.options.tagValueProcessor(e,r);return a=this.replaceEntitiesValue(a),a===""?this.indentate(s)+"<"+e+t+this.closeTag(e)+this.tagEndChar:this.indentate(s)+"<"+e+t+">"+a+"0&&this.options.processEntities)for(let e=0;er===null?Gm().setApp("end_to_end_encryption").build():Gm().setApp("end_to_end_encryption").setUid(r.uid).build(),_e=Vb(Uf());class Ae{constructor(e={}){if("view"in e)this.fromUint8Array(e.view);else if("buffer"in e)this.fromArrayBuffer(e.buffer);else if("string"in e)this.fromString(e.string);else if("hexstring"in e)this.fromHexString(e.hexstring);else if("length"in e&&e.length>0){if(this.length=e.length,e.stub)for(let t=0;t=this.view.length||e<0)&&(e=0),(t>=this.view.length||t<0)&&(t=this.view.length-e);for(let a=e;a>1),this.view=new Uint8Array(this.buffer);const s=new Map;s.set("0",0),s.set("1",1),s.set("2",2),s.set("3",3),s.set("4",4),s.set("5",5),s.set("6",6),s.set("7",7),s.set("8",8),s.set("9",9),s.set("A",10),s.set("a",10),s.set("B",11),s.set("b",11),s.set("C",12),s.set("c",12),s.set("D",13),s.set("d",13),s.set("E",14),s.set("e",14),s.set("F",15),s.set("f",15);let a=0,n=0;for(let u=0;u=this.view.length||e<0)&&(e=0),(t>=this.view.length||t<0)&&(t=this.view.length-e);for(let a=e;athis.length-1)throw new Error("Wrong start position: ".concat(e));return new Ae({buffer:this._buffer.slice(e,e+t)})}slice(e=0,t=this.length){if(!e&&!this.length)return new Ae;if(e<0||e>this.length-1)throw new Error("Wrong start position: ".concat(e));return new Ae({buffer:this._buffer.slice(e,t)})}realloc(e){const t=new ArrayBuffer(e),s=new Uint8Array(t);e>this._view.length?s.set(this._view):s.set(new Uint8Array(this._buffer,0,e)),this._buffer=t,this._view=new Uint8Array(this._buffer)}append(e){const t=this.length,s=e.length,a=e._view.subarray();this.realloc(t+s),this._view.set(a,t)}insert(e,t=0,s=this.length-t){return t>this.length-1?!1:(s>this.length-t&&(s=this.length-t),s>e.length&&(s=e.length),s==e.length?this._view.set(e._view,t):this._view.set(e._view.subarray(0,s),t),!0)}isEqual(e){if(this.length!=e.length)return!1;for(let t=0;tu)return-1;const o=[];for(let c=0;c=l.position-l.length&&(m=!0):c-h<=l.position-l.length&&(m=!0),m&&(l.position=c,l.id=o,l.length=h)}}return l}findAllIn(e,t,s){let{start:a,length:n}=this.prepareFindParameters(t,s);const u=[];let i={id:-1,position:a};do{const l=i.position;if(i=this.findFirstIn(e,i.position,n),i.id==-1)break;n-=i.position-l,u.push({id:i.id,position:i.position})}while(!0);return u}findAllPatternIn(e,t,s){const{start:a,length:n}=this.prepareFindParameters(t,s),u=[],i=e.length;if(i>n)return-1;const l=Array.from(e.view);for(let o=0;o<=n-i;o++){let c=!0;const m=a+o;for(let h=0;h0;){if(l.right=this.findFirstIn(e,i?n-u+o:n+u-o,o,i),l.right.id==-1){u=o,i?n-=u:n=l.left.position,l.value=new Ae({buffer:this._buffer.slice(n,n+u)});break}if(l.right.position!=(i?l.left.position-e[l.right.id].length:l.left.position+e[l.right.id].length)){i?(n=l.right.position+e[l.right.id].length,u=l.left.position-l.right.position-e[l.right.id].length):(n=l.left.position,u=l.right.position-l.left.position-e[l.right.id].length),l.value=new Ae({buffer:this._buffer.slice(n,n+u)});break}l.left=l.right,o-=e[l.right.id].length}if(i){const c=l.right;l.right=l.left,l.left=c}return l}findAllNotIn(e,t,s){let{start:a,length:n}=this.prepareFindParameters(t,s);const u=[];let i={left:{id:-1,position:a},right:{id:-1,position:a},value:new Ae};do{const l=i.right.position;i=this.findFirstNotIn(e,i.right.position,n),n-=i.right.position-l,u.push({left:{id:i.left.id,position:i.left.position},right:{id:i.right.id,position:i.right.position},value:i.value})}while(i.right.id!=-1);return u}findFirstSequence(e,t,s,a){let{start:n,length:u,backward:i}=this.prepareFindParameters(t,s,a);const l=this.skipNotPatterns(e,n,u,i);if(l==-1)return{position:-1,value:new Ae};const o=this.skipPatterns(e,l,u-(i?n-l:l-n),i);i?(n=o,u=l-o):(n=l,u=o-l);const c=new Ae({buffer:this._buffer.slice(n,n+u)});return{position:o,value:c}}findAllSequences(e,t,s){let{start:a,length:n}=this.prepareFindParameters(t,s);const u=[];let i={position:a,value:new Ae};do{const l=i.position;i=this.findFirstSequence(e,i.position,n),i.position!=-1&&(n-=i.position-l,u.push({position:i.position,value:i.value}))}while(i.position!=-1);return u}findPairedPatterns(e,t,s,a){const n=[];if(e.isEqual(t))return n;const{start:u,length:i}=this.prepareFindParameters(s,a);let l=0;const o=this.findAllPatternIn(e,u,i);if(!Array.isArray(o)||o.length==0)return n;const c=this.findAllPatternIn(t,u,i);if(!Array.isArray(c)||c.length==0)return n;for(;lc[0])break;for(;o[l]=o.length)););n.push({left:o[l-1],right:c[0]}),o.splice(l-1,1),c.splice(0,1),l=0}return n.sort((m,h)=>m.left-h.left),n}findPairedArrays(e,t,s,a){const{start:n,length:u}=this.prepareFindParameters(s,a),i=[];let l=0;const o=this.findAllIn(e,n,u);if(o.length==0)return i;const c=this.findAllIn(t,n,u);if(c.length==0)return i;for(;lc[0].position)break;for(;o[l].position=o.length)););i.push({left:o[l-1],right:c[0]}),o.splice(l-1,1),c.splice(0,1),l=0}return i.sort((m,h)=>m.left.position-h.left.position),i}replacePattern(e,t,s,a,n=null){let u=[],i;const l={status:-1,searchPatternPositions:[],replacePatternPositions:[]},{start:o,length:c}=this.prepareFindParameters(s,a);if(n==null){if(u=this.findAllIn([e],o,c),u.length==0)return l}else u=n;l.searchPatternPositions.push(...Array.from(u,d=>d.position));const m=e.length-t.length,h=new ArrayBuffer(this.view.length-u.length*m),p=new Uint8Array(h);for(p.set(new Uint8Array(this.buffer,0,o)),i=0;i=n+u)return l}}return l}skipNotPatterns(e,t,s,a){const{start:n,length:u,backward:i}=this.prepareFindParameters(t,s,a);let l=-1;for(let o=0;othis.length&&(e=this.length),s?(t===null&&(t=e),t>e&&(t=e)):(t===null&&(t=this.length-e),t>this.length-e&&(t=this.length-e)),{start:e,length:t,backward:s}}}const Bb=16777216;class ta{constructor(e={}){this._stream=new Ae,this._length=0,this._start=0,this.backward=!1,this.appendBlock=0,this.prevLength=0,this.prevStart=0,"view"in e?this.stream=new Ae({view:e.view}):"buffer"in e?this.stream=new Ae({buffer:e.buffer}):"string"in e?this.stream=new Ae({string:e.string}):"hexstring"in e?this.stream=new Ae({hexstring:e.hexstring}):"stream"in e?this.stream=e.stream.slice():this.stream=new Ae,"backward"in e&&e.backward&&(this.backward=e.backward,this._start=this.stream.length),"length"in e&&e.length>0&&(this._length=e.length),"start"in e&&e.start&&e.start>0&&(this._start=e.start),"appendBlock"in e&&e.appendBlock&&e.appendBlock>0&&(this.appendBlock=e.appendBlock)}set stream(e){this._stream=e,this.prevLength=this._length,this._length=e.length,this.prevStart=this._start,this._start=0}get stream(){return this._stream}set length(e){this.prevLength=this._length,this._length=e}get length(){return this.appendBlock?this.start:this._length}set start(e){e>this.stream.length||(this.prevStart=this._start,this.prevLength=this._length,this._length-=this.backward?this._start-e:e-this._start,this._start=e)}get start(){return this._start}get buffer(){return this._stream.buffer.slice(0,this._length)}resetPosition(){this._start=this.prevStart,this._length=this.prevLength}findPattern(e,t=null){(t==null||t>this.length)&&(t=this.length);const s=this.stream.findPattern(e,this.start,this.length,this.backward);if(s==-1)return s;if(this.backward){if(sthis.start+e.length+t)return-1;return this.start=s,s}findFirstIn(e,t=null){(t==null||t>this.length)&&(t=this.length);const s=this.stream.findFirstIn(e,this.start,this.length,this.backward);if(s.id==-1)return s;if(this.backward){if(s.positionthis.start+e[s.id].length+t)return{id:-1,position:this.backward?0:this.start+this.length};return this.start=s.position,s}findAllIn(e){const t=this.backward?this.start-this.length:this.start;return this.stream.findAllIn(e,t,this.length)}findFirstNotIn(e,t=null){(t==null||t>this._length)&&(t=this._length);const s=this._stream.findFirstNotIn(e,this._start,this._length,this.backward);if(s.left.id==-1&&s.right.id==-1)return s;if(this.backward){if(s.right.id!=-1&&s.right.positionthis._start+e[s.left.id].length+t)return{left:{id:-1,position:this._start},right:{id:-1,position:0},value:new Ae};return this.backward?s.left.id==-1?this.start=0:this.start=s.left.position:s.right.id==-1?this.start=this._start+this._length:this.start=s.right.position,s}findAllNotIn(e){const t=this.backward?this._start-this._length:this._start;return this._stream.findAllNotIn(e,t,this._length)}findFirstSequence(e,t=null,s=null){(t==null||t>this._length)&&(t=this._length),(s==null||s>t)&&(s=t);const a=this._stream.findFirstSequence(e,this._start,t,this.backward);if(a.value.length==0)return a;if(this.backward){if(a.positionthis._start+a.value.length+s)return{position:-1,value:new Ae};return this.start=a.position,a}findAllSequences(e){const t=this.backward?this.start-this.length:this.start;return this.stream.findAllSequences(e,t,this.length)}findPairedPatterns(e,t,s=null){(s==null||s>this.length)&&(s=this.length);const a=this.backward?this.start-this.length:this.start,n=this.stream.findPairedPatterns(e,t,a,this.length);if(n.length){if(this.backward){if(n[0].rightthis.start+e.length+s)return[]}return n}findPairedArrays(e,t,s=null){(s==null||s>this.length)&&(s=this.length);const a=this.backward?this.start-this.length:this.start,n=this.stream.findPairedArrays(e,t,a,this.length);if(n.length){if(this.backward){if(n[0].right.positionthis.start+e[n[0].left.id].length+s)return[]}return n}replacePattern(e,t){const s=this.backward?this.start-this.length:this.start;return this.stream.replacePattern(e,t,s,this.length)}skipPatterns(e){const t=this.stream.skipPatterns(e,this.start,this.length,this.backward);return this.start=t,t}skipNotPatterns(e){const t=this.stream.skipNotPatterns(e,this.start,this.length,this.backward);return t==-1?-1:(this.start=t,t)}append(e){this.beforeAppend(e.length),this._stream.view.set(e.view,this._start),this._length+=e.length*2,this.start=this._start+e.length,this.prevLength-=e.length*2}appendView(e){this.beforeAppend(e.length),this._stream.view.set(e,this._start),this._length+=e.length*2,this.start=this._start+e.length,this.prevLength-=e.length*2}appendChar(e){this.beforeAppend(1),this._stream.view[this._start]=e,this._length+=2,this.start=this._start+1,this.prevLength-=2}appendUint16(e){this.beforeAppend(2);const t=new Uint16Array([e]),s=new Uint8Array(t.buffer);this.stream.view[this._start]=s[1],this._stream.view[this._start+1]=s[0],this._length+=4,this.start=this._start+2,this.prevLength-=4}appendUint24(e){this.beforeAppend(3);const t=new Uint32Array([e]),s=new Uint8Array(t.buffer);this._stream.view[this._start]=s[2],this._stream.view[this._start+1]=s[1],this._stream.view[this._start+2]=s[0],this._length+=6,this.start=this._start+3,this.prevLength-=6}appendUint32(e){this.beforeAppend(4);const t=new Uint32Array([e]),s=new Uint8Array(t.buffer);this._stream.view[this._start]=s[3],this._stream.view[this._start+1]=s[2],this._stream.view[this._start+2]=s[1],this._stream.view[this._start+3]=s[0],this._length+=8,this.start=this._start+4,this.prevLength-=8}appendInt16(e){this.beforeAppend(2);const t=new Int16Array([e]),s=new Uint8Array(t.buffer);this._stream.view[this._start]=s[1],this._stream.view[this._start+1]=s[0],this._length+=4,this.start=this._start+2,this.prevLength-=4}appendInt32(e){this.beforeAppend(4);const t=new Int32Array([e]),s=new Uint8Array(t.buffer);this._stream.view[this._start]=s[3],this._stream.view[this._start+1]=s[2],this._stream.view[this._start+2]=s[1],this._stream.view[this._start+3]=s[0],this._length+=8,this.start=this._start+4,this.prevLength-=8}getBlock(e,t=!0){if(this._length<=0)return new Uint8Array(0);this._lengththis._stream.length&&(e>this.appendBlock&&(this.appendBlock=e+ta.APPEND_BLOCK),this._stream.realloc(this._stream.length+this.appendBlock))}}ta.APPEND_BLOCK=1e3;function Pb(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function pg(r,...e){if(!Pb(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function _d(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function Ob(r,e){pg(r);const t=e.outputLen;if(r.lengthnew DataView(r.buffer,r.byteOffset,r.byteLength),us=(r,e)=>r<<32-e|r>>>e,dm=(r,e)=>r<>>32-e>>>0;function Db(r){if(typeof r!="string")throw new Error("utf8ToBytes expected string, got "+typeof r);return new Uint8Array(new TextEncoder().encode(r))}function gg(r){return typeof r=="string"&&(r=Db(r)),pg(r),r}class Tb{clone(){return this._cloneInto()}}function _h(r){const e=s=>r().update(gg(s)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Rb(r,e,t,s){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,s);const a=BigInt(32),n=BigInt(4294967295),u=Number(t>>a&n),i=Number(t&n),l=s?4:0,o=s?0:4;r.setUint32(e+l,u,s),r.setUint32(e+o,i,s)}const wg=(r,e,t)=>r&e^~r&t,yg=(r,e,t)=>r&e^r&t^e&t;class Xf extends Tb{constructor(e,t,s,a){super(),this.blockLen=e,this.outputLen=t,this.padOffset=s,this.isLE=a,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=fm(this.buffer)}update(e){_d(this);const{view:t,buffer:s,blockLen:a}=this;e=gg(e);const n=e.length;for(let u=0;ua-u&&(this.process(s,0),u=0);for(let m=u;mc.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;mnew Lb),jb=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Xs=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Zs=new Uint32Array(64);let $b=class extends Xf{constructor(){super(64,32,8,!1),this.A=Xs[0]|0,this.B=Xs[1]|0,this.C=Xs[2]|0,this.D=Xs[3]|0,this.E=Xs[4]|0,this.F=Xs[5]|0,this.G=Xs[6]|0,this.H=Xs[7]|0}get(){const{A:r,B:e,C:t,D:s,E:a,F:n,G:u,H:i}=this;return[r,e,t,s,a,n,u,i]}set(r,e,t,s,a,n,u,i){this.A=r|0,this.B=e|0,this.C=t|0,this.D=s|0,this.E=a|0,this.F=n|0,this.G=u|0,this.H=i|0}process(r,e){for(let c=0;c<16;c++,e+=4)Zs[c]=r.getUint32(e,!1);for(let c=16;c<64;c++){const m=Zs[c-15],h=Zs[c-2],p=us(m,7)^us(m,18)^m>>>3,d=us(h,17)^us(h,19)^h>>>10;Zs[c]=d+Zs[c-7]+p+Zs[c-16]|0}let{A:t,B:s,C:a,D:n,E:u,F:i,G:l,H:o}=this;for(let c=0;c<64;c++){const m=us(u,6)^us(u,11)^us(u,25),h=o+m+wg(u,i,l)+jb[c]+Zs[c]|0,p=(us(t,2)^us(t,13)^us(t,22))+yg(t,s,a)|0;o=l,l=i,i=u,u=n+h|0,n=a,a=s,s=t,t=h+p|0}t=t+this.A|0,s=s+this.B|0,a=a+this.C|0,n=n+this.D|0,u=u+this.E|0,i=i+this.F|0,l=l+this.G|0,o=o+this.H|0,this.set(t,s,a,n,u,i,l,o)}roundClean(){Zs.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};const Kb=_h(()=>new $b),dc=BigInt(2**32-1),cf=BigInt(32);function vg(r,e=!1){return e?{h:Number(r&dc),l:Number(r>>cf&dc)}:{h:Number(r>>cf&dc)|0,l:Number(r&dc)|0}}function Hb(r,e=!1){let t=new Uint32Array(r.length),s=new Uint32Array(r.length);for(let a=0;aBigInt(r>>>0)<>>0),Fb=(r,e,t)=>r>>>t,Jb=(r,e,t)=>r<<32-t|e>>>t,qb=(r,e,t)=>r>>>t|e<<32-t,Wb=(r,e,t)=>r<<32-t|e>>>t,Gb=(r,e,t)=>r<<64-t|e>>>t-32,zb=(r,e,t)=>r>>>t-32|e<<64-t,_b=(r,e)=>e,Xb=(r,e)=>r,Zb=(r,e,t)=>r<>>32-t,Qb=(r,e,t)=>e<>>32-t,Yb=(r,e,t)=>e<>>64-t,e0=(r,e,t)=>r<>>64-t;function t0(r,e,t,s){const a=(e>>>0)+(s>>>0);return{h:r+t+(a/2**32|0)|0,l:a|0}}const s0=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),r0=(r,e,t,s)=>e+t+s+(r/2**32|0)|0,a0=(r,e,t,s)=>(r>>>0)+(e>>>0)+(t>>>0)+(s>>>0),n0=(r,e,t,s,a)=>e+t+s+a+(r/2**32|0)|0,i0=(r,e,t,s,a)=>(r>>>0)+(e>>>0)+(t>>>0)+(s>>>0)+(a>>>0),o0=(r,e,t,s,a,n)=>e+t+s+a+n+(r/2**32|0)|0,te={fromBig:vg,split:Hb,toBig:Mb,shrSH:Fb,shrSL:Jb,rotrSH:qb,rotrSL:Wb,rotrBH:Gb,rotrBL:zb,rotr32H:_b,rotr32L:Xb,rotlSH:Zb,rotlSL:Qb,rotlBH:Yb,rotlBL:e0,add:t0,add3L:s0,add3H:r0,add4L:a0,add4H:n0,add5H:o0,add5L:i0},[u0,l0]=te.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),Qs=new Uint32Array(80),Ys=new Uint32Array(80);let bg=class extends Xf{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:r,Al:e,Bh:t,Bl:s,Ch:a,Cl:n,Dh:u,Dl:i,Eh:l,El:o,Fh:c,Fl:m,Gh:h,Gl:p,Hh:d,Hl:w}=this;return[r,e,t,s,a,n,u,i,l,o,c,m,h,p,d,w]}set(r,e,t,s,a,n,u,i,l,o,c,m,h,p,d,w){this.Ah=r|0,this.Al=e|0,this.Bh=t|0,this.Bl=s|0,this.Ch=a|0,this.Cl=n|0,this.Dh=u|0,this.Dl=i|0,this.Eh=l|0,this.El=o|0,this.Fh=c|0,this.Fl=m|0,this.Gh=h|0,this.Gl=p|0,this.Hh=d|0,this.Hl=w|0}process(r,e){for(let g=0;g<16;g++,e+=4)Qs[g]=r.getUint32(e),Ys[g]=r.getUint32(e+=4);for(let g=16;g<80;g++){const b=Qs[g-15]|0,N=Ys[g-15]|0,S=te.rotrSH(b,N,1)^te.rotrSH(b,N,8)^te.shrSH(b,N,7),E=te.rotrSL(b,N,1)^te.rotrSL(b,N,8)^te.shrSL(b,N,7),x=Qs[g-2]|0,C=Ys[g-2]|0,P=te.rotrSH(x,C,19)^te.rotrBH(x,C,61)^te.shrSH(x,C,6),K=te.rotrSL(x,C,19)^te.rotrBL(x,C,61)^te.shrSL(x,C,6),L=te.add4L(E,K,Ys[g-7],Ys[g-16]),j=te.add4H(L,S,P,Qs[g-7],Qs[g-16]);Qs[g]=j|0,Ys[g]=L|0}let{Ah:t,Al:s,Bh:a,Bl:n,Ch:u,Cl:i,Dh:l,Dl:o,Eh:c,El:m,Fh:h,Fl:p,Gh:d,Gl:w,Hh:y,Hl:k}=this;for(let g=0;g<80;g++){const b=te.rotrSH(c,m,14)^te.rotrSH(c,m,18)^te.rotrBH(c,m,41),N=te.rotrSL(c,m,14)^te.rotrSL(c,m,18)^te.rotrBL(c,m,41),S=c&h^~c&d,E=m&p^~m&w,x=te.add5L(k,N,E,l0[g],Ys[g]),C=te.add5H(x,y,b,S,u0[g],Qs[g]),P=x|0,K=te.rotrSH(t,s,28)^te.rotrBH(t,s,34)^te.rotrBH(t,s,39),L=te.rotrSL(t,s,28)^te.rotrBL(t,s,34)^te.rotrBL(t,s,39),j=t&a^t&u^a&u,U=s&n^s&i^n&i;y=d|0,k=w|0,d=h|0,w=p|0,h=c|0,p=m|0,{h:c,l:m}=te.add(l|0,o|0,C|0,P|0),l=u|0,o=i|0,u=a|0,i=n|0,a=t|0,n=s|0;const M=te.add3L(P,L,U);t=te.add3H(M,C,K,j),s=M|0}({h:t,l:s}=te.add(this.Ah|0,this.Al|0,t|0,s|0)),{h:a,l:n}=te.add(this.Bh|0,this.Bl|0,a|0,n|0),{h:u,l:i}=te.add(this.Ch|0,this.Cl|0,u|0,i|0),{h:l,l:o}=te.add(this.Dh|0,this.Dl|0,l|0,o|0),{h:c,l:m}=te.add(this.Eh|0,this.El|0,c|0,m|0),{h,l:p}=te.add(this.Fh|0,this.Fl|0,h|0,p|0),{h:d,l:w}=te.add(this.Gh|0,this.Gl|0,d|0,w|0),{h:y,l:k}=te.add(this.Hh|0,this.Hl|0,y|0,k|0),this.set(t,s,a,n,u,i,l,o,c,m,h,p,d,w,y,k)}roundClean(){Qs.fill(0),Ys.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},c0=class extends bg{constructor(){super(),this.Ah=-876896931,this.Al=-1056596264,this.Bh=1654270250,this.Bl=914150663,this.Ch=-1856437926,this.Cl=812702999,this.Dh=355462360,this.Dl=-150054599,this.Eh=1731405415,this.El=-4191439,this.Fh=-1900787065,this.Fl=1750603025,this.Gh=-619958771,this.Gl=1694076839,this.Hh=1203062813,this.Hl=-1090891868,this.outputLen=48}};const h0=_h(()=>new bg),m0=_h(()=>new c0),Ue=new ArrayBuffer(0),v="";class he extends TypeError{constructor(){super(...arguments),this.name=he.NAME}static isType(e,t){if(typeof t=="string"){if(t==="Array"&&Array.isArray(e)||t==="ArrayBuffer"&&e instanceof ArrayBuffer||t==="ArrayBufferView"&&ArrayBuffer.isView(e)||typeof e===t)return!0}else if(e instanceof t)return!0;return!1}static assert(e,t,...s){for(const n of s)if(this.isType(e,n))return;const a=s.map(n=>n instanceof Function&&"name"in n?n.name:"".concat(n));throw new he("Parameter '".concat(t,"' is not of type ").concat(a.length>1?"(".concat(a.join(" or "),")"):a[0]))}}he.NAME="ArgumentError";class ne extends TypeError{static assert(...e){let t=null,s,a;typeof e[0]=="string"?(t=e[0],s=e[1],a=e.slice(2)):(s=e[0],a=e.slice(1)),he.assert(s,"parameters","object");for(const n of a)if(s[n]==null)throw new ne(n,t)}static assertEmpty(e,t,s){if(e==null)throw new ne(t,s)}constructor(e,t=null,s){super(),this.name=ne.NAME,this.field=e,t&&(this.target=t),s?this.message=s:this.message="Absent mandatory parameter '".concat(e,"' ").concat(t?" in '".concat(t,"'"):v)}}ne.NAME="ParameterError";class O extends Error{static assertSchema(e,t){if(!e.verified)throw new Error("Object's schema was not verified against input data for ".concat(t))}static assert(e,t){if(e.offset===-1)throw new O("Error during parsing of ASN.1 data. Data is not correct for '".concat(t,"'."))}constructor(e){super(e),this.name="AsnError"}}class D{static blockName(){return this.CLASS_NAME}static fromBER(e){const t=Le(e);O.assert(t,this.name);try{return new this({schema:t.result})}catch(s){throw new O("Cannot create '".concat(this.CLASS_NAME,"' from ASN.1 object"))}}static defaultValues(e){throw new Error("Invalid member name for ".concat(this.CLASS_NAME," class: ").concat(e))}static schema(e={}){throw new Error("Method '".concat(this.CLASS_NAME,".schema' should be overridden"))}get className(){return this.constructor.CLASS_NAME}toString(e="hex"){let t;try{t=this.toSchema()}catch(s){t=this.toSchema(!0)}return ce.ToString(t.toBER(),e)}}D.CLASS_NAME="PkiObject";function Hr(r){let e=!1,t=v;const s=r.trim();for(let a=0;anew _r({schema:s}))),this.valueBeforeDecode=t.result.RDN.valueBeforeDecodeView.slice().buffer}toSchema(){if(this.valueBeforeDecode.byteLength===0)return new A({value:[new Je({value:Array.from(this.typesAndValues,t=>t.toSchema())})]});const e=Le(this.valueBeforeDecode);if(O.assert(e,"RelativeDistinguishedNames"),!(e.result instanceof A))throw new Error("ASN.1 result should be SEQUENCE");return e.result}toJSON(){return{typesAndValues:Array.from(this.typesAndValues,e=>e.toJSON())}}isEqual(e){if(e instanceof me){if(this.typesAndValues.length!==e.typesAndValues.length)return!1;for(const[t,s]of this.typesAndValues.entries())if(s.isEqual(e.typesAndValues[t])===!1)return!1;return!0}return e instanceof ArrayBuffer?Zl(this.valueBeforeDecode,e):!1}}me.CLASS_NAME="RelativeDistinguishedNames";const Zo="type",Qo="value";function f0(r={},e=!1){const t=f(r,"names",{});return new A({optional:e,value:[new I({optional:!0,idBlock:{tagClass:2,tagNumber:1},name:t.country_name||v,value:[new Ne({value:[new Hc,new Ts]})]}),new I({optional:!0,idBlock:{tagClass:2,tagNumber:2},name:t.administration_domain_name||v,value:[new Ne({value:[new Hc,new Ts]})]}),new _({optional:!0,idBlock:{tagClass:3,tagNumber:0},name:t.network_address||v,isHexOnly:!0}),new _({optional:!0,idBlock:{tagClass:3,tagNumber:1},name:t.terminal_identifier||v,isHexOnly:!0}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:2},name:t.private_domain_name||v,value:[new Ne({value:[new Hc,new Ts]})]}),new _({optional:!0,idBlock:{tagClass:3,tagNumber:3},name:t.organization_name||v,isHexOnly:!0}),new _({optional:!0,name:t.numeric_user_identifier||v,idBlock:{tagClass:3,tagNumber:4},isHexOnly:!0}),new I({optional:!0,name:t.personal_name||v,idBlock:{tagClass:3,tagNumber:5},value:[new _({idBlock:{tagClass:3,tagNumber:0},isHexOnly:!0}),new _({optional:!0,idBlock:{tagClass:3,tagNumber:1},isHexOnly:!0}),new _({optional:!0,idBlock:{tagClass:3,tagNumber:2},isHexOnly:!0}),new _({optional:!0,idBlock:{tagClass:3,tagNumber:3},isHexOnly:!0})]}),new I({optional:!0,name:t.organizational_unit_names||v,idBlock:{tagClass:3,tagNumber:6},value:[new Z({value:new Ts})]})]})}function d0(r=!1){return new A({optional:r,value:[new Ts,new Ts]})}function p0(r=!1){return new Je({optional:r,value:[new _({optional:!0,idBlock:{tagClass:3,tagNumber:0},isHexOnly:!0}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new X]})]})}class ue extends D{constructor(e={}){super(),this.type=f(e,Zo,ue.defaultValues(Zo)),this.value=f(e,Qo,ue.defaultValues(Qo)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Zo:return 9;case Qo:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Zo:return t===ue.defaultValues(e);case Qo:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new Ne({value:[new I({idBlock:{tagClass:3,tagNumber:0},name:t.blockName||v,value:[new J,new I({idBlock:{tagClass:3,tagNumber:0},value:[new X]})]}),new _({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:1}}),new _({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:2}}),new I({idBlock:{tagClass:3,tagNumber:3},name:t.blockName||v,value:[f0(t.builtInStandardAttributes||{},!1),d0(!0),p0(!0)]}),new I({idBlock:{tagClass:3,tagNumber:4},name:t.blockName||v,value:[me.schema(t.directoryName||{})]}),new I({idBlock:{tagClass:3,tagNumber:5},name:t.blockName||v,value:[new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Ne({value:[new Ym,new Ts,new Qm,new kh,new Zm]})]}),new I({idBlock:{tagClass:3,tagNumber:1},value:[new Ne({value:[new Ym,new Ts,new Qm,new kh,new Zm]})]})]}),new _({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:6}}),new _({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:7}}),new _({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:8}})]})}fromSchema(e){T(e,["blockName","otherName","rfc822Name","dNSName","x400Address","directoryName","ediPartyName","uniformResourceIdentifier","iPAddress","registeredID"]);const t=R(e,e,ue.schema({names:{blockName:"blockName",otherName:"otherName",rfc822Name:"rfc822Name",dNSName:"dNSName",x400Address:"x400Address",directoryName:{names:{blockName:"directoryName"}},ediPartyName:"ediPartyName",uniformResourceIdentifier:"uniformResourceIdentifier",iPAddress:"iPAddress",registeredID:"registeredID"}}));switch(O.assertSchema(t,this.className),this.type=t.result.blockName.idBlock.tagNumber,this.type){case 0:this.value=t.result.blockName;break;case 1:case 2:case 6:{const s=t.result.blockName;s.idBlock.tagClass=1,s.idBlock.tagNumber=22;const a=s.toBER(!1),n=Le(a);O.assert(n,"GeneralName value"),this.value=n.result.valueBlock.value}break;case 3:this.value=t.result.blockName;break;case 4:this.value=new me({schema:t.result.directoryName});break;case 5:this.value=t.result.ediPartyName;break;case 7:this.value=new $({valueHex:t.result.blockName.valueBlock.valueHex});break;case 8:{const s=t.result.blockName;s.idBlock.tagClass=1,s.idBlock.tagNumber=6;const a=s.toBER(!1),n=Le(a);O.assert(n,"GeneralName registeredID"),this.value=n.result.valueBlock.toString()}break}}toSchema(){switch(this.type){case 0:case 3:case 5:return new I({idBlock:{tagClass:3,tagNumber:this.type},value:[this.value]});case 1:case 2:case 6:{const e=new Op({value:this.value});return e.idBlock.tagClass=3,e.idBlock.tagNumber=this.type,e}case 4:return new I({idBlock:{tagClass:3,tagNumber:4},value:[this.value.toSchema()]});case 7:{const e=this.value;return e.idBlock.tagClass=3,e.idBlock.tagNumber=this.type,e}case 8:{const e=new J({value:this.value});return e.idBlock.tagClass=3,e.idBlock.tagNumber=this.type,e}default:return ue.schema()}}toJSON(){const e={type:this.type,value:v};if(typeof this.value=="string")e.value=this.value;else try{e.value=this.value.toJSON()}catch(t){}return e}}ue.CLASS_NAME="GeneralName";const Yo="accessMethod",eu="accessLocation",g0=[Yo,eu];class Nn extends D{constructor(e={}){super(),this.accessMethod=f(e,Yo,Nn.defaultValues(Yo)),this.accessLocation=f(e,eu,Nn.defaultValues(eu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Yo:return v;case eu:return new ue;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.accessMethod||v}),ue.schema(t.accessLocation||{})]})}fromSchema(e){T(e,g0);const t=R(e,e,Nn.schema({names:{accessMethod:Yo,accessLocation:{names:{blockName:eu}}}}));O.assertSchema(t,this.className),this.accessMethod=t.result.accessMethod.valueBlock.toString(),this.accessLocation=new ue({schema:t.result.accessLocation})}toSchema(){return new A({value:[new J({value:this.accessMethod}),this.accessLocation.toSchema()]})}toJSON(){return{accessMethod:this.accessMethod,accessLocation:this.accessLocation.toJSON()}}}Nn.CLASS_NAME="AccessDescription";const rr="seconds",ar="millis",nr="micros";class Dt extends D{constructor(e={}){super(),rr in e&&(this.seconds=f(e,rr,Dt.defaultValues(rr))),ar in e&&(this.millis=f(e,ar,Dt.defaultValues(ar))),nr in e&&(this.micros=f(e,nr,Dt.defaultValues(nr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case rr:case ar:case nr:return 0;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case rr:case ar:case nr:return t===Dt.defaultValues(e);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,optional:!0,value:[new B({optional:!0,name:t.seconds||v}),new _({name:t.millis||v,optional:!0,idBlock:{tagClass:3,tagNumber:0}}),new _({name:t.micros||v,optional:!0,idBlock:{tagClass:3,tagNumber:1}})]})}fromSchema(e){T(e,[rr,ar,nr]);const t=R(e,e,Dt.schema({names:{seconds:rr,millis:ar,micros:nr}}));if(O.assertSchema(t,this.className),"seconds"in t.result&&(this.seconds=t.result.seconds.valueBlock.valueDec),"millis"in t.result){const s=new B({valueHex:t.result.millis.valueBlock.valueHex});this.millis=s.valueBlock.valueDec}if("micros"in t.result){const s=new B({valueHex:t.result.micros.valueBlock.valueHex});this.micros=s.valueBlock.valueDec}}toSchema(){const e=[];if(this.seconds!==void 0&&e.push(new B({value:this.seconds})),this.millis!==void 0){const t=new B({value:this.millis});e.push(new _({idBlock:{tagClass:3,tagNumber:0},valueHex:t.valueBlock.valueHexView}))}if(this.micros!==void 0){const t=new B({value:this.micros});e.push(new _({idBlock:{tagClass:3,tagNumber:1},valueHex:t.valueBlock.valueHexView}))}return new A({value:e})}toJSON(){const e={};return this.seconds!==void 0&&(e.seconds=this.seconds),this.millis!==void 0&&(e.millis=this.millis),this.micros!==void 0&&(e.micros=this.micros),e}}Dt.CLASS_NAME="Accuracy";const gc="algorithmId",jo="algorithmParams",Sg="algorithm",hf="params",w0=[Sg,hf];class V extends D{constructor(e={}){super(),this.algorithmId=f(e,gc,V.defaultValues(gc)),jo in e&&(this.algorithmParams=f(e,jo,V.defaultValues(jo))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case gc:return v;case jo:return new X;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case gc:return t===v;case jo:return t instanceof X;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,optional:t.optional||!1,value:[new J({name:t.algorithmIdentifier||v}),new X({name:t.algorithmParams||v,optional:!0})]})}fromSchema(e){T(e,w0);const t=R(e,e,V.schema({names:{algorithmIdentifier:Sg,algorithmParams:hf}}));O.assertSchema(t,this.className),this.algorithmId=t.result.algorithm.valueBlock.toString(),hf in t.result&&(this.algorithmParams=t.result.params)}toSchema(){const e=[];return e.push(new J({value:this.algorithmId})),this.algorithmParams&&!(this.algorithmParams instanceof X)&&e.push(this.algorithmParams),new A({value:e})}toJSON(){const e={algorithmId:this.algorithmId};return this.algorithmParams&&!(this.algorithmParams instanceof X)&&(e.algorithmParams=this.algorithmParams.toJSON()),e}isEqual(e){return!(e instanceof V)||this.algorithmId!==e.algorithmId?!1:this.algorithmParams?e.algorithmParams?JSON.stringify(this.algorithmParams)===JSON.stringify(e.algorithmParams):!1:!e.algorithmParams}}V.CLASS_NAME="AlgorithmIdentifier";const qn="altNames",y0=[qn];class Co extends D{constructor(e={}){super(),this.altNames=f(e,qn,Co.defaultValues(qn)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case qn:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.altNames||v,value:ue.schema()})]})}fromSchema(e){T(e,y0);const t=R(e,e,Co.schema({names:{altNames:qn}}));O.assertSchema(t,this.className),qn in t.result&&(this.altNames=Array.from(t.result.altNames,s=>new ue({schema:s})))}toSchema(){return new A({value:Array.from(this.altNames,e=>e.toSchema())})}toJSON(){return{altNames:Array.from(this.altNames,e=>e.toJSON())}}}Co.CLASS_NAME="AltName";const Wn="type",Gn="values",v0=[Wn,Gn];class ge extends D{constructor(e={}){super(),this.type=f(e,Wn,ge.defaultValues(Wn)),this.values=f(e,Gn,ge.defaultValues(Gn)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Wn:return v;case Gn:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Wn:return t===v;case Gn:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.type||v}),new Je({name:t.setName||v,value:[new Z({name:t.values||v,value:new X})]})]})}fromSchema(e){T(e,v0);const t=R(e,e,ge.schema({names:{type:Wn,values:Gn}}));O.assertSchema(t,this.className),this.type=t.result.type.valueBlock.toString(),this.values=t.result.values}toSchema(){return new A({value:[new J({value:this.type}),new Je({value:this.values})]})}toJSON(){return{type:this.type,values:Array.from(this.values,e=>e.toJSON())}}}ge.CLASS_NAME="Attribute";const tu="notBeforeTime",su="notAfterTime",b0=[tu,su];class as extends D{constructor(e={}){super(),this.notBeforeTime=f(e,tu,as.defaultValues(tu)),this.notAfterTime=f(e,su,as.defaultValues(su)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case tu:case su:return new Date(0,0,0);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new ke({name:t.notBeforeTime||v}),new ke({name:t.notAfterTime||v})]})}fromSchema(e){T(e,b0);const t=R(e,e,as.schema({names:{notBeforeTime:tu,notAfterTime:su}}));O.assertSchema(t,this.className),this.notBeforeTime=t.result.notBeforeTime.toDate(),this.notAfterTime=t.result.notAfterTime.toDate()}toSchema(){return new A({value:[new ke({valueDate:this.notBeforeTime}),new ke({valueDate:this.notAfterTime})]})}toJSON(){return{notBeforeTime:this.notBeforeTime,notAfterTime:this.notAfterTime}}}as.CLASS_NAME="AttCertValidityPeriod";const $o="names",Zd="generalNames";class qe extends D{constructor(e={}){super(),this.names=f(e,$o,qe.defaultValues($o)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case"names":return[];default:return super.defaultValues(e)}}static schema(e={},t=!1){const s=f(e,$o,{});return new A({optional:t,name:s.blockName||v,value:[new Z({name:s.generalNames||v,value:ue.schema()})]})}fromSchema(e){T(e,[$o,Zd]);const t=R(e,e,qe.schema({names:{blockName:$o,generalNames:Zd}}));O.assertSchema(t,this.className),this.names=Array.from(t.result.generalNames,s=>new ue({schema:s}))}toSchema(){return new A({value:Array.from(this.names,e=>e.toSchema())})}toJSON(){return{names:Array.from(this.names,e=>e.toJSON())}}}qe.CLASS_NAME="GeneralNames";const S0="2.5.29.9",A0="2.5.29.14",N0="2.5.29.15",k0="2.5.29.16",Ag="2.5.29.17",Ng="2.5.29.18",Zf="2.5.29.19",C0="2.5.29.20",E0="2.5.29.27",x0="2.5.29.21",I0="2.5.29.24",kg="2.5.29.28",Cg="2.5.29.29",Eg="2.5.29.30",xg="2.5.29.31",Qf="2.5.29.46",Ig="2.5.29.32",$t="2.5.29.32.0",V0="1.3.6.1.4.1.311.21.10",Vg="2.5.29.33",Yf="2.5.29.35",Bg="2.5.29.36",B0="2.5.29.37",P0="2.5.29.54",ed="1.3.6.1.5.5.7.1.1",O0="1.3.6.1.5.5.7.1.11",D0="1.3.6.1.4.1.11129.2.4.2",T0="1.3.6.1.4.1.311.21.7",R0="1.3.6.1.4.1.311.21.1",L0="1.3.6.1.5.5.7.1.3",td="1.2.840.113549.1.7.1",Pg="1.2.840.113549.1.7.2",Og="1.2.840.113549.1.7.3",Dg="1.2.840.113549.1.7.6",U0="1.2.840.113549.1.9.16.1.4",Qd="1.2.840.113549.1.9.22.1",j0="1.2.840.113549.1.9.22.2",Yd="1.2.840.113549.1.9.22.3",ep="1.2.840.113549.1.9.23.1",$0="1.3.6.1.5.5.7",K0="".concat($0,".48"),qc="".concat(K0,".1.1"),da="keyIdentifier",pa="authorityCertIssuer",ga="authorityCertSerialNumber",H0=[da,pa,ga];class Xr extends D{constructor(e={}){super(),da in e&&(this.keyIdentifier=f(e,da,Xr.defaultValues(da))),pa in e&&(this.authorityCertIssuer=f(e,pa,Xr.defaultValues(pa))),ga in e&&(this.authorityCertSerialNumber=f(e,ga,Xr.defaultValues(ga))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case da:return new $;case pa:return[];case ga:return new B;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new _({name:t.keyIdentifier||v,optional:!0,idBlock:{tagClass:3,tagNumber:0}}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new Z({name:t.authorityCertIssuer||v,value:ue.schema()})]}),new _({name:t.authorityCertSerialNumber||v,optional:!0,idBlock:{tagClass:3,tagNumber:2}})]})}fromSchema(e){T(e,H0);const t=R(e,e,Xr.schema({names:{keyIdentifier:da,authorityCertIssuer:pa,authorityCertSerialNumber:ga}}));O.assertSchema(t,this.className),da in t.result&&(this.keyIdentifier=new $({valueHex:t.result.keyIdentifier.valueBlock.valueHex})),pa in t.result&&(this.authorityCertIssuer=Array.from(t.result.authorityCertIssuer,s=>new ue({schema:s}))),ga in t.result&&(this.authorityCertSerialNumber=new B({valueHex:t.result.authorityCertSerialNumber.valueBlock.valueHex}))}toSchema(){const e=[];return this.keyIdentifier&&e.push(new _({idBlock:{tagClass:3,tagNumber:0},valueHex:this.keyIdentifier.valueBlock.valueHexView})),this.authorityCertIssuer&&e.push(new I({idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.authorityCertIssuer,t=>t.toSchema())})),this.authorityCertSerialNumber&&e.push(new _({idBlock:{tagClass:3,tagNumber:2},valueHex:this.authorityCertSerialNumber.valueBlock.valueHexView})),new A({value:e})}toJSON(){const e={};return this.keyIdentifier&&(e.keyIdentifier=this.keyIdentifier.toJSON()),this.authorityCertIssuer&&(e.authorityCertIssuer=Array.from(this.authorityCertIssuer,t=>t.toJSON())),this.authorityCertSerialNumber&&(e.authorityCertSerialNumber=this.authorityCertSerialNumber.toJSON()),e}}Xr.CLASS_NAME="AuthorityKeyIdentifier";const ca="pathLenConstraint",ha="cA";class kn extends D{constructor(e={}){super(),this.cA=f(e,ha,!1),ca in e&&(this.pathLenConstraint=f(e,ca,0)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ha:return!1;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new ia({optional:!0,name:t.cA||v}),new B({optional:!0,name:t.pathLenConstraint||v})]})}fromSchema(e){T(e,[ha,ca]);const t=R(e,e,kn.schema({names:{cA:ha,pathLenConstraint:ca}}));O.assertSchema(t,this.className),ha in t.result&&(this.cA=t.result.cA.valueBlock.value),ca in t.result&&(t.result.pathLenConstraint.valueBlock.isHexOnly?this.pathLenConstraint=t.result.pathLenConstraint:this.pathLenConstraint=t.result.pathLenConstraint.valueBlock.valueDec)}toSchema(){const e=[];return this.cA!==kn.defaultValues(ha)&&e.push(new ia({value:this.cA})),ca in this&&(this.pathLenConstraint instanceof B?e.push(this.pathLenConstraint):e.push(new B({value:this.pathLenConstraint}))),new A({value:e})}toJSON(){const e={};return this.cA!==kn.defaultValues(ha)&&(e.cA=this.cA),ca in this&&(this.pathLenConstraint instanceof B?e.pathLenConstraint=this.pathLenConstraint.toJSON():e.pathLenConstraint=this.pathLenConstraint),e}}kn.CLASS_NAME="BasicConstraints";const gm="certificateIndex",wm="keyIndex";class tc extends D{constructor(e={}){super(),this.certificateIndex=f(e,gm,tc.defaultValues(gm)),this.keyIndex=f(e,wm,tc.defaultValues(wm)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case gm:case wm:return 0;default:return super.defaultValues(e)}}static schema(){return new B}fromSchema(e){if(e.constructor.blockName()!==B.blockName())throw new Error("Object's schema was not verified against input data for CAVersion");let t=e.valueBlock.valueHex.slice(0);const s=new Uint8Array(t);switch(!0){case t.byteLength<4:{const m=new ArrayBuffer(4);new Uint8Array(m).set(s,4-t.byteLength),t=m.slice(0)}break;case t.byteLength>4:{const m=new ArrayBuffer(4);new Uint8Array(m).set(s.slice(0,4)),t=m.slice(0)}break}const a=t.slice(0,2),n=new Uint8Array(a);let u=n[0];n[0]=n[1],n[1]=u;const i=new Uint16Array(a);this.keyIndex=i[0];const l=t.slice(2),o=new Uint8Array(l);u=o[0],o[0]=o[1],o[1]=u;const c=new Uint16Array(l);this.certificateIndex=c[0]}toSchema(){const e=new ArrayBuffer(2),t=new Uint16Array(e);t[0]=this.certificateIndex;const s=new Uint8Array(e);let a=s[0];s[0]=s[1],s[1]=a;const n=new ArrayBuffer(2),u=new Uint16Array(n);u[0]=this.keyIndex;const i=new Uint8Array(n);return a=i[0],i[0]=i[1],i[1]=a,new B({valueHex:go(n,e)})}toJSON(){return{certificateIndex:this.certificateIndex,keyIndex:this.keyIndex}}}tc.CLASS_NAME="CAVersion";const ru="policyQualifierId",au="qualifier",M0=[ru,au];class Cn extends D{constructor(e={}){super(),this.policyQualifierId=f(e,ru,Cn.defaultValues(ru)),this.qualifier=f(e,au,Cn.defaultValues(au)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ru:return v;case au:return new X;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.policyQualifierId||v}),new X({name:t.qualifier||v})]})}fromSchema(e){T(e,M0);const t=R(e,e,Cn.schema({names:{policyQualifierId:ru,qualifier:au}}));O.assertSchema(t,this.className),this.policyQualifierId=t.result.policyQualifierId.valueBlock.toString(),this.qualifier=t.result.qualifier}toSchema(){return new A({value:[new J({value:this.policyQualifierId}),this.qualifier]})}toJSON(){return{policyQualifierId:this.policyQualifierId,qualifier:this.qualifier.toJSON()}}}Cn.CLASS_NAME="PolicyQualifierInfo";const nu="policyIdentifier",wa="policyQualifiers",F0=[nu,wa];class En extends D{constructor(e={}){super(),this.policyIdentifier=f(e,nu,En.defaultValues(nu)),wa in e&&(this.policyQualifiers=f(e,wa,En.defaultValues(wa))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case nu:return v;case wa:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.policyIdentifier||v}),new A({optional:!0,value:[new Z({name:t.policyQualifiers||v,value:Cn.schema()})]})]})}fromSchema(e){T(e,F0);const t=R(e,e,En.schema({names:{policyIdentifier:nu,policyQualifiers:wa}}));O.assertSchema(t,this.className),this.policyIdentifier=t.result.policyIdentifier.valueBlock.toString(),wa in t.result&&(this.policyQualifiers=Array.from(t.result.policyQualifiers,s=>new Cn({schema:s})))}toSchema(){const e=[];return e.push(new J({value:this.policyIdentifier})),this.policyQualifiers&&e.push(new A({value:Array.from(this.policyQualifiers,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={policyIdentifier:this.policyIdentifier};return this.policyQualifiers&&(e.policyQualifiers=Array.from(this.policyQualifiers,t=>t.toJSON())),e}}En.CLASS_NAME="PolicyInformation";const iu="certificatePolicies",J0=[iu];class Eo extends D{constructor(e={}){super(),this.certificatePolicies=f(e,iu,Eo.defaultValues(iu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case iu:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.certificatePolicies||v,value:En.schema()})]})}fromSchema(e){T(e,J0);const t=R(e,e,Eo.schema({names:{certificatePolicies:iu}}));O.assertSchema(t,this.className),this.certificatePolicies=Array.from(t.result.certificatePolicies,s=>new En({schema:s}))}toSchema(){return new A({value:Array.from(this.certificatePolicies,e=>e.toSchema())})}toJSON(){return{certificatePolicies:Array.from(this.certificatePolicies,e=>e.toJSON())}}}Eo.CLASS_NAME="CertificatePolicies";const ou="templateID",vs="templateMajorVersion",bs="templateMinorVersion",q0=[ou,vs,bs];class fo extends D{constructor(e={}){super(),this.templateID=f(e,ou,fo.defaultValues(ou)),vs in e&&(this.templateMajorVersion=f(e,vs,fo.defaultValues(vs))),bs in e&&(this.templateMinorVersion=f(e,bs,fo.defaultValues(bs))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ou:return v;case vs:case bs:return 0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.templateID||v}),new B({name:t.templateMajorVersion||v,optional:!0}),new B({name:t.templateMinorVersion||v,optional:!0})]})}fromSchema(e){T(e,q0);const t=R(e,e,fo.schema({names:{templateID:ou,templateMajorVersion:vs,templateMinorVersion:bs}}));O.assertSchema(t,this.className),this.templateID=t.result.templateID.valueBlock.toString(),vs in t.result&&(this.templateMajorVersion=t.result.templateMajorVersion.valueBlock.valueDec),bs in t.result&&(this.templateMinorVersion=t.result.templateMinorVersion.valueBlock.valueDec)}toSchema(){const e=[];return e.push(new J({value:this.templateID})),vs in this&&e.push(new B({value:this.templateMajorVersion})),bs in this&&e.push(new B({value:this.templateMinorVersion})),new A({value:e})}toJSON(){const e={templateID:this.templateID};return vs in this&&(e.templateMajorVersion=this.templateMajorVersion),bs in this&&(e.templateMinorVersion=this.templateMinorVersion),e}}const ya="distributionPoint",Tg="distributionPointNames",va="reasons",ba="cRLIssuer",Rg="cRLIssuerNames",W0=[ya,Tg,va,ba,Rg];class Zr extends D{constructor(e={}){super(),ya in e&&(this.distributionPoint=f(e,ya,Zr.defaultValues(ya))),va in e&&(this.reasons=f(e,va,Zr.defaultValues(va))),ba in e&&(this.cRLIssuer=f(e,ba,Zr.defaultValues(ba))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ya:return[];case va:return new re;case ba:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Ne({value:[new I({name:t.distributionPoint||v,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Z({name:t.distributionPointNames||v,value:ue.schema()})]}),new I({name:t.distributionPoint||v,optional:!0,idBlock:{tagClass:3,tagNumber:1},value:me.schema().valueBlock.value})]})]}),new _({name:t.reasons||v,optional:!0,idBlock:{tagClass:3,tagNumber:1}}),new I({name:t.cRLIssuer||v,optional:!0,idBlock:{tagClass:3,tagNumber:2},value:[new Z({name:t.cRLIssuerNames||v,value:ue.schema()})]})]})}fromSchema(e){T(e,W0);const t=R(e,e,Zr.schema({names:{distributionPoint:ya,distributionPointNames:Tg,reasons:va,cRLIssuer:ba,cRLIssuerNames:Rg}}));O.assertSchema(t,this.className),ya in t.result&&(t.result.distributionPoint.idBlock.tagNumber===0&&(this.distributionPoint=Array.from(t.result.distributionPointNames,s=>new ue({schema:s}))),t.result.distributionPoint.idBlock.tagNumber===1&&(this.distributionPoint=new me({schema:new A({value:t.result.distributionPoint.valueBlock.value})}))),va in t.result&&(this.reasons=new re({valueHex:t.result.reasons.valueBlock.valueHex})),ba in t.result&&(this.cRLIssuer=Array.from(t.result.cRLIssuerNames,s=>new ue({schema:s})))}toSchema(){const e=[];if(this.distributionPoint){let t;this.distributionPoint instanceof Array?t=new I({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.distributionPoint,s=>s.toSchema())}):t=new I({idBlock:{tagClass:3,tagNumber:1},value:[this.distributionPoint.toSchema()]}),e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[t]}))}return this.reasons&&e.push(new _({idBlock:{tagClass:3,tagNumber:1},valueHex:this.reasons.valueBlock.valueHexView})),this.cRLIssuer&&e.push(new I({idBlock:{tagClass:3,tagNumber:2},value:Array.from(this.cRLIssuer,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={};return this.distributionPoint&&(this.distributionPoint instanceof Array?e.distributionPoint=Array.from(this.distributionPoint,t=>t.toJSON()):e.distributionPoint=this.distributionPoint.toJSON()),this.reasons&&(e.reasons=this.reasons.toJSON()),this.cRLIssuer&&(e.cRLIssuer=Array.from(this.cRLIssuer,t=>t.toJSON())),e}}Zr.CLASS_NAME="DistributionPoint";const uu="distributionPoints",G0=[uu];class xo extends D{constructor(e={}){super(),this.distributionPoints=f(e,uu,xo.defaultValues(uu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case uu:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.distributionPoints||v,value:Zr.schema()})]})}fromSchema(e){T(e,G0);const t=R(e,e,xo.schema({names:{distributionPoints:uu}}));O.assertSchema(t,this.className),this.distributionPoints=Array.from(t.result.distributionPoints,s=>new Zr({schema:s}))}toSchema(){return new A({value:Array.from(this.distributionPoints,e=>e.toSchema())})}toJSON(){return{distributionPoints:Array.from(this.distributionPoints,e=>e.toJSON())}}}xo.CLASS_NAME="CRLDistributionPoints";const lu="keyPurposes",z0=[lu];class sc extends D{constructor(e={}){super(),this.keyPurposes=f(e,lu,sc.defaultValues(lu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case lu:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.keyPurposes||v,value:new J})]})}fromSchema(e){T(e,z0);const t=R(e,e,sc.schema({names:{keyPurposes:lu}}));O.assertSchema(t,this.className),this.keyPurposes=Array.from(t.result.keyPurposes,s=>s.valueBlock.toString())}toSchema(){return new A({value:Array.from(this.keyPurposes,e=>new J({value:e}))})}toJSON(){return{keyPurposes:Array.from(this.keyPurposes)}}}sc.CLASS_NAME="ExtKeyUsage";const Ko="accessDescriptions";class Io extends D{constructor(e={}){super(),this.accessDescriptions=f(e,Ko,Io.defaultValues(Ko)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ko:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.accessDescriptions||v,value:Nn.schema()})]})}fromSchema(e){T(e,[Ko]);const t=R(e,e,Io.schema({names:{accessDescriptions:Ko}}));O.assertSchema(t,this.className),this.accessDescriptions=Array.from(t.result.accessDescriptions,s=>new Nn({schema:s}))}toSchema(){return new A({value:Array.from(this.accessDescriptions,e=>e.toSchema())})}toJSON(){return{accessDescriptions:Array.from(this.accessDescriptions,e=>e.toJSON())}}}Io.CLASS_NAME="InfoAccess";const Sa="distributionPoint",Lg="distributionPointNames",ir="onlyContainsUserCerts",or="onlyContainsCACerts",ur="onlySomeReasons",lr="indirectCRL",cr="onlyContainsAttributeCerts",_0=[Sa,Lg,ir,or,ur,lr,cr];class Ye extends D{constructor(e={}){super(),Sa in e&&(this.distributionPoint=f(e,Sa,Ye.defaultValues(Sa))),this.onlyContainsUserCerts=f(e,ir,Ye.defaultValues(ir)),this.onlyContainsCACerts=f(e,or,Ye.defaultValues(or)),ur in e&&(this.onlySomeReasons=f(e,ur,Ye.defaultValues(ur))),this.indirectCRL=f(e,lr,Ye.defaultValues(lr)),this.onlyContainsAttributeCerts=f(e,cr,Ye.defaultValues(cr)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Sa:return[];case ir:return!1;case or:return!1;case ur:return 0;case lr:return!1;case cr:return!1;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Ne({value:[new I({name:t.distributionPoint||v,idBlock:{tagClass:3,tagNumber:0},value:[new Z({name:t.distributionPointNames||v,value:ue.schema()})]}),new I({name:t.distributionPoint||v,idBlock:{tagClass:3,tagNumber:1},value:me.schema().valueBlock.value})]})]}),new _({name:t.onlyContainsUserCerts||v,optional:!0,idBlock:{tagClass:3,tagNumber:1}}),new _({name:t.onlyContainsCACerts||v,optional:!0,idBlock:{tagClass:3,tagNumber:2}}),new _({name:t.onlySomeReasons||v,optional:!0,idBlock:{tagClass:3,tagNumber:3}}),new _({name:t.indirectCRL||v,optional:!0,idBlock:{tagClass:3,tagNumber:4}}),new _({name:t.onlyContainsAttributeCerts||v,optional:!0,idBlock:{tagClass:3,tagNumber:5}})]})}fromSchema(e){T(e,_0);const t=R(e,e,Ye.schema({names:{distributionPoint:Sa,distributionPointNames:Lg,onlyContainsUserCerts:ir,onlyContainsCACerts:or,onlySomeReasons:ur,indirectCRL:lr,onlyContainsAttributeCerts:cr}}));if(O.assertSchema(t,this.className),Sa in t.result)switch(!0){case t.result.distributionPoint.idBlock.tagNumber===0:this.distributionPoint=Array.from(t.result.distributionPointNames,s=>new ue({schema:s}));break;case t.result.distributionPoint.idBlock.tagNumber===1:this.distributionPoint=new me({schema:new A({value:t.result.distributionPoint.valueBlock.value})});break;default:throw new Error("Unknown tagNumber for distributionPoint: {$asn1.result.distributionPoint.idBlock.tagNumber}")}if(ir in t.result){const s=new Uint8Array(t.result.onlyContainsUserCerts.valueBlock.valueHex);this.onlyContainsUserCerts=s[0]!==0}if(or in t.result){const s=new Uint8Array(t.result.onlyContainsCACerts.valueBlock.valueHex);this.onlyContainsCACerts=s[0]!==0}if(ur in t.result){const s=new Uint8Array(t.result.onlySomeReasons.valueBlock.valueHex);this.onlySomeReasons=s[0]}if(lr in t.result){const s=new Uint8Array(t.result.indirectCRL.valueBlock.valueHex);this.indirectCRL=s[0]!==0}if(cr in t.result){const s=new Uint8Array(t.result.onlyContainsAttributeCerts.valueBlock.valueHex);this.onlyContainsAttributeCerts=s[0]!==0}}toSchema(){const e=[];if(this.distributionPoint){let t;this.distributionPoint instanceof Array?t=new I({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.distributionPoint,s=>s.toSchema())}):(t=this.distributionPoint.toSchema(),t.idBlock.tagClass=3,t.idBlock.tagNumber=1),e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[t]}))}if(this.onlyContainsUserCerts!==Ye.defaultValues(ir)&&e.push(new _({idBlock:{tagClass:3,tagNumber:1},valueHex:new Uint8Array([255]).buffer})),this.onlyContainsCACerts!==Ye.defaultValues(or)&&e.push(new _({idBlock:{tagClass:3,tagNumber:2},valueHex:new Uint8Array([255]).buffer})),this.onlySomeReasons!==void 0){const t=new ArrayBuffer(1),s=new Uint8Array(t);s[0]=this.onlySomeReasons,e.push(new _({idBlock:{tagClass:3,tagNumber:3},valueHex:t}))}return this.indirectCRL!==Ye.defaultValues(lr)&&e.push(new _({idBlock:{tagClass:3,tagNumber:4},valueHex:new Uint8Array([255]).buffer})),this.onlyContainsAttributeCerts!==Ye.defaultValues(cr)&&e.push(new _({idBlock:{tagClass:3,tagNumber:5},valueHex:new Uint8Array([255]).buffer})),new A({value:e})}toJSON(){const e={};return this.distributionPoint&&(this.distributionPoint instanceof Array?e.distributionPoint=Array.from(this.distributionPoint,t=>t.toJSON()):e.distributionPoint=this.distributionPoint.toJSON()),this.onlyContainsUserCerts!==Ye.defaultValues(ir)&&(e.onlyContainsUserCerts=this.onlyContainsUserCerts),this.onlyContainsCACerts!==Ye.defaultValues(or)&&(e.onlyContainsCACerts=this.onlyContainsCACerts),ur in this&&(e.onlySomeReasons=this.onlySomeReasons),this.indirectCRL!==Ye.defaultValues(lr)&&(e.indirectCRL=this.indirectCRL),this.onlyContainsAttributeCerts!==Ye.defaultValues(cr)&&(e.onlyContainsAttributeCerts=this.onlyContainsAttributeCerts),e}}Ye.CLASS_NAME="IssuingDistributionPoint";const cu="base",zn="minimum",hr="maximum",X0=[cu,zn,hr];class fs extends D{constructor(e={}){super(),this.base=f(e,cu,fs.defaultValues(cu)),this.minimum=f(e,zn,fs.defaultValues(zn)),hr in e&&(this.maximum=f(e,hr,fs.defaultValues(hr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case cu:return new ue;case zn:return 0;case hr:return 0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[ue.schema(t.base||{}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new B({name:t.minimum||v})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new B({name:t.maximum||v})]})]})}fromSchema(e){T(e,X0);const t=R(e,e,fs.schema({names:{base:{names:{blockName:cu}},minimum:zn,maximum:hr}}));O.assertSchema(t,this.className),this.base=new ue({schema:t.result.base}),zn in t.result&&(t.result.minimum.valueBlock.isHexOnly?this.minimum=t.result.minimum:this.minimum=t.result.minimum.valueBlock.valueDec),hr in t.result&&(t.result.maximum.valueBlock.isHexOnly?this.maximum=t.result.maximum:this.maximum=t.result.maximum.valueBlock.valueDec)}toSchema(){const e=[];if(e.push(this.base.toSchema()),this.minimum!==0){let t=0;this.minimum instanceof B?t=this.minimum:t=new B({value:this.minimum}),e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[t]}))}if(hr in this){let t=0;this.maximum instanceof B?t=this.maximum:t=new B({value:this.maximum}),e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[t]}))}return new A({value:e})}toJSON(){const e={base:this.base.toJSON()};return this.minimum!==0&&(typeof this.minimum=="number"?e.minimum=this.minimum:e.minimum=this.minimum.toJSON()),this.maximum!==void 0&&(typeof this.maximum=="number"?e.maximum=this.maximum:e.maximum=this.maximum.toJSON()),e}}fs.CLASS_NAME="GeneralSubtree";const Aa="permittedSubtrees",Na="excludedSubtrees",Z0=[Aa,Na];class yo extends D{constructor(e={}){super(),Aa in e&&(this.permittedSubtrees=f(e,Aa,yo.defaultValues(Aa))),Na in e&&(this.excludedSubtrees=f(e,Na,yo.defaultValues(Na))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Aa:case Na:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Z({name:t.permittedSubtrees||v,value:fs.schema()})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new Z({name:t.excludedSubtrees||v,value:fs.schema()})]})]})}fromSchema(e){T(e,Z0);const t=R(e,e,yo.schema({names:{permittedSubtrees:Aa,excludedSubtrees:Na}}));O.assertSchema(t,this.className),Aa in t.result&&(this.permittedSubtrees=Array.from(t.result.permittedSubtrees,s=>new fs({schema:s}))),Na in t.result&&(this.excludedSubtrees=Array.from(t.result.excludedSubtrees,s=>new fs({schema:s})))}toSchema(){const e=[];return this.permittedSubtrees&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.permittedSubtrees,t=>t.toSchema())})),this.excludedSubtrees&&e.push(new I({idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.excludedSubtrees,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={};return this.permittedSubtrees&&(e.permittedSubtrees=Array.from(this.permittedSubtrees,t=>t.toJSON())),this.excludedSubtrees&&(e.excludedSubtrees=Array.from(this.excludedSubtrees,t=>t.toJSON())),e}}yo.CLASS_NAME="NameConstraints";const Ss="requireExplicitPolicy",As="inhibitPolicyMapping",Q0=[Ss,As];class vo extends D{constructor(e={}){super(),Ss in e&&(this.requireExplicitPolicy=f(e,Ss,vo.defaultValues(Ss))),As in e&&(this.inhibitPolicyMapping=f(e,As,vo.defaultValues(As))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ss:return 0;case As:return 0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new _({name:t.requireExplicitPolicy||v,optional:!0,idBlock:{tagClass:3,tagNumber:0}}),new _({name:t.inhibitPolicyMapping||v,optional:!0,idBlock:{tagClass:3,tagNumber:1}})]})}fromSchema(e){T(e,Q0);const t=R(e,e,vo.schema({names:{requireExplicitPolicy:Ss,inhibitPolicyMapping:As}}));if(O.assertSchema(t,this.className),Ss in t.result){const s=t.result.requireExplicitPolicy;s.idBlock.tagClass=1,s.idBlock.tagNumber=2;const a=s.toBER(!1),n=Le(a);O.assert(n,"Integer"),this.requireExplicitPolicy=n.result.valueBlock.valueDec}if(As in t.result){const s=t.result.inhibitPolicyMapping;s.idBlock.tagClass=1,s.idBlock.tagNumber=2;const a=s.toBER(!1),n=Le(a);O.assert(n,"Integer"),this.inhibitPolicyMapping=n.result.valueBlock.valueDec}}toSchema(){const e=[];if(Ss in this){const t=new B({value:this.requireExplicitPolicy});t.idBlock.tagClass=3,t.idBlock.tagNumber=0,e.push(t)}if(As in this){const t=new B({value:this.inhibitPolicyMapping});t.idBlock.tagClass=3,t.idBlock.tagNumber=1,e.push(t)}return new A({value:e})}toJSON(){const e={};return Ss in this&&(e.requireExplicitPolicy=this.requireExplicitPolicy),As in this&&(e.inhibitPolicyMapping=this.inhibitPolicyMapping),e}}vo.CLASS_NAME="PolicyConstraints";const hu="issuerDomainPolicy",mu="subjectDomainPolicy",Y0=[hu,mu];class xn extends D{constructor(e={}){super(),this.issuerDomainPolicy=f(e,hu,xn.defaultValues(hu)),this.subjectDomainPolicy=f(e,mu,xn.defaultValues(mu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case hu:return v;case mu:return v;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.issuerDomainPolicy||v}),new J({name:t.subjectDomainPolicy||v})]})}fromSchema(e){T(e,Y0);const t=R(e,e,xn.schema({names:{issuerDomainPolicy:hu,subjectDomainPolicy:mu}}));O.assertSchema(t,this.className),this.issuerDomainPolicy=t.result.issuerDomainPolicy.valueBlock.toString(),this.subjectDomainPolicy=t.result.subjectDomainPolicy.valueBlock.toString()}toSchema(){return new A({value:[new J({value:this.issuerDomainPolicy}),new J({value:this.subjectDomainPolicy})]})}toJSON(){return{issuerDomainPolicy:this.issuerDomainPolicy,subjectDomainPolicy:this.subjectDomainPolicy}}}xn.CLASS_NAME="PolicyMapping";const fu="mappings",e1=[fu];class rc extends D{constructor(e={}){super(),this.mappings=f(e,fu,rc.defaultValues(fu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case fu:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.mappings||v,value:xn.schema()})]})}fromSchema(e){T(e,e1);const t=R(e,e,rc.schema({names:{mappings:fu}}));O.assertSchema(t,this.className),this.mappings=Array.from(t.result.mappings,s=>new xn({schema:s}))}toSchema(){return new A({value:Array.from(this.mappings,e=>e.toSchema())})}toJSON(){return{mappings:Array.from(this.mappings,e=>e.toJSON())}}}rc.CLASS_NAME="PolicyMappings";const mr="notBefore",fr="notAfter",t1=[mr,fr];class bo extends D{constructor(e={}){super(),mr in e&&(this.notBefore=f(e,mr,bo.defaultValues(mr))),fr in e&&(this.notAfter=f(e,fr,bo.defaultValues(fr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case mr:return new Date;case fr:return new Date;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new _({name:t.notBefore||v,optional:!0,idBlock:{tagClass:3,tagNumber:0}}),new _({name:t.notAfter||v,optional:!0,idBlock:{tagClass:3,tagNumber:1}})]})}fromSchema(e){T(e,t1);const t=R(e,e,bo.schema({names:{notBefore:mr,notAfter:fr}}));if(O.assertSchema(t,this.className),mr in t.result){const s=new ke;s.fromBuffer(t.result.notBefore.valueBlock.valueHex),this.notBefore=s.toDate()}if(fr in t.result){const s=new ke({valueHex:t.result.notAfter.valueBlock.valueHex});s.fromBuffer(t.result.notAfter.valueBlock.valueHex),this.notAfter=s.toDate()}}toSchema(){const e=[];return mr in this&&e.push(new _({idBlock:{tagClass:3,tagNumber:0},valueHex:new ke({valueDate:this.notBefore}).valueBlock.valueHexView})),fr in this&&e.push(new _({idBlock:{tagClass:3,tagNumber:1},valueHex:new ke({valueDate:this.notAfter}).valueBlock.valueHexView})),new A({value:e})}toJSON(){const e={};return this.notBefore&&(e.notBefore=this.notBefore),this.notAfter&&(e.notAfter=this.notAfter),e}}bo.CLASS_NAME="PrivateKeyUsagePeriod";const _n="id",Ns="type",Xn="values",s1=[_n,Ns],r1=[Xn];class In extends D{constructor(e={}){super(),this.id=f(e,_n,In.defaultValues(_n)),Ns in e&&(this.type=f(e,Ns,In.defaultValues(Ns))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case _n:return v;case Ns:return new Fe;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case _n:return t===v;case Ns:return t instanceof Fe;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.id||v}),new X({name:t.type||v,optional:!0})]})}fromSchema(e){T(e,s1);const t=R(e,e,In.schema({names:{id:_n,type:Ns}}));O.assertSchema(t,this.className),this.id=t.result.id.valueBlock.toString(),Ns in t.result&&(this.type=t.result.type)}toSchema(){const e=[new J({value:this.id})];return Ns in this&&e.push(this.type),new A({value:e})}toJSON(){const e={id:this.id};return this.type&&(e.type=this.type.toJSON()),e}}In.CLASS_NAME="QCStatement";class ac extends D{constructor(e={}){super(),this.values=f(e,Xn,ac.defaultValues(Xn)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Xn:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Xn:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.values||v,value:In.schema(t.value||{})})]})}fromSchema(e){T(e,r1);const t=R(e,e,ac.schema({names:{values:Xn}}));O.assertSchema(t,this.className),this.values=Array.from(t.result.values,s=>new In({schema:s}))}toSchema(){return new A({value:Array.from(this.values,e=>e.toSchema())})}toJSON(){return{values:Array.from(this.values,e=>e.toJSON())}}}ac.CLASS_NAME="QCStatements";var ma;class sa{static register(e,t,s){this.namedCurves[e.toLowerCase()]=this.namedCurves[t]={name:e,id:t,size:s}}static find(e){return this.namedCurves[e.toLowerCase()]||null}}ma=sa,sa.namedCurves={},ma.register("P-256","1.2.840.10045.3.1.7",32),ma.register("P-384","1.3.132.0.34",48),ma.register("P-521","1.3.132.0.35",66),ma.register("brainpoolP256r1","1.3.36.3.3.2.8.1.1.7",32),ma.register("brainpoolP384r1","1.3.36.3.3.2.8.1.1.11",48),ma.register("brainpoolP512r1","1.3.36.3.3.2.8.1.1.13",64);const wc="x",yc="y",vc="namedCurve";class At extends D{constructor(e={}){super(),this.x=f(e,wc,At.defaultValues(wc)),this.y=f(e,yc,At.defaultValues(yc)),this.namedCurve=f(e,vc,At.defaultValues(vc)),e.json&&this.fromJSON(e.json),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case wc:case yc:return Ue;case vc:return v;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case wc:case yc:return t instanceof ArrayBuffer&&Zl(t,At.defaultValues(e));case vc:return typeof t=="string"&&t===At.defaultValues(e);default:return super.defaultValues(e)}}static schema(){return new Nh}fromSchema(e){const t=pe.toUint8Array(e);if(t[0]!==4)throw new Error("Object's schema was not verified against input data for ECPublicKey");const s=sa.find(this.namedCurve);if(!s)throw new Error("Incorrect curve OID: ".concat(this.namedCurve));const a=s.size;if(t.byteLength!==a*2+1)throw new Error("Object's schema was not verified against input data for ECPublicKey");this.namedCurve=s.name,this.x=t.slice(1,a+1).buffer,this.y=t.slice(1+a,a*2+1).buffer}toSchema(){return new Nh({data:go(new Uint8Array([4]).buffer,this.x,this.y)})}toJSON(){const e=sa.find(this.namedCurve);return{crv:e?e.name:this.namedCurve,x:_m(Ah(this.x),!0,!0,!1),y:_m(Ah(this.y),!0,!0,!1)}}fromJSON(e){ne.assert("json",e,"crv","x","y");let t=0;const s=sa.find(e.crv);s&&(this.namedCurve=s.id,t=s.size);const a=ko(Ql(e.x,!0));if(a.byteLengthnew Rs({schema:s})))}toSchema(){const e=[];return e.push(new B({value:this.version})),e.push(this.modulus.convertToDER()),e.push(this.publicExponent),e.push(this.privateExponent.convertToDER()),e.push(this.prime1.convertToDER()),e.push(this.prime2.convertToDER()),e.push(this.exponent1.convertToDER()),e.push(this.exponent2.convertToDER()),e.push(this.coefficient.convertToDER()),this.otherPrimeInfos&&e.push(new A({value:Array.from(this.otherPrimeInfos,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={n:ce.ToBase64Url(this.modulus.valueBlock.valueHexView),e:ce.ToBase64Url(this.publicExponent.valueBlock.valueHexView),d:ce.ToBase64Url(this.privateExponent.valueBlock.valueHexView),p:ce.ToBase64Url(this.prime1.valueBlock.valueHexView),q:ce.ToBase64Url(this.prime2.valueBlock.valueHexView),dp:ce.ToBase64Url(this.exponent1.valueBlock.valueHexView),dq:ce.ToBase64Url(this.exponent2.valueBlock.valueHexView),qi:ce.ToBase64Url(this.coefficient.valueBlock.valueHexView)};return this.otherPrimeInfos&&(e.oth=Array.from(this.otherPrimeInfos,t=>t.toJSON())),e}fromJSON(e){ne.assert("json",e,"n","e","d","p","q","dp","dq","qi"),this.modulus=new B({valueHex:ce.FromBase64Url(e.n)}),this.publicExponent=new B({valueHex:ce.FromBase64Url(e.e)}),this.privateExponent=new B({valueHex:ce.FromBase64Url(e.d)}),this.prime1=new B({valueHex:ce.FromBase64Url(e.p)}),this.prime2=new B({valueHex:ce.FromBase64Url(e.q)}),this.exponent1=new B({valueHex:ce.FromBase64Url(e.dp)}),this.exponent2=new B({valueHex:ce.FromBase64Url(e.dq)}),this.coefficient=new B({valueHex:ce.FromBase64Url(e.qi)}),e.oth&&(this.otherPrimeInfos=Array.from(e.oth,t=>new Rs({json:t})))}}gt.CLASS_NAME="RSAPrivateKey";const Bu="version",Pu="privateKeyAlgorithm",Ou="privateKey",Ca="attributes",bc="parsedKey",l1=[Bu,Pu,Ou,Ca];class Ft extends D{constructor(e={}){super(),this.version=f(e,Bu,Ft.defaultValues(Bu)),this.privateKeyAlgorithm=f(e,Pu,Ft.defaultValues(Pu)),this.privateKey=f(e,Ou,Ft.defaultValues(Ou)),Ca in e&&(this.attributes=f(e,Ca,Ft.defaultValues(Ca))),bc in e&&(this.parsedKey=f(e,bc,Ft.defaultValues(bc))),e.json&&this.fromJSON(e.json),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Bu:return 0;case Pu:return new V;case Ou:return new $;case Ca:return[];case bc:return{};default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),V.schema(t.privateKeyAlgorithm||{}),new $({name:t.privateKey||v}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Z({name:t.attributes||v,value:ge.schema()})]})]})}fromSchema(e){T(e,l1);const t=R(e,e,Ft.schema({names:{version:Bu,privateKeyAlgorithm:{names:{blockName:Pu}},privateKey:Ou,attributes:Ca}}));switch(O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.privateKeyAlgorithm=new V({schema:t.result.privateKeyAlgorithm}),this.privateKey=t.result.privateKey,Ca in t.result&&(this.attributes=Array.from(t.result.attributes,s=>new ge({schema:s}))),this.privateKeyAlgorithm.algorithmId){case"1.2.840.113549.1.1.1":{const s=Le(this.privateKey.valueBlock.valueHexView);s.offset!==-1&&(this.parsedKey=new gt({schema:s.result}))}break;case"1.2.840.10045.2.1":if("algorithmParams"in this.privateKeyAlgorithm&&this.privateKeyAlgorithm.algorithmParams instanceof J){const s=Le(this.privateKey.valueBlock.valueHexView);s.offset!==-1&&(this.parsedKey=new Ht({namedCurve:this.privateKeyAlgorithm.algorithmParams.valueBlock.toString(),schema:s.result}))}break}}toSchema(){const e=[new B({value:this.version}),this.privateKeyAlgorithm.toSchema(),this.privateKey];return this.attributes&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.attributes,t=>t.toSchema())})),new A({value:e})}toJSON(){if(!this.parsedKey){const s={version:this.version,privateKeyAlgorithm:this.privateKeyAlgorithm.toJSON(),privateKey:this.privateKey.toJSON()};return this.attributes&&(s.attributes=Array.from(this.attributes,a=>a.toJSON())),s}const e={};switch(this.privateKeyAlgorithm.algorithmId){case"1.2.840.10045.2.1":e.kty="EC";break;case"1.2.840.113549.1.1.1":e.kty="RSA";break}const t=this.parsedKey.toJSON();return Object.assign(e,t),e}fromJSON(e){if("kty"in e){switch(e.kty.toUpperCase()){case"EC":this.parsedKey=new Ht({json:e}),this.privateKeyAlgorithm=new V({algorithmId:"1.2.840.10045.2.1",algorithmParams:new J({value:this.parsedKey.namedCurve})});break;case"RSA":this.parsedKey=new gt({json:e}),this.privateKeyAlgorithm=new V({algorithmId:"1.2.840.113549.1.1.1",algorithmParams:new Fe});break;default:throw new Error('Invalid value for "kty" parameter: '.concat(e.kty))}this.privateKey=new $({valueHex:this.parsedKey.toSchema().toBER(!1)})}}}Ft.CLASS_NAME="PrivateKeyInfo";const Yn="contentType",ei="contentEncryptionAlgorithm",Ea="encryptedContent",c1=[Yn,ei,Ea],tp=1024;class Oe extends D{constructor(e={}){if(super(),this.contentType=f(e,Yn,Oe.defaultValues(Yn)),this.contentEncryptionAlgorithm=f(e,ei,Oe.defaultValues(ei)),Ea in e&&e.encryptedContent&&(this.encryptedContent=e.encryptedContent,this.encryptedContent.idBlock.tagClass===1&&this.encryptedContent.idBlock.tagNumber===4&&this.encryptedContent.idBlock.isConstructed===!1&&!e.disableSplit)){const t=new $({idBlock:{isConstructed:!0},isConstructed:!0});let s=0;const a=this.encryptedContent.valueBlock.valueHexView.slice().buffer;let n=a.byteLength;for(;n>0;){const u=new Uint8Array(a,s,s+tp>a.byteLength?a.byteLength-s:tp),i=new ArrayBuffer(u.length),l=new Uint8Array(i);for(let o=0;ob!==l[N])&&(o=String.fromCharCode(...l));const c=new Uint8Array(o.length*2+2),m=new DataView(c.buffer);for(let b=0;bp[N%p.length]),w=new Uint8Array(u*Math.ceil(c.length/u)).map((b,N)=>c[N%c.length]);let y=new Uint8Array(d.length+w.length);y.set(d),y.set(w,d.length);const k=Math.ceil((e>>3)/n),g=[];for(let b=0;bN[P%N.length]),E=Math.ceil(p.length/u)+Math.ceil(c.length/u),x=[];for(let C=0;C=0;L--)K>>=8,K+=S[L]+(P[L]||0),P[L]=K&255;x.push(...P)}y=new Uint8Array(x),g.push(...N)}return new Uint8Array(g.slice(0,e>>3)).buffer}function Ug(r){const e=typeof r=="string"?{name:r}:r;return"hash"in e?os(it({},e),{hash:Ug(e.hash)}):e}class nc extends d1{async importKey(e,t,s,a,n){var u,i,l,o,c,m;let h={};const p=Ug(s);switch(e.toLowerCase()){case"raw":return this.subtle.importKey("raw",t,s,a,n);case"spki":{const d=Le(pe.toArrayBuffer(t));O.assert(d,"keyData");const w=new Ct;try{w.fromSchema(d.result)}catch(y){throw new he("Incorrect keyData")}switch(p.name.toUpperCase()){case"RSA-PSS":{if(!p.hash)throw new ne("hash","algorithm.hash","Incorrect hash algorithm: Hash algorithm is missed");switch(p.hash.name.toUpperCase()){case"SHA-1":h.alg="PS1";break;case"SHA-256":h.alg="PS256";break;case"SHA-384":h.alg="PS384";break;case"SHA-512":h.alg="PS512";break;default:throw new Error("Incorrect hash algorithm: ".concat(p.hash.name.toUpperCase()))}}case"RSASSA-PKCS1-V1_5":{if(n=["verify"],h.kty="RSA",h.ext=a,h.key_ops=n,w.algorithm.algorithmId!=="1.2.840.113549.1.1.1")throw new Error("Incorrect public key algorithm: ".concat(w.algorithm.algorithmId));if(!h.alg){if(!p.hash)throw new ne("hash","algorithm.hash","Incorrect hash algorithm: Hash algorithm is missed");switch(p.hash.name.toUpperCase()){case"SHA-1":h.alg="RS1";break;case"SHA-256":h.alg="RS256";break;case"SHA-384":h.alg="RS384";break;case"SHA-512":h.alg="RS512";break;default:throw new Error("Incorrect hash algorithm: ".concat(p.hash.name.toUpperCase()))}}const y=w.toJSON();Object.assign(h,y)}break;case"ECDSA":n=["verify"];case"ECDH":{if(h={kty:"EC",ext:a,key_ops:n},w.algorithm.algorithmId!=="1.2.840.10045.2.1")throw new Error("Incorrect public key algorithm: ".concat(w.algorithm.algorithmId));const y=w.toJSON();Object.assign(h,y)}break;case"RSA-OAEP":{if(h.kty="RSA",h.ext=a,h.key_ops=n,this.name.toLowerCase()==="safari")h.alg="RSA-OAEP";else{if(!p.hash)throw new ne("hash","algorithm.hash","Incorrect hash algorithm: Hash algorithm is missed");switch(p.hash.name.toUpperCase()){case"SHA-1":h.alg="RSA-OAEP";break;case"SHA-256":h.alg="RSA-OAEP-256";break;case"SHA-384":h.alg="RSA-OAEP-384";break;case"SHA-512":h.alg="RSA-OAEP-512";break;default:throw new Error("Incorrect hash algorithm: ".concat(p.hash.name.toUpperCase()))}}const y=w.toJSON();Object.assign(h,y)}break;case"RSAES-PKCS1-V1_5":{h.kty="RSA",h.ext=a,h.key_ops=n,h.alg="PS1";const y=w.toJSON();Object.assign(h,y)}break;default:throw new Error("Incorrect algorithm name: ".concat(p.name.toUpperCase()))}}break;case"pkcs8":{const d=new Ft,w=Le(pe.toArrayBuffer(t));O.assert(w,"keyData");try{d.fromSchema(w.result)}catch(y){throw new Error("Incorrect keyData")}if(!d.parsedKey)throw new Error("Incorrect keyData");switch(p.name.toUpperCase()){case"RSA-PSS":switch((u=p.hash)===null||u===void 0?void 0:u.name.toUpperCase()){case"SHA-1":h.alg="PS1";break;case"SHA-256":h.alg="PS256";break;case"SHA-384":h.alg="PS384";break;case"SHA-512":h.alg="PS512";break;default:throw new Error("Incorrect hash algorithm: ".concat((i=p.hash)===null||i===void 0?void 0:i.name.toUpperCase()))}case"RSASSA-PKCS1-V1_5":{if(n=["sign"],h.kty="RSA",h.ext=a,h.key_ops=n,d.privateKeyAlgorithm.algorithmId!=="1.2.840.113549.1.1.1")throw new Error("Incorrect private key algorithm: ".concat(d.privateKeyAlgorithm.algorithmId));if(!("alg"in h))switch((l=p.hash)===null||l===void 0?void 0:l.name.toUpperCase()){case"SHA-1":h.alg="RS1";break;case"SHA-256":h.alg="RS256";break;case"SHA-384":h.alg="RS384";break;case"SHA-512":h.alg="RS512";break;default:throw new Error("Incorrect hash algorithm: ".concat((o=p.hash)===null||o===void 0?void 0:o.name.toUpperCase()))}const y=d.toJSON();Object.assign(h,y)}break;case"ECDSA":n=["sign"];case"ECDH":{if(h={kty:"EC",ext:a,key_ops:n},d.privateKeyAlgorithm.algorithmId!=="1.2.840.10045.2.1")throw new Error("Incorrect algorithm: ".concat(d.privateKeyAlgorithm.algorithmId));const y=d.toJSON();Object.assign(h,y)}break;case"RSA-OAEP":{if(h.kty="RSA",h.ext=a,h.key_ops=n,this.name.toLowerCase()==="safari")h.alg="RSA-OAEP";else switch((c=p.hash)===null||c===void 0?void 0:c.name.toUpperCase()){case"SHA-1":h.alg="RSA-OAEP";break;case"SHA-256":h.alg="RSA-OAEP-256";break;case"SHA-384":h.alg="RSA-OAEP-384";break;case"SHA-512":h.alg="RSA-OAEP-512";break;default:throw new Error("Incorrect hash algorithm: ".concat((m=p.hash)===null||m===void 0?void 0:m.name.toUpperCase()))}const y=d.toJSON();Object.assign(h,y)}break;case"RSAES-PKCS1-V1_5":{n=["decrypt"],h.kty="RSA",h.ext=a,h.key_ops=n,h.alg="PS1";const y=d.toJSON();Object.assign(h,y)}break;default:throw new Error("Incorrect algorithm name: ".concat(p.name.toUpperCase()))}}break;case"jwk":h=t;break;default:throw new Error("Incorrect format: ".concat(e))}if(this.name.toLowerCase()==="safari")try{return this.subtle.importKey("jwk",ko(JSON.stringify(h)),s,a,n)}catch(d){return this.subtle.importKey("jwk",h,s,a,n)}return this.subtle.importKey("jwk",h,s,a,n)}async exportKey(e,t){let s=await this.subtle.exportKey("jwk",t);switch(this.name.toLowerCase()==="safari"&&s instanceof ArrayBuffer&&(s=JSON.parse(Ah(s))),e.toLowerCase()){case"raw":return this.subtle.exportKey("raw",t);case"spki":{const a=new Ct;try{a.fromJSON(s)}catch(n){throw new Error("Incorrect key data")}return a.toSchema().toBER(!1)}case"pkcs8":{const a=new Ft;try{a.fromJSON(s)}catch(n){throw new Error("Incorrect key data")}return a.toSchema().toBER(!1)}case"jwk":return s;default:throw new Error("Incorrect format: ".concat(e))}}async convert(e,t,s,a,n,u){if(e.toLowerCase()===t.toLowerCase())return s;const i=await this.importKey(e,s,a,n,u);return this.exportKey(t,i)}getAlgorithmByOID(e,t=!1,s){switch(e){case"1.2.840.113549.1.1.1":return{name:"RSAES-PKCS1-v1_5"};case"1.2.840.113549.1.1.5":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-1"}};case"1.2.840.113549.1.1.11":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"1.2.840.113549.1.1.12":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-384"}};case"1.2.840.113549.1.1.13":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-512"}};case"1.2.840.113549.1.1.10":return{name:"RSA-PSS"};case"1.2.840.113549.1.1.7":return{name:"RSA-OAEP"};case"1.2.840.10045.2.1":case"1.2.840.10045.4.1":return{name:"ECDSA",hash:{name:"SHA-1"}};case"1.2.840.10045.4.3.2":return{name:"ECDSA",hash:{name:"SHA-256"}};case"1.2.840.10045.4.3.3":return{name:"ECDSA",hash:{name:"SHA-384"}};case"1.2.840.10045.4.3.4":return{name:"ECDSA",hash:{name:"SHA-512"}};case"1.3.133.16.840.63.0.2":return{name:"ECDH",kdf:"SHA-1"};case"1.3.132.1.11.1":return{name:"ECDH",kdf:"SHA-256"};case"1.3.132.1.11.2":return{name:"ECDH",kdf:"SHA-384"};case"1.3.132.1.11.3":return{name:"ECDH",kdf:"SHA-512"};case"2.16.840.1.101.3.4.1.2":return{name:"AES-CBC",length:128};case"2.16.840.1.101.3.4.1.22":return{name:"AES-CBC",length:192};case"2.16.840.1.101.3.4.1.42":return{name:"AES-CBC",length:256};case"2.16.840.1.101.3.4.1.6":return{name:"AES-GCM",length:128};case"2.16.840.1.101.3.4.1.26":return{name:"AES-GCM",length:192};case"2.16.840.1.101.3.4.1.46":return{name:"AES-GCM",length:256};case"2.16.840.1.101.3.4.1.4":return{name:"AES-CFB",length:128};case"2.16.840.1.101.3.4.1.24":return{name:"AES-CFB",length:192};case"2.16.840.1.101.3.4.1.44":return{name:"AES-CFB",length:256};case"2.16.840.1.101.3.4.1.5":return{name:"AES-KW",length:128};case"2.16.840.1.101.3.4.1.25":return{name:"AES-KW",length:192};case"2.16.840.1.101.3.4.1.45":return{name:"AES-KW",length:256};case"1.2.840.113549.2.7":return{name:"HMAC",hash:{name:"SHA-1"}};case"1.2.840.113549.2.9":return{name:"HMAC",hash:{name:"SHA-256"}};case"1.2.840.113549.2.10":return{name:"HMAC",hash:{name:"SHA-384"}};case"1.2.840.113549.2.11":return{name:"HMAC",hash:{name:"SHA-512"}};case"1.2.840.113549.1.9.16.3.5":return{name:"DH"};case"1.3.14.3.2.26":return{name:"SHA-1"};case"2.16.840.1.101.3.4.2.1":return{name:"SHA-256"};case"2.16.840.1.101.3.4.2.2":return{name:"SHA-384"};case"2.16.840.1.101.3.4.2.3":return{name:"SHA-512"};case"1.2.840.113549.1.5.12":return{name:"PBKDF2"};case"1.2.840.10045.3.1.7":return{name:"P-256"};case"1.3.132.0.34":return{name:"P-384"};case"1.3.132.0.35":return{name:"P-521"}}if(t)throw new Error("Unsupported algorithm identifier ".concat(s?"for ".concat(s," "):v,": ").concat(e));return{}}getOIDByAlgorithm(e,t=!1,s){let a=v;switch(e.name.toUpperCase()){case"RSAES-PKCS1-V1_5":a="1.2.840.113549.1.1.1";break;case"RSASSA-PKCS1-V1_5":switch(e.hash.name.toUpperCase()){case"SHA-1":a="1.2.840.113549.1.1.5";break;case"SHA-256":a="1.2.840.113549.1.1.11";break;case"SHA-384":a="1.2.840.113549.1.1.12";break;case"SHA-512":a="1.2.840.113549.1.1.13";break}break;case"RSA-PSS":a="1.2.840.113549.1.1.10";break;case"RSA-OAEP":a="1.2.840.113549.1.1.7";break;case"ECDSA":switch(e.hash.name.toUpperCase()){case"SHA-1":a="1.2.840.10045.4.1";break;case"SHA-256":a="1.2.840.10045.4.3.2";break;case"SHA-384":a="1.2.840.10045.4.3.3";break;case"SHA-512":a="1.2.840.10045.4.3.4";break}break;case"ECDH":switch(e.kdf.toUpperCase()){case"SHA-1":a="1.3.133.16.840.63.0.2";break;case"SHA-256":a="1.3.132.1.11.1";break;case"SHA-384":a="1.3.132.1.11.2";break;case"SHA-512":a="1.3.132.1.11.3";break}break;case"AES-CTR":break;case"AES-CBC":switch(e.length){case 128:a="2.16.840.1.101.3.4.1.2";break;case 192:a="2.16.840.1.101.3.4.1.22";break;case 256:a="2.16.840.1.101.3.4.1.42";break}break;case"AES-CMAC":break;case"AES-GCM":switch(e.length){case 128:a="2.16.840.1.101.3.4.1.6";break;case 192:a="2.16.840.1.101.3.4.1.26";break;case 256:a="2.16.840.1.101.3.4.1.46";break}break;case"AES-CFB":switch(e.length){case 128:a="2.16.840.1.101.3.4.1.4";break;case 192:a="2.16.840.1.101.3.4.1.24";break;case 256:a="2.16.840.1.101.3.4.1.44";break}break;case"AES-KW":switch(e.length){case 128:a="2.16.840.1.101.3.4.1.5";break;case 192:a="2.16.840.1.101.3.4.1.25";break;case 256:a="2.16.840.1.101.3.4.1.45";break}break;case"HMAC":switch(e.hash.name.toUpperCase()){case"SHA-1":a="1.2.840.113549.2.7";break;case"SHA-256":a="1.2.840.113549.2.9";break;case"SHA-384":a="1.2.840.113549.2.10";break;case"SHA-512":a="1.2.840.113549.2.11";break}break;case"DH":a="1.2.840.113549.1.9.16.3.5";break;case"SHA-1":a="1.3.14.3.2.26";break;case"SHA-256":a="2.16.840.1.101.3.4.2.1";break;case"SHA-384":a="2.16.840.1.101.3.4.2.2";break;case"SHA-512":a="2.16.840.1.101.3.4.2.3";break;case"CONCAT":break;case"HKDF":break;case"PBKDF2":a="1.2.840.113549.1.5.12";break;case"P-256":a="1.2.840.10045.3.1.7";break;case"P-384":a="1.3.132.0.34";break;case"P-521":a="1.3.132.0.35";break}if(!a&&t)throw new Error("Unsupported algorithm ".concat(s?"for ".concat(s," "):v,": ").concat(e.name));return a}getAlgorithmParameters(e,t){let s={algorithm:{},usages:[]};switch(e.toUpperCase()){case"RSAES-PKCS1-V1_5":case"RSASSA-PKCS1-V1_5":switch(t.toLowerCase()){case"generatekey":s={algorithm:{name:"RSASSA-PKCS1-v1_5",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},usages:["sign","verify"]};break;case"verify":case"sign":case"importkey":s={algorithm:{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},usages:["verify"]};break;case"exportkey":default:return{algorithm:{name:"RSASSA-PKCS1-v1_5"},usages:[]}}break;case"RSA-PSS":switch(t.toLowerCase()){case"sign":case"verify":s={algorithm:{name:"RSA-PSS",hash:{name:"SHA-1"},saltLength:20},usages:["sign","verify"]};break;case"generatekey":s={algorithm:{name:"RSA-PSS",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-1"}},usages:["sign","verify"]};break;case"importkey":s={algorithm:{name:"RSA-PSS",hash:{name:"SHA-1"}},usages:["verify"]};break;case"exportkey":default:return{algorithm:{name:"RSA-PSS"},usages:[]}}break;case"RSA-OAEP":switch(t.toLowerCase()){case"encrypt":case"decrypt":s={algorithm:{name:"RSA-OAEP"},usages:["encrypt","decrypt"]};break;case"generatekey":s={algorithm:{name:"RSA-OAEP",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;case"importkey":s={algorithm:{name:"RSA-OAEP",hash:{name:"SHA-256"}},usages:["encrypt"]};break;case"exportkey":default:return{algorithm:{name:"RSA-OAEP"},usages:[]}}break;case"ECDSA":switch(t.toLowerCase()){case"generatekey":s={algorithm:{name:"ECDSA",namedCurve:"P-256"},usages:["sign","verify"]};break;case"importkey":s={algorithm:{name:"ECDSA",namedCurve:"P-256"},usages:["verify"]};break;case"verify":case"sign":s={algorithm:{name:"ECDSA",hash:{name:"SHA-256"}},usages:["sign"]};break;default:return{algorithm:{name:"ECDSA"},usages:[]}}break;case"ECDH":switch(t.toLowerCase()){case"exportkey":case"importkey":case"generatekey":s={algorithm:{name:"ECDH",namedCurve:"P-256"},usages:["deriveKey","deriveBits"]};break;case"derivekey":case"derivebits":s={algorithm:{name:"ECDH",namedCurve:"P-256",public:[]},usages:["encrypt","decrypt"]};break;default:return{algorithm:{name:"ECDH"},usages:[]}}break;case"AES-CTR":switch(t.toLowerCase()){case"importkey":case"exportkey":case"generatekey":s={algorithm:{name:"AES-CTR",length:256},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;case"decrypt":case"encrypt":s={algorithm:{name:"AES-CTR",counter:new Uint8Array(16),length:10},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;default:return{algorithm:{name:"AES-CTR"},usages:[]}}break;case"AES-CBC":switch(t.toLowerCase()){case"importkey":case"exportkey":case"generatekey":s={algorithm:{name:"AES-CBC",length:256},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;case"decrypt":case"encrypt":s={algorithm:{name:"AES-CBC",iv:this.getRandomValues(new Uint8Array(16))},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;default:return{algorithm:{name:"AES-CBC"},usages:[]}}break;case"AES-GCM":switch(t.toLowerCase()){case"importkey":case"exportkey":case"generatekey":s={algorithm:{name:"AES-GCM",length:256},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;case"decrypt":case"encrypt":s={algorithm:{name:"AES-GCM",iv:this.getRandomValues(new Uint8Array(16))},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;default:return{algorithm:{name:"AES-GCM"},usages:[]}}break;case"AES-KW":switch(t.toLowerCase()){case"importkey":case"exportkey":case"generatekey":case"wrapkey":case"unwrapkey":s={algorithm:{name:"AES-KW",length:256},usages:["wrapKey","unwrapKey"]};break;default:return{algorithm:{name:"AES-KW"},usages:[]}}break;case"HMAC":switch(t.toLowerCase()){case"sign":case"verify":s={algorithm:{name:"HMAC"},usages:["sign","verify"]};break;case"importkey":case"exportkey":case"generatekey":s={algorithm:{name:"HMAC",length:32,hash:{name:"SHA-256"}},usages:["sign","verify"]};break;default:return{algorithm:{name:"HMAC"},usages:[]}}break;case"HKDF":switch(t.toLowerCase()){case"derivekey":s={algorithm:{name:"HKDF",hash:"SHA-256",salt:new Uint8Array([]),info:new Uint8Array([])},usages:["encrypt","decrypt"]};break;default:return{algorithm:{name:"HKDF"},usages:[]}}break;case"PBKDF2":switch(t.toLowerCase()){case"derivekey":s={algorithm:{name:"PBKDF2",hash:{name:"SHA-256"},salt:new Uint8Array([]),iterations:1e4},usages:["encrypt","decrypt"]};break;default:return{algorithm:{name:"PBKDF2"},usages:[]}}break}return s}getHashAlgorithm(e){let t=v;switch(e.algorithmId){case"1.2.840.10045.4.1":case"1.2.840.113549.1.1.5":t="SHA-1";break;case"1.2.840.10045.4.3.2":case"1.2.840.113549.1.1.11":t="SHA-256";break;case"1.2.840.10045.4.3.3":case"1.2.840.113549.1.1.12":t="SHA-384";break;case"1.2.840.10045.4.3.4":case"1.2.840.113549.1.1.13":t="SHA-512";break;case"1.2.840.113549.1.1.10":try{const s=new tt({schema:e.algorithmParams});if(s.hashAlgorithm){const a=this.getAlgorithmByOID(s.hashAlgorithm.algorithmId);if("name"in a)t=a.name;else return v}else t="SHA-1"}catch(s){}break}return t}async encryptEncryptedContentInfo(e){ne.assert(e,"password","contentEncryptionAlgorithm","hmacHashAlgorithm","iterationCount","contentToEncrypt","contentToEncrypt","contentType");const t=this.getOIDByAlgorithm(e.contentEncryptionAlgorithm,!0,"contentEncryptionAlgorithm"),s=this.getOIDByAlgorithm({name:"PBKDF2"},!0,"PBKDF2"),a=this.getOIDByAlgorithm({name:"HMAC",hash:{name:e.hmacHashAlgorithm}},!0,"hmacHashAlgorithm"),n=new ArrayBuffer(16),u=new Uint8Array(n);this.getRandomValues(u);const i=new ArrayBuffer(64),l=new Uint8Array(i);this.getRandomValues(l);const o=new Uint8Array(e.contentToEncrypt),c=new mt({salt:new $({valueHex:i}),iterationCount:e.iterationCount,prf:new V({algorithmId:a,algorithmParams:new Fe})}),m=new Uint8Array(e.password),h=await this.importKey("raw",m,"PBKDF2",!1,["deriveKey"]),p=await this.deriveKey({name:"PBKDF2",hash:{name:e.hmacHashAlgorithm},salt:l,iterations:e.iterationCount},h,e.contentEncryptionAlgorithm,!1,["encrypt"]),d=await this.encrypt({name:e.contentEncryptionAlgorithm.name,iv:u},p,o),w=new Bn({keyDerivationFunc:new V({algorithmId:s,algorithmParams:c.toSchema()}),encryptionScheme:new V({algorithmId:t,algorithmParams:new $({valueHex:n})})});return new Oe({contentType:e.contentType,contentEncryptionAlgorithm:new V({algorithmId:"1.2.840.113549.1.5.13",algorithmParams:w.toSchema()}),encryptedContent:new $({valueHex:d})})}async decryptEncryptedContentInfo(e){if(ne.assert(e,"password","encryptedContentInfo"),e.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId!=="1.2.840.113549.1.5.13")throw new Error('Unknown "contentEncryptionAlgorithm": '.concat(e.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId));let t;try{t=new Bn({schema:e.encryptedContentInfo.contentEncryptionAlgorithm.algorithmParams})}catch(d){throw new Error('Incorrectly encoded "pbes2Parameters"')}let s;try{s=new mt({schema:t.keyDerivationFunc.algorithmParams})}catch(d){throw new Error('Incorrectly encoded "pbkdf2Params"')}const a=this.getAlgorithmByOID(t.encryptionScheme.algorithmId,!0),n=t.encryptionScheme.algorithmParams.valueBlock.valueHex,u=new Uint8Array(n),i=s.salt.valueBlock.valueHex,l=new Uint8Array(i),o=s.iterationCount;let c="SHA-1";s.prf&&(c=this.getAlgorithmByOID(s.prf.algorithmId,!0).hash.name);const m=await this.importKey("raw",e.password,"PBKDF2",!1,["deriveKey"]),h=await this.deriveKey({name:"PBKDF2",hash:{name:c},salt:l,iterations:o},m,a,!1,["decrypt"]),p=e.encryptedContentInfo.getEncryptedContent();return this.decrypt({name:a.name,iv:u},h,p)}async stampDataWithPassword(e){if(!(e instanceof Object))throw new Error('Parameters must have type "Object"');ne.assert(e,"password","hashAlgorithm","iterationCount","salt","contentToStamp");let t;switch(e.hashAlgorithm.toLowerCase()){case"sha-1":t=160;break;case"sha-256":t=256;break;case"sha-384":t=384;break;case"sha-512":t=512;break;default:throw new Error('Incorrect "parameters.hashAlgorithm" parameter: '.concat(e.hashAlgorithm))}const s={name:"HMAC",length:t,hash:{name:e.hashAlgorithm}},a=await sp(e.hashAlgorithm,t,e.password,e.salt,e.iterationCount),n=await this.importKey("raw",new Uint8Array(a),s,!1,["sign"]);return this.sign(s,n,new Uint8Array(e.contentToStamp))}async verifyDataStampedWithPassword(e){ne.assert(e,"password","hashAlgorithm","salt","iterationCount","contentToVerify","signatureToVerify");let t=0;switch(e.hashAlgorithm.toLowerCase()){case"sha-1":t=160;break;case"sha-256":t=256;break;case"sha-384":t=384;break;case"sha-512":t=512;break;default:throw new Error('Incorrect "parameters.hashAlgorithm" parameter: '.concat(e.hashAlgorithm))}const s={name:"HMAC",length:t,hash:{name:e.hashAlgorithm}},a=await sp(e.hashAlgorithm,t,e.password,e.salt,e.iterationCount),n=await this.importKey("raw",new Uint8Array(a),s,!1,["verify"]);return this.verify(s,n,new Uint8Array(e.signatureToVerify),new Uint8Array(e.contentToVerify))}async getSignatureParameters(e,t="SHA-1"){this.getOIDByAlgorithm({name:t},!0,"hashAlgorithm");const s=new V,a=this.getAlgorithmParameters(e.algorithm.name,"sign");if(!Object.keys(a.algorithm).length)throw new Error("Parameter 'algorithm' is empty");const n=a.algorithm;switch("hash"in e.algorithm&&e.algorithm.hash&&e.algorithm.hash.name?n.hash.name=e.algorithm.hash.name:n.hash.name=t,e.algorithm.name.toUpperCase()){case"RSASSA-PKCS1-V1_5":case"ECDSA":s.algorithmId=this.getOIDByAlgorithm(n,!0);break;case"RSA-PSS":{switch(n.hash.name.toUpperCase()){case"SHA-256":n.saltLength=32;break;case"SHA-384":n.saltLength=48;break;case"SHA-512":n.saltLength=64;break}const u={};if(n.hash.name.toUpperCase()!=="SHA-1"){const l=this.getOIDByAlgorithm({name:n.hash.name},!0,"hashAlgorithm");u.hashAlgorithm=new V({algorithmId:l,algorithmParams:new Fe}),u.maskGenAlgorithm=new V({algorithmId:"1.2.840.113549.1.1.8",algorithmParams:u.hashAlgorithm.toSchema()})}n.saltLength!==20&&(u.saltLength=n.saltLength);const i=new tt(u);s.algorithmId="1.2.840.113549.1.1.10",s.algorithmParams=i.toSchema()}break;default:throw new Error("Unsupported signature algorithm: ".concat(e.algorithm.name))}return{signatureAlgorithm:s,parameters:a}}async signWithPrivateKey(e,t,s){const a=await this.sign(s.algorithm,t,e);return s.algorithm.name==="ECDSA"?g1(a):a}fillPublicKeyParameters(e,t){const s={},a=this.getHashAlgorithm(t);if(a===v)throw new Error("Unsupported signature algorithm: ".concat(t.algorithmId));let n;t.algorithmId==="1.2.840.113549.1.1.10"?n=t.algorithmId:n=e.algorithm.algorithmId;const u=this.getAlgorithmByOID(n,!0);if(s.algorithm=this.getAlgorithmParameters(u.name,"importKey"),"hash"in s.algorithm.algorithm&&(s.algorithm.algorithm.hash.name=a),u.name==="ECDSA"){const i=e.algorithm;if(!i.algorithmParams)throw new Error("Algorithm parameters for ECDSA public key are missed");const l=i.algorithmParams;if("idBlock"in i.algorithmParams&&!(l.idBlock.tagClass===1&&l.idBlock.tagNumber===6))throw new Error("Incorrect type for ECDSA public key parameters");const o=this.getAlgorithmByOID(l.valueBlock.toString(),!0);s.algorithm.algorithm.namedCurve=o.name}return s}async getPublicKey(e,t,s){s||(s=this.fillPublicKeyParameters(e,t));const a=e.toSchema().toBER(!1);return this.importKey("spki",a,s.algorithm.algorithm,!0,s.algorithm.usages)}async verifyWithPublicKey(e,t,s,a,n){let u;if(n){const o={};let c;a.algorithmId==="1.2.840.113549.1.1.10"?c=a.algorithmId:c=s.algorithm.algorithmId;const m=this.getAlgorithmByOID(c,!0);if(o.algorithm=this.getAlgorithmParameters(m.name,"importKey"),"hash"in o.algorithm.algorithm&&(o.algorithm.algorithm.hash.name=n),m.name==="ECDSA"){let h=!1;if("algorithmParams"in s.algorithm&&"idBlock"in s.algorithm.algorithmParams&&s.algorithm.algorithmParams.idBlock.tagClass===1&&s.algorithm.algorithmParams.idBlock.tagNumber===6&&(h=!0),h===!1)throw new Error("Incorrect type for ECDSA public key parameters");const p=this.getAlgorithmByOID(s.algorithm.algorithmParams.valueBlock.toString(),!0);o.algorithm.algorithm.namedCurve=p.name}u=await this.getPublicKey(s,null,o)}else{if(n=this.getHashAlgorithm(a),!n)throw new Error("Unsupported signature algorithm: ".concat(a.algorithmId));u=await this.getPublicKey(s,a)}const i=this.getAlgorithmParameters(u.algorithm.name,"verify");"hash"in i.algorithm&&(i.algorithm.hash.name=n);let l=t.valueBlock.valueHexView;if(u.algorithm.name==="ECDSA"){const o=sa.find(u.algorithm.namedCurve);if(!o)throw new Error("Unsupported named curve in use");const c=Le(l);O.assert(c,"Signature value"),l=w1(c.result,o.size)}if(u.algorithm.name==="RSA-PSS"){const o=new tt({schema:a.algorithmParams});"saltLength"in o?i.algorithm.saltLength=o.saltLength:i.algorithm.saltLength=20;let c="SHA-1";"hashAlgorithm"in o&&(c=this.getAlgorithmByOID(o.hashAlgorithm.algorithmId,!0).name),i.algorithm.hash.name=c}return this.verify(i.algorithm,u,l,e)}}let jg={name:"none",crypto:null};function rp(r){return!!(r&&typeof r=="object"&&"crypto"in r)}function ap(r,...e){let t=null;if(e.length<2)e.length?t=e[0]:t=typeof self<"u"&&self.crypto?new nc({name:"browser",crypto:self.crypto}):null;else{const s=e[0],a=e[1];rp(a)?t=a:rp(s)?t=s:"subtle"in s&&"getRandomValues"in s&&(t=new nc({crypto:s}))}if(typeof Ge<"u"&&"pid"in Ge&&typeof It<"u"&&typeof window>"u"){if(typeof It[Ge.pid]>"u")It[Ge.pid]={};else if(typeof It[Ge.pid]!="object")throw new Error("Name global.".concat(Ge.pid," already exists and it is not an object"));if(typeof It[Ge.pid].pkijs>"u")It[Ge.pid].pkijs={};else if(typeof It[Ge.pid].pkijs!="object")throw new Error("Name global.".concat(Ge.pid,".pkijs already exists and it is not an object"));It[Ge.pid].pkijs.engine={name:r,crypto:t}}else jg={name:r,crypto:t}}function p1(){if(typeof Ge<"u"&&"pid"in Ge&&typeof It<"u"&&typeof window>"u"){let r;try{r=It[Ge.pid].pkijs.engine}catch(e){throw new Error("Please call 'setEngine' before call to 'getEngine'")}return r}return jg}function Q(r=!1){const e=p1();if(!e.crypto&&r)throw new Error("Unable to create WebCrypto object");return e.crypto}function g1(r){if(r.byteLength%2!==0)return Ue;const e=r.byteLength/2,t=new ArrayBuffer(e);new Uint8Array(t).set(new Uint8Array(r,0,e));const s=new B({valueHex:t}),a=new ArrayBuffer(e);new Uint8Array(a).set(new Uint8Array(r,e,e));const n=new B({valueHex:a});return new A({value:[s.convertToDER(),n.convertToDER()]}).toBER(!1)}function w1(r,e){if(!(r instanceof A&&r.valueBlock.value.length===2&&r.valueBlock.value[0]instanceof B&&r.valueBlock.value[1]instanceof B))return Ue;const t=r.valueBlock.value[0].convertFromDER().valueBlock.valueHexView,s=r.valueBlock.value[1].convertFromDER().valueBlock.valueHexView,a=new Uint8Array(e*2);return a.set(t,e-t.byteLength),a.set(s,2*e-s.byteLength),a.buffer}async function y1(r,e,t,s,a){switch(r.toUpperCase()){case"SHA-1":case"SHA-256":case"SHA-384":case"SHA-512":break;default:throw new he("Unknown hash function: ".concat(r))}if(he.assert(e,"zBuffer","ArrayBuffer"),e.byteLength===0)throw new he("'zBuffer' has zero length, error");if(he.assert(s,"SharedInfo","ArrayBuffer"),t>255)throw new he("Please set 'Counter' argument to value less or equal to 255");const n=new ArrayBuffer(4),u=new Uint8Array(n);u[0]=0,u[1]=0,u[2]=0,u[3]=t;let i=Ue;i=go(i,e),i=go(i,n),i=go(i,s);const l=await a.digest({name:r},i);return{counter:t,result:l}}async function np(r,e,t,s,a=Q(!0)){let n=0,u=1;switch(r.toUpperCase()){case"SHA-1":n=160;break;case"SHA-256":n=256;break;case"SHA-384":n=384;break;case"SHA-512":n=512;break;default:throw new he("Unknown hash function: ".concat(r))}if(he.assert(e,"Zbuffer","ArrayBuffer"),e.byteLength===0)throw new he("'Zbuffer' has zero length, error");he.assert(s,"SharedInfo","ArrayBuffer");const i=t/n;Math.floor(i)>0&&(u=Math.floor(i),i-u>0&&u++);const l=[];for(let h=1;h<=u;h++)l.push(await y1(r,e,h,s,a));let o=Ue,c=1,m=!0;for(;m;){m=!1;for(const h of l)if(h.counter===c){o=go(o,h.result),m=!0;break}c++}if(t>>=3,o.byteLength>t){const h=new ArrayBuffer(t),p=new Uint8Array(h),d=new Uint8Array(o);for(let w=0;we.toJSON())}}}Xh.CLASS_NAME="SignedCertificateTimestampList";const Lu="attributes",v1=[Lu];class ic extends D{constructor(e={}){super(),this.attributes=f(e,Lu,ic.defaultValues(Lu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Lu:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.attributes||v,value:ge.schema()})]})}fromSchema(e){T(e,v1);const t=R(e,e,ic.schema({names:{attributes:Lu}}));O.assertSchema(t,this.className),this.attributes=Array.from(t.result.attributes,s=>new ge({schema:s}))}toSchema(){return new A({value:Array.from(this.attributes,e=>e.toSchema())})}toJSON(){return{attributes:Array.from(this.attributes,e=>e.toJSON())}}}ic.CLASS_NAME="SubjectDirectoryAttributes";class ve{static getItems(){return this.types||(this.types={},ve.register(Ag,"SubjectAltName",Co),ve.register(Ng,"IssuerAltName",Co),ve.register(Yf,"AuthorityKeyIdentifier",Xr),ve.register(Zf,"BasicConstraints",kn),ve.register(R0,"MicrosoftCaVersion",tc),ve.register(Ig,"CertificatePolicies",Eo),ve.register(V0,"CertificatePoliciesMicrosoft",Eo),ve.register(T0,"MicrosoftCertTemplateV2",fo),ve.register(xg,"CRLDistributionPoints",xo),ve.register(Qf,"FreshestCRL",xo),ve.register(B0,"ExtKeyUsage",sc),ve.register(Cg,"CertificateIssuer",qe),ve.register(ed,"AuthorityInfoAccess",Io),ve.register(O0,"SubjectInfoAccess",Io),ve.register(kg,"IssuingDistributionPoint",Ye),ve.register(Eg,"NameConstraints",yo),ve.register(Bg,"PolicyConstraints",vo),ve.register(Vg,"PolicyMappings",rc),ve.register(k0,"PrivateKeyUsagePeriod",bo),ve.register(L0,"QCStatements",ac),ve.register(D0,"SignedCertificateTimestampList",Xh),ve.register(S0,"SubjectDirectoryAttributes",ic)),this.types}static fromBER(e,t){const s=Le(t);if(s.offset===-1)return null;const a=this.find(e);if(a)try{return new a.type({schema:s.result})}catch(n){const u=new a.type;return u.parsingError="Incorrectly formatted value of extension ".concat(a.name," (").concat(e,")"),u}return s.result}static find(e){return this.getItems()[e]||null}static register(e,t,s){this.getItems()[e]={name:t,type:s}}}const Uu="extnID",vr="critical",ju="extnValue",Ac="parsedValue",b1=[Uu,vr,ju];class De extends D{get parsedValue(){if(this._parsedValue===void 0){const e=ve.fromBER(this.extnID,this.extnValue.valueBlock.valueHexView);this._parsedValue=e}return this._parsedValue||void 0}set parsedValue(e){this._parsedValue=e}constructor(e={}){super(),this.extnID=f(e,Uu,De.defaultValues(Uu)),this.critical=f(e,vr,De.defaultValues(vr)),ju in e?this.extnValue=new $({valueHex:e.extnValue}):this.extnValue=De.defaultValues(ju),Ac in e&&(this.parsedValue=f(e,Ac,De.defaultValues(Ac))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Uu:return v;case vr:return!1;case ju:return new $;case Ac:return{};default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.extnID||v}),new ia({name:t.critical||v,optional:!0}),new $({name:t.extnValue||v})]})}fromSchema(e){T(e,b1);const t=R(e,e,De.schema({names:{extnID:Uu,critical:vr,extnValue:ju}}));O.assertSchema(t,this.className),this.extnID=t.result.extnID.valueBlock.toString(),vr in t.result&&(this.critical=t.result.critical.valueBlock.value),this.extnValue=t.result.extnValue}toSchema(){const e=[];return e.push(new J({value:this.extnID})),this.critical!==De.defaultValues(vr)&&e.push(new ia({value:this.critical})),e.push(this.extnValue),new A({value:e})}toJSON(){const e={extnID:this.extnID,extnValue:this.extnValue.toJSON()};return this.critical!==De.defaultValues(vr)&&(e.critical=this.critical),this.parsedValue&&this.parsedValue.toJSON&&(e.parsedValue=this.parsedValue.toJSON()),e}}De.CLASS_NAME="Extension";const $u="extensions",S1=[$u];class je extends D{constructor(e={}){super(),this.extensions=f(e,$u,je.defaultValues($u)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case $u:return[];default:return super.defaultValues(e)}}static schema(e={},t=!1){const s=f(e,"names",{});return new A({optional:t,name:s.blockName||v,value:[new Z({name:s.extensions||v,value:De.schema(s.extension||{})})]})}fromSchema(e){T(e,S1);const t=R(e,e,je.schema({names:{extensions:$u}}));O.assertSchema(t,this.className),this.extensions=Array.from(t.result.extensions,s=>new De({schema:s}))}toSchema(){return new A({value:Array.from(this.extensions,e=>e.toSchema())})}toJSON(){return{extensions:this.extensions.map(e=>e.toJSON())}}}je.CLASS_NAME="Extensions";const Ku="issuer",Hu="serialNumber",xa="issuerUID",A1=[Ku,Hu,xa];class kt extends D{constructor(e={}){super(),this.issuer=f(e,Ku,kt.defaultValues(Ku)),this.serialNumber=f(e,Hu,kt.defaultValues(Hu)),xa in e&&(this.issuerUID=f(e,xa,kt.defaultValues(xa))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ku:return new qe;case Hu:return new B;case xa:return new re;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[qe.schema(t.issuer||{}),new B({name:t.serialNumber||v}),new re({optional:!0,name:t.issuerUID||v})]})}fromSchema(e){T(e,A1);const t=R(e,e,kt.schema({names:{issuer:{names:{blockName:Ku}},serialNumber:Hu,issuerUID:xa}}));O.assertSchema(t,this.className),this.issuer=new qe({schema:t.result.issuer}),this.serialNumber=t.result.serialNumber,xa in t.result&&(this.issuerUID=t.result.issuerUID)}toSchema(){const e=new A({value:[this.issuer.toSchema(),this.serialNumber]});return this.issuerUID&&e.valueBlock.value.push(this.issuerUID),e}toJSON(){const e={issuer:this.issuer.toJSON(),serialNumber:this.serialNumber.toJSON()};return this.issuerUID&&(e.issuerUID=this.issuerUID.toJSON()),e}}kt.CLASS_NAME="IssuerSerial";const Mu="version",Ia="baseCertificateID",Va="subjectName",Fu="issuer",Ju="signature",qu="serialNumber",Wu="attrCertValidityPeriod",Gu="attributes",Ba="issuerUniqueID",Pa="extensions",N1=[Mu,Ia,Va,Fu,Ju,qu,Wu,Gu,Ba,Pa];class ct extends D{constructor(e={}){super(),this.version=f(e,Mu,ct.defaultValues(Mu)),Ia in e&&(this.baseCertificateID=f(e,Ia,ct.defaultValues(Ia))),Va in e&&(this.subjectName=f(e,Va,ct.defaultValues(Va))),this.issuer=f(e,Fu,ct.defaultValues(Fu)),this.signature=f(e,Ju,ct.defaultValues(Ju)),this.serialNumber=f(e,qu,ct.defaultValues(qu)),this.attrCertValidityPeriod=f(e,Wu,ct.defaultValues(Wu)),this.attributes=f(e,Gu,ct.defaultValues(Gu)),Ba in e&&(this.issuerUniqueID=f(e,Ba,ct.defaultValues(Ba))),Pa in e&&(this.extensions=f(e,Pa,ct.defaultValues(Pa))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Mu:return 0;case Ia:return new kt;case Va:return new qe;case Fu:return new qe;case Ju:return new V;case qu:return new B;case Wu:return new as;case Gu:return[];case Ba:return new re;case Pa:return new je;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),new Ne({value:[new I({name:t.baseCertificateID||v,idBlock:{tagClass:3,tagNumber:0},value:kt.schema().valueBlock.value}),new I({name:t.subjectName||v,idBlock:{tagClass:3,tagNumber:1},value:qe.schema().valueBlock.value})]}),qe.schema({names:{blockName:t.issuer||v}}),V.schema(t.signature||{}),new B({name:t.serialNumber||v}),as.schema(t.attrCertValidityPeriod||{}),new A({name:t.attributes||v,value:[new Z({value:ge.schema()})]}),new re({optional:!0,name:t.issuerUniqueID||v}),je.schema(t.extensions||{},!0)]})}fromSchema(e){T(e,N1);const t=R(e,e,ct.schema({names:{version:Mu,baseCertificateID:Ia,subjectName:Va,issuer:Fu,signature:{names:{blockName:Ju}},serialNumber:qu,attrCertValidityPeriod:{names:{blockName:Wu}},attributes:Gu,issuerUniqueID:Ba,extensions:{names:{blockName:Pa}}}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,Ia in t.result&&(this.baseCertificateID=new kt({schema:new A({value:t.result.baseCertificateID.valueBlock.value})})),Va in t.result&&(this.subjectName=new qe({schema:new A({value:t.result.subjectName.valueBlock.value})})),this.issuer=t.result.issuer,this.signature=new V({schema:t.result.signature}),this.serialNumber=t.result.serialNumber,this.attrCertValidityPeriod=new as({schema:t.result.attrCertValidityPeriod}),this.attributes=Array.from(t.result.attributes.valueBlock.value,s=>new ge({schema:s})),Ba in t.result&&(this.issuerUniqueID=t.result.issuerUniqueID),Pa in t.result&&(this.extensions=new je({schema:t.result.extensions}))}toSchema(){const e=new A({value:[new B({value:this.version})]});return this.baseCertificateID&&e.valueBlock.value.push(new I({idBlock:{tagClass:3,tagNumber:0},value:this.baseCertificateID.toSchema().valueBlock.value})),this.subjectName&&e.valueBlock.value.push(new I({idBlock:{tagClass:3,tagNumber:1},value:this.subjectName.toSchema().valueBlock.value})),e.valueBlock.value.push(this.issuer.toSchema()),e.valueBlock.value.push(this.signature.toSchema()),e.valueBlock.value.push(this.serialNumber),e.valueBlock.value.push(this.attrCertValidityPeriod.toSchema()),e.valueBlock.value.push(new A({value:Array.from(this.attributes,t=>t.toSchema())})),this.issuerUniqueID&&e.valueBlock.value.push(this.issuerUniqueID),this.extensions&&e.valueBlock.value.push(this.extensions.toSchema()),e}toJSON(){const e={version:this.version};return this.baseCertificateID&&(e.baseCertificateID=this.baseCertificateID.toJSON()),this.subjectName&&(e.subjectName=this.subjectName.toJSON()),e.issuer=this.issuer.toJSON(),e.signature=this.signature.toJSON(),e.serialNumber=this.serialNumber.toJSON(),e.attrCertValidityPeriod=this.attrCertValidityPeriod.toJSON(),e.attributes=Array.from(this.attributes,t=>t.toJSON()),this.issuerUniqueID&&(e.issuerUniqueID=this.issuerUniqueID.toJSON()),this.extensions&&(e.extensions=this.extensions.toJSON()),e}}ct.CLASS_NAME="AttributeCertificateInfoV1";const zu="acinfo",_u="signatureAlgorithm",Xu="signatureValue",k1=[zu,Xu,_u];class Ls extends D{constructor(e={}){super(),this.acinfo=f(e,zu,Ls.defaultValues(zu)),this.signatureAlgorithm=f(e,_u,Ls.defaultValues(_u)),this.signatureValue=f(e,Xu,Ls.defaultValues(Xu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case zu:return new ct;case _u:return new V;case Xu:return new re;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[ct.schema(t.acinfo||{}),V.schema(t.signatureAlgorithm||{}),new re({name:t.signatureValue||v})]})}fromSchema(e){T(e,k1);const t=R(e,e,Ls.schema({names:{acinfo:{names:{blockName:zu}},signatureAlgorithm:{names:{blockName:_u}},signatureValue:Xu}}));O.assertSchema(t,this.className),this.acinfo=new ct({schema:t.result.acinfo}),this.signatureAlgorithm=new V({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}toSchema(){return new A({value:[this.acinfo.toSchema(),this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){return{acinfo:this.acinfo.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()}}}Ls.CLASS_NAME="AttributeCertificateV1";const Zu="digestedObjectType",Oa="otherObjectTypeID",Qu="digestAlgorithm",Yu="objectDigest",C1=[Zu,Oa,Qu,Yu];class Rt extends D{constructor(e={}){super(),this.digestedObjectType=f(e,Zu,Rt.defaultValues(Zu)),Oa in e&&(this.otherObjectTypeID=f(e,Oa,Rt.defaultValues(Oa))),this.digestAlgorithm=f(e,Qu,Rt.defaultValues(Qu)),this.objectDigest=f(e,Yu,Rt.defaultValues(Yu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Zu:return new Yl;case Oa:return new J;case Qu:return new V;case Yu:return new re;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Yl({name:t.digestedObjectType||v}),new J({optional:!0,name:t.otherObjectTypeID||v}),V.schema(t.digestAlgorithm||{}),new re({name:t.objectDigest||v})]})}fromSchema(e){T(e,C1);const t=R(e,e,Rt.schema({names:{digestedObjectType:Zu,otherObjectTypeID:Oa,digestAlgorithm:{names:{blockName:Qu}},objectDigest:Yu}}));O.assertSchema(t,this.className),this.digestedObjectType=t.result.digestedObjectType,Oa in t.result&&(this.otherObjectTypeID=t.result.otherObjectTypeID),this.digestAlgorithm=new V({schema:t.result.digestAlgorithm}),this.objectDigest=t.result.objectDigest}toSchema(){const e=new A({value:[this.digestedObjectType]});return this.otherObjectTypeID&&e.valueBlock.value.push(this.otherObjectTypeID),e.valueBlock.value.push(this.digestAlgorithm.toSchema()),e.valueBlock.value.push(this.objectDigest),e}toJSON(){const e={digestedObjectType:this.digestedObjectType.toJSON(),digestAlgorithm:this.digestAlgorithm.toJSON(),objectDigest:this.objectDigest.toJSON()};return this.otherObjectTypeID&&(e.otherObjectTypeID=this.otherObjectTypeID.toJSON()),e}}Rt.CLASS_NAME="ObjectDigestInfo";const Da="issuerName",Ta="baseCertificateID",Ra="objectDigestInfo",E1=[Da,Ta,Ra];class Qr extends D{constructor(e={}){super(),Da in e&&(this.issuerName=f(e,Da,Qr.defaultValues(Da))),Ta in e&&(this.baseCertificateID=f(e,Ta,Qr.defaultValues(Ta))),Ra in e&&(this.objectDigestInfo=f(e,Ra,Qr.defaultValues(Ra))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Da:return new qe;case Ta:return new kt;case Ra:return new Rt;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[qe.schema({names:{blockName:t.issuerName}},!0),new I({optional:!0,name:t.baseCertificateID||v,idBlock:{tagClass:3,tagNumber:0},value:kt.schema().valueBlock.value}),new I({optional:!0,name:t.objectDigestInfo||v,idBlock:{tagClass:3,tagNumber:1},value:Rt.schema().valueBlock.value})]})}fromSchema(e){T(e,E1);const t=R(e,e,Qr.schema({names:{issuerName:Da,baseCertificateID:Ta,objectDigestInfo:Ra}}));O.assertSchema(t,this.className),Da in t.result&&(this.issuerName=new qe({schema:t.result.issuerName})),Ta in t.result&&(this.baseCertificateID=new kt({schema:new A({value:t.result.baseCertificateID.valueBlock.value})})),Ra in t.result&&(this.objectDigestInfo=new Rt({schema:new A({value:t.result.objectDigestInfo.valueBlock.value})}))}toSchema(){const e=new A;return this.issuerName&&e.valueBlock.value.push(this.issuerName.toSchema()),this.baseCertificateID&&e.valueBlock.value.push(new I({idBlock:{tagClass:3,tagNumber:0},value:this.baseCertificateID.toSchema().valueBlock.value})),this.objectDigestInfo&&e.valueBlock.value.push(new I({idBlock:{tagClass:3,tagNumber:1},value:this.objectDigestInfo.toSchema().valueBlock.value})),e}toJSON(){const e={};return this.issuerName&&(e.issuerName=this.issuerName.toJSON()),this.baseCertificateID&&(e.baseCertificateID=this.baseCertificateID.toJSON()),this.objectDigestInfo&&(e.objectDigestInfo=this.objectDigestInfo.toJSON()),e}}Qr.CLASS_NAME="V2Form";const La="baseCertificateID",Ua="entityName",ja="objectDigestInfo",x1=[La,Ua,ja];class Us extends D{constructor(e={}){super(),La in e&&(this.baseCertificateID=f(e,La,Us.defaultValues(La))),Ua in e&&(this.entityName=f(e,Ua,Us.defaultValues(Ua))),ja in e&&(this.objectDigestInfo=f(e,ja,Us.defaultValues(ja))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case La:return new kt;case Ua:return new qe;case ja:return new Rt;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new I({optional:!0,name:t.baseCertificateID||v,idBlock:{tagClass:3,tagNumber:0},value:kt.schema().valueBlock.value}),new I({optional:!0,name:t.entityName||v,idBlock:{tagClass:3,tagNumber:1},value:qe.schema().valueBlock.value}),new I({optional:!0,name:t.objectDigestInfo||v,idBlock:{tagClass:3,tagNumber:2},value:Rt.schema().valueBlock.value})]})}fromSchema(e){T(e,x1);const t=R(e,e,Us.schema({names:{baseCertificateID:La,entityName:Ua,objectDigestInfo:ja}}));O.assertSchema(t,this.className),La in t.result&&(this.baseCertificateID=new kt({schema:new A({value:t.result.baseCertificateID.valueBlock.value})})),Ua in t.result&&(this.entityName=new qe({schema:new A({value:t.result.entityName.valueBlock.value})})),ja in t.result&&(this.objectDigestInfo=new Rt({schema:new A({value:t.result.objectDigestInfo.valueBlock.value})}))}toSchema(){const e=new A;return this.baseCertificateID&&e.valueBlock.value.push(new I({idBlock:{tagClass:3,tagNumber:0},value:this.baseCertificateID.toSchema().valueBlock.value})),this.entityName&&e.valueBlock.value.push(new I({idBlock:{tagClass:3,tagNumber:1},value:this.entityName.toSchema().valueBlock.value})),this.objectDigestInfo&&e.valueBlock.value.push(new I({idBlock:{tagClass:3,tagNumber:2},value:this.objectDigestInfo.toSchema().valueBlock.value})),e}toJSON(){const e={};return this.baseCertificateID&&(e.baseCertificateID=this.baseCertificateID.toJSON()),this.entityName&&(e.entityName=this.entityName.toJSON()),this.objectDigestInfo&&(e.objectDigestInfo=this.objectDigestInfo.toJSON()),e}}Us.CLASS_NAME="Holder";const el="version",tl="holder",sl="issuer",rl="signature",al="serialNumber",nl="attrCertValidityPeriod",il="attributes",$a="issuerUniqueID",Ka="extensions",I1=[el,tl,sl,rl,al,nl,il,$a,Ka];class wt extends D{constructor(e={}){super(),this.version=f(e,el,wt.defaultValues(el)),this.holder=f(e,tl,wt.defaultValues(tl)),this.issuer=f(e,sl,wt.defaultValues(sl)),this.signature=f(e,rl,wt.defaultValues(rl)),this.serialNumber=f(e,al,wt.defaultValues(al)),this.attrCertValidityPeriod=f(e,nl,wt.defaultValues(nl)),this.attributes=f(e,il,wt.defaultValues(il)),$a in e&&(this.issuerUniqueID=f(e,$a,wt.defaultValues($a))),Ka in e&&(this.extensions=f(e,Ka,wt.defaultValues(Ka))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case el:return 1;case tl:return new Us;case sl:return{};case rl:return new V;case al:return new B;case nl:return new as;case il:return[];case $a:return new re;case Ka:return new je;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),Us.schema(t.holder||{}),new Ne({value:[qe.schema({names:{blockName:t.issuer||v}}),new I({name:t.issuer||v,idBlock:{tagClass:3,tagNumber:0},value:Qr.schema().valueBlock.value})]}),V.schema(t.signature||{}),new B({name:t.serialNumber||v}),as.schema(t.attrCertValidityPeriod||{}),new A({name:t.attributes||v,value:[new Z({value:ge.schema()})]}),new re({optional:!0,name:t.issuerUniqueID||v}),je.schema(t.extensions||{},!0)]})}fromSchema(e){T(e,I1);const t=R(e,e,wt.schema({names:{version:el,holder:{names:{blockName:tl}},issuer:sl,signature:{names:{blockName:rl}},serialNumber:al,attrCertValidityPeriod:{names:{blockName:nl}},attributes:il,issuerUniqueID:$a,extensions:{names:{blockName:Ka}}}}));switch(O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.holder=new Us({schema:t.result.holder}),t.result.issuer.idBlock.tagClass){case 3:this.issuer=new Qr({schema:new A({value:t.result.issuer.valueBlock.value})});break;case 1:default:throw new Error("Incorrect value for 'issuer' in AttributeCertificateInfoV2")}this.signature=new V({schema:t.result.signature}),this.serialNumber=t.result.serialNumber,this.attrCertValidityPeriod=new as({schema:t.result.attrCertValidityPeriod}),this.attributes=Array.from(t.result.attributes.valueBlock.value,s=>new ge({schema:s})),$a in t.result&&(this.issuerUniqueID=t.result.issuerUniqueID),Ka in t.result&&(this.extensions=new je({schema:t.result.extensions}))}toSchema(){const e=new A({value:[new B({value:this.version}),this.holder.toSchema(),new I({idBlock:{tagClass:3,tagNumber:0},value:this.issuer.toSchema().valueBlock.value}),this.signature.toSchema(),this.serialNumber,this.attrCertValidityPeriod.toSchema(),new A({value:Array.from(this.attributes,t=>t.toSchema())})]});return this.issuerUniqueID&&e.valueBlock.value.push(this.issuerUniqueID),this.extensions&&e.valueBlock.value.push(this.extensions.toSchema()),e}toJSON(){const e={version:this.version,holder:this.holder.toJSON(),issuer:this.issuer.toJSON(),signature:this.signature.toJSON(),serialNumber:this.serialNumber.toJSON(),attrCertValidityPeriod:this.attrCertValidityPeriod.toJSON(),attributes:Array.from(this.attributes,t=>t.toJSON())};return this.issuerUniqueID&&(e.issuerUniqueID=this.issuerUniqueID.toJSON()),this.extensions&&(e.extensions=this.extensions.toJSON()),e}}wt.CLASS_NAME="AttributeCertificateInfoV2";const ol="acinfo",ul="signatureAlgorithm",ll="signatureValue",V1=[ol,ul,ll];class Lt extends D{constructor(e={}){super(),this.acinfo=f(e,ol,Lt.defaultValues(ol)),this.signatureAlgorithm=f(e,ul,Lt.defaultValues(ul)),this.signatureValue=f(e,ll,Lt.defaultValues(ll)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ol:return new wt;case ul:return new V;case ll:return new re;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[wt.schema(t.acinfo||{}),V.schema(t.signatureAlgorithm||{}),new re({name:t.signatureValue||v})]})}fromSchema(e){T(e,V1);const t=R(e,e,Lt.schema({names:{acinfo:{names:{blockName:ol}},signatureAlgorithm:{names:{blockName:ul}},signatureValue:ll}}));O.assertSchema(t,this.className),this.acinfo=new wt({schema:t.result.acinfo}),this.signatureAlgorithm=new V({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}toSchema(){return new A({value:[this.acinfo.toSchema(),this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){return{acinfo:this.acinfo.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()}}}Lt.CLASS_NAME="AttributeCertificateV2";const Ha="contentType",si="content",B1=[Ha,si];class fe extends D{constructor(e={}){super(),this.contentType=f(e,Ha,fe.defaultValues(Ha)),this.content=f(e,si,fe.defaultValues(si)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ha:return v;case si:return new X;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ha:return typeof t=="string"&&t===this.defaultValues(Ha);case si:return t instanceof X;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return"optional"in t||(t.optional=!1),new A({name:t.blockName||"ContentInfo",optional:t.optional,value:[new J({name:t.contentType||Ha}),new I({idBlock:{tagClass:3,tagNumber:0},value:[new X({name:t.content||si})]})]})}fromSchema(e){T(e,B1);const t=R(e,e,fe.schema());O.assertSchema(t,this.className),this.contentType=t.result.contentType.valueBlock.toString(),this.content=t.result.content}toSchema(){return new A({value:[new J({value:this.contentType}),new I({idBlock:{tagClass:3,tagNumber:0},value:[this.content]})]})}toJSON(){const e={contentType:this.contentType};return this.content instanceof X||(e.content=this.content.toJSON()),e}}fe.CLASS_NAME="ContentInfo",fe.DATA=td,fe.SIGNED_DATA=Pg,fe.ENVELOPED_DATA=Og,fe.ENCRYPTED_DATA=Dg;const Cm="type",Em="value",mf="utcTimeName",ff="generalTimeName",P1=[mf,ff];var wp;(function(r){r[r.UTCTime=0]="UTCTime",r[r.GeneralizedTime=1]="GeneralizedTime",r[r.empty=2]="empty"})(wp||(wp={}));class Re extends D{constructor(e={}){super(),this.type=f(e,Cm,Re.defaultValues(Cm)),this.value=f(e,Em,Re.defaultValues(Em)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Cm:return 0;case Em:return new Date(0,0,0);default:return super.defaultValues(e)}}static schema(e={},t=!1){const s=f(e,"names",{});return new Ne({optional:t,value:[new Xm({name:s.utcTimeName||v}),new ke({name:s.generalTimeName||v})]})}fromSchema(e){T(e,P1);const t=R(e,e,Re.schema({names:{utcTimeName:mf,generalTimeName:ff}}));O.assertSchema(t,this.className),mf in t.result&&(this.type=0,this.value=t.result.utcTimeName.toDate()),ff in t.result&&(this.type=1,this.value=t.result.generalTimeName.toDate())}toSchema(){return this.type===0?new Xm({valueDate:this.value}):this.type===1?new ke({valueDate:this.value}):{}}toJSON(){return{type:this.type,value:this.value}}}Re.CLASS_NAME="Time";const xm="tbs",br="version",Wc="serialNumber",Gc="signature",zc="issuer",_c="notBefore",Xc="notAfter",Zc="subject",Qc="subjectPublicKeyInfo",cl="issuerUniqueID",hl="subjectUniqueID",ml="extensions",fl="signatureAlgorithm",dl="signatureValue",Ut="tbsCertificate",Dh="".concat(Ut,".").concat(br),sd="".concat(Ut,".").concat(Wc),rd="".concat(Ut,".").concat(Gc),ad="".concat(Ut,".").concat(zc),Th="".concat(Ut,".").concat(_c),Rh="".concat(Ut,".").concat(Xc),nd="".concat(Ut,".").concat(Zc),id="".concat(Ut,".").concat(Qc),Lh="".concat(Ut,".").concat(cl),Uh="".concat(Ut,".").concat(hl),zl="".concat(Ut,".").concat(ml),O1=[Ut,Dh,sd,rd,ad,Th,Rh,nd,id,Lh,Uh,zl,fl,dl];function D1(r={}){const e=f(r,"names",{});return new A({name:e.blockName||Ut,value:[new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new B({name:e.tbsCertificateVersion||Dh})]}),new B({name:e.tbsCertificateSerialNumber||sd}),V.schema(e.signature||{names:{blockName:rd}}),me.schema(e.issuer||{names:{blockName:ad}}),new A({name:e.tbsCertificateValidity||"tbsCertificate.validity",value:[Re.schema(e.notBefore||{names:{utcTimeName:Th,generalTimeName:Th}}),Re.schema(e.notAfter||{names:{utcTimeName:Rh,generalTimeName:Rh}})]}),me.schema(e.subject||{names:{blockName:nd}}),Ct.schema(e.subjectPublicKeyInfo||{names:{blockName:id}}),new _({name:e.tbsCertificateIssuerUniqueID||Lh,optional:!0,idBlock:{tagClass:3,tagNumber:1}}),new _({name:e.tbsCertificateSubjectUniqueID||Uh,optional:!0,idBlock:{tagClass:3,tagNumber:2}}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:3},value:[je.schema(e.extensions||{names:{blockName:zl}})]})]})}class oe extends D{get tbs(){return pe.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(f(e,xm,oe.defaultValues(xm))),this.version=f(e,br,oe.defaultValues(br)),this.serialNumber=f(e,Wc,oe.defaultValues(Wc)),this.signature=f(e,Gc,oe.defaultValues(Gc)),this.issuer=f(e,zc,oe.defaultValues(zc)),this.notBefore=f(e,_c,oe.defaultValues(_c)),this.notAfter=f(e,Xc,oe.defaultValues(Xc)),this.subject=f(e,Zc,oe.defaultValues(Zc)),this.subjectPublicKeyInfo=f(e,Qc,oe.defaultValues(Qc)),cl in e&&(this.issuerUniqueID=f(e,cl,oe.defaultValues(cl))),hl in e&&(this.subjectUniqueID=f(e,hl,oe.defaultValues(hl))),ml in e&&(this.extensions=f(e,ml,oe.defaultValues(ml))),this.signatureAlgorithm=f(e,fl,oe.defaultValues(fl)),this.signatureValue=f(e,dl,oe.defaultValues(dl)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case xm:return Ue;case br:return 0;case Wc:return new B;case Gc:return new V;case zc:return new me;case _c:return new Re;case Xc:return new Re;case Zc:return new me;case Qc:return new Ct;case cl:return Ue;case hl:return Ue;case ml:return[];case fl:return new V;case dl:return new re;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[D1(t.tbsCertificate),V.schema(t.signatureAlgorithm||{names:{blockName:fl}}),new re({name:t.signatureValue||dl})]})}fromSchema(e){T(e,O1);const t=R(e,e,oe.schema({names:{tbsCertificate:{names:{extensions:{names:{extensions:zl}}}}}}));O.assertSchema(t,this.className),this.tbsView=t.result.tbsCertificate.valueBeforeDecodeView,Dh in t.result&&(this.version=t.result[Dh].valueBlock.valueDec),this.serialNumber=t.result[sd],this.signature=new V({schema:t.result[rd]}),this.issuer=new me({schema:t.result[ad]}),this.notBefore=new Re({schema:t.result[Th]}),this.notAfter=new Re({schema:t.result[Rh]}),this.subject=new me({schema:t.result[nd]}),this.subjectPublicKeyInfo=new Ct({schema:t.result[id]}),Lh in t.result&&(this.issuerUniqueID=t.result[Lh].valueBlock.valueHex),Uh in t.result&&(this.subjectUniqueID=t.result[Uh].valueBlock.valueHex),zl in t.result&&(this.extensions=Array.from(t.result[zl],s=>new De({schema:s}))),this.signatureAlgorithm=new V({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}encodeTBS(){const e=[];return br in this&&this.version!==oe.defaultValues(br)&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new B({value:this.version})]})),e.push(this.serialNumber),e.push(this.signature.toSchema()),e.push(this.issuer.toSchema()),e.push(new A({value:[this.notBefore.toSchema(),this.notAfter.toSchema()]})),e.push(this.subject.toSchema()),e.push(this.subjectPublicKeyInfo.toSchema()),this.issuerUniqueID&&e.push(new _({optional:!0,idBlock:{tagClass:3,tagNumber:1},valueHex:this.issuerUniqueID})),this.subjectUniqueID&&e.push(new _({optional:!0,idBlock:{tagClass:3,tagNumber:2},valueHex:this.subjectUniqueID})),this.extensions&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:3},value:[new A({value:Array.from(this.extensions,t=>t.toSchema())})]})),new A({value:e})}toSchema(e=!1){let t;if(e===!1){if(!this.tbsView.byteLength)return oe.schema().value[0];const s=Le(this.tbsView);O.assert(s,"TBS Certificate"),t=s.result}else t=this.encodeTBS();return new A({value:[t,this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){const e={tbs:ce.ToHex(this.tbsView),version:this.version,serialNumber:this.serialNumber.toJSON(),signature:this.signature.toJSON(),issuer:this.issuer.toJSON(),notBefore:this.notBefore.toJSON(),notAfter:this.notAfter.toJSON(),subject:this.subject.toJSON(),subjectPublicKeyInfo:this.subjectPublicKeyInfo.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()};return br in this&&this.version!==oe.defaultValues(br)&&(e.version=this.version),this.issuerUniqueID&&(e.issuerUniqueID=ce.ToHex(this.issuerUniqueID)),this.subjectUniqueID&&(e.subjectUniqueID=ce.ToHex(this.subjectUniqueID)),this.extensions&&(e.extensions=Array.from(this.extensions,t=>t.toJSON())),e}async getPublicKey(e,t=Q(!0)){return t.getPublicKey(this.subjectPublicKeyInfo,this.signatureAlgorithm,e)}async getKeyHash(e="SHA-1",t=Q(!0)){return t.digest({name:e},this.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView)}async sign(e,t="SHA-1",s=Q(!0)){if(!e)throw new Error("Need to provide a private key for signing");const a=await s.getSignatureParameters(e,t),n=a.parameters;this.signature=a.signatureAlgorithm,this.signatureAlgorithm=a.signatureAlgorithm,this.tbsView=new Uint8Array(this.encodeTBS().toBER());const u=await s.signWithPrivateKey(this.tbsView,e,n);this.signatureValue=new re({valueHex:u})}async verify(e,t=Q(!0)){let s;if(e?s=e.subjectPublicKeyInfo:this.issuer.isEqual(this.subject)&&(s=this.subjectPublicKeyInfo),!(s instanceof Ct))throw new Error("Please provide issuer certificate as a parameter");return t.verifyWithPublicKey(this.tbsView,this.signatureValue,s,this.signatureAlgorithm)}}oe.CLASS_NAME="Certificate";function $g(r,e=null){if(e&&r.issuer.isEqual(e.issuer)&&r.serialNumber.isEqual(e.serialNumber))return null;let t=!1;if(r.extensions){for(const s of r.extensions)if(s.extnID===Zf&&s.parsedValue instanceof kn&&s.parsedValue.cA){t=!0;break}}return t?r:null}const ri="certId",ai="certValue",jn="parsedValue",T1=[ri,ai];class yn extends D{constructor(e={}){super(),this.certId=f(e,ri,yn.defaultValues(ri)),this.certValue=f(e,ai,yn.defaultValues(ai)),jn in e&&(this.parsedValue=f(e,jn,yn.defaultValues(jn))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ri:return v;case ai:return new X;case jn:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ri:return t===v;case ai:return t instanceof X;case jn:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.id||"id"}),new I({idBlock:{tagClass:3,tagNumber:0},value:[new X({name:t.value||"value"})]})]})}fromSchema(e){T(e,T1);const t=R(e,e,yn.schema({names:{id:ri,value:ai}}));O.assertSchema(t,this.className),this.certId=t.result.certId.valueBlock.toString(),this.certValue=t.result.certValue;const s=this.certValue.valueBlock.valueHexView;switch(this.certId){case Qd:try{this.parsedValue=oe.fromBER(s)}catch(a){Lt.fromBER(s)}break;case Yd:this.parsedValue=Lt.fromBER(s);break;case j0:default:throw new Error("Incorrect CERT_ID value in CertBag: ".concat(this.certId))}}toSchema(){return jn in this&&("acinfo"in this.parsedValue?this.certId=Yd:this.certId=Qd,this.certValue=new $({valueHex:this.parsedValue.toSchema().toBER(!1)})),new A({value:[new J({value:this.certId}),new I({idBlock:{tagClass:3,tagNumber:0},value:["toSchema"in this.certValue?this.certValue.toSchema():this.certValue]})]})}toJSON(){return{certId:this.certId,certValue:this.certValue.toJSON()}}}yn.CLASS_NAME="CertBag";const pl="userCertificate",ni="revocationDate",Ma="crlEntryExtensions",R1=[pl,ni,Ma];class vn extends D{constructor(e={}){super(),this.userCertificate=f(e,pl,vn.defaultValues(pl)),this.revocationDate=f(e,ni,vn.defaultValues(ni)),Ma in e&&(this.crlEntryExtensions=f(e,Ma,vn.defaultValues(Ma))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case pl:return new B;case ni:return new Re;case Ma:return new je;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.userCertificate||pl}),Re.schema({names:{utcTimeName:t.revocationDate||ni,generalTimeName:t.revocationDate||ni}}),je.schema({names:{blockName:t.crlEntryExtensions||Ma}},!0)]})}fromSchema(e){T(e,R1);const t=R(e,e,vn.schema());O.assertSchema(t,this.className),this.userCertificate=t.result.userCertificate,this.revocationDate=new Re({schema:t.result.revocationDate}),Ma in t.result&&(this.crlEntryExtensions=new je({schema:t.result.crlEntryExtensions}))}toSchema(){const e=[this.userCertificate,this.revocationDate.toSchema()];return this.crlEntryExtensions&&e.push(this.crlEntryExtensions.toSchema()),new A({value:e})}toJSON(){const e={userCertificate:this.userCertificate.toJSON(),revocationDate:this.revocationDate.toJSON()};return this.crlEntryExtensions&&(e.crlEntryExtensions=this.crlEntryExtensions.toJSON()),e}}vn.CLASS_NAME="RevokedCertificate";const Im="tbs",Ho="version",Vm="signature",Bm="issuer",Pm="thisUpdate",Nc="nextUpdate",kc="revokedCertificates",Cc="crlExtensions",gl="signatureAlgorithm",wl="signatureValue",qs="tbsCertList",jh="".concat(qs,".version"),od="".concat(qs,".signature"),ud="".concat(qs,".issuer"),$h="".concat(qs,".thisUpdate"),oc="".concat(qs,".nextUpdate"),Kh="".concat(qs,".revokedCertificates"),Hh="".concat(qs,".extensions"),L1=[qs,jh,od,ud,$h,oc,Kh,Hh,gl,wl];function U1(r={}){const e=f(r,"names",{});return new A({name:e.blockName||qs,value:[new B({optional:!0,name:e.tbsCertListVersion||jh,value:2}),V.schema(e.signature||{names:{blockName:od}}),me.schema(e.issuer||{names:{blockName:ud}}),Re.schema(e.tbsCertListThisUpdate||{names:{utcTimeName:$h,generalTimeName:$h}}),Re.schema(e.tbsCertListNextUpdate||{names:{utcTimeName:oc,generalTimeName:oc}},!0),new A({optional:!0,value:[new Z({name:e.tbsCertListRevokedCertificates||Kh,value:new A({value:[new B,Re.schema(),je.schema({},!0)]})})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[je.schema(e.crlExtensions||{names:{blockName:Hh}})]})]})}const j1=[Yf,Ng,C0,E0,kg,Qf,ed,x0,I0,Cg];class Me extends D{get tbs(){return pe.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(f(e,Im,Me.defaultValues(Im))),this.version=f(e,Ho,Me.defaultValues(Ho)),this.signature=f(e,Vm,Me.defaultValues(Vm)),this.issuer=f(e,Bm,Me.defaultValues(Bm)),this.thisUpdate=f(e,Pm,Me.defaultValues(Pm)),Nc in e&&(this.nextUpdate=f(e,Nc,Me.defaultValues(Nc))),kc in e&&(this.revokedCertificates=f(e,kc,Me.defaultValues(kc))),Cc in e&&(this.crlExtensions=f(e,Cc,Me.defaultValues(Cc))),this.signatureAlgorithm=f(e,gl,Me.defaultValues(gl)),this.signatureValue=f(e,wl,Me.defaultValues(wl)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Im:return Ue;case Ho:return 0;case Vm:return new V;case Bm:return new me;case Pm:return new Re;case Nc:return new Re;case kc:return[];case Cc:return new je;case gl:return new V;case wl:return new re;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||"CertificateList",value:[U1(e),V.schema(t.signatureAlgorithm||{names:{blockName:gl}}),new re({name:t.signatureValue||wl})]})}fromSchema(e){T(e,L1);const t=R(e,e,Me.schema());O.assertSchema(t,this.className),this.tbsView=t.result.tbsCertList.valueBeforeDecodeView,jh in t.result&&(this.version=t.result[jh].valueBlock.valueDec),this.signature=new V({schema:t.result[od]}),this.issuer=new me({schema:t.result[ud]}),this.thisUpdate=new Re({schema:t.result[$h]}),oc in t.result&&(this.nextUpdate=new Re({schema:t.result[oc]})),Kh in t.result&&(this.revokedCertificates=Array.from(t.result[Kh],s=>new vn({schema:s}))),Hh in t.result&&(this.crlExtensions=new je({schema:t.result[Hh]})),this.signatureAlgorithm=new V({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}encodeTBS(){const e=[];return this.version!==Me.defaultValues(Ho)&&e.push(new B({value:this.version})),e.push(this.signature.toSchema()),e.push(this.issuer.toSchema()),e.push(this.thisUpdate.toSchema()),this.nextUpdate&&e.push(this.nextUpdate.toSchema()),this.revokedCertificates&&e.push(new A({value:Array.from(this.revokedCertificates,t=>t.toSchema())})),this.crlExtensions&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[this.crlExtensions.toSchema()]})),new A({value:e})}toSchema(e=!1){let t;if(e)t=this.encodeTBS();else{if(!this.tbsView.byteLength)return Me.schema();const s=Le(this.tbsView);O.assert(s,"TBS Certificate Revocation List"),t=s.result}return new A({value:[t,this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){const e={tbs:ce.ToHex(this.tbsView),version:this.version,signature:this.signature.toJSON(),issuer:this.issuer.toJSON(),thisUpdate:this.thisUpdate.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()};return this.version!==Me.defaultValues(Ho)&&(e.version=this.version),this.nextUpdate&&(e.nextUpdate=this.nextUpdate.toJSON()),this.revokedCertificates&&(e.revokedCertificates=Array.from(this.revokedCertificates,t=>t.toJSON())),this.crlExtensions&&(e.crlExtensions=this.crlExtensions.toJSON()),e}isCertificateRevoked(e){if(!this.issuer.isEqual(e.issuer)||!this.revokedCertificates)return!1;for(const t of this.revokedCertificates)if(t.userCertificate.isEqual(e.serialNumber))return!0;return!1}async sign(e,t="SHA-1",s=Q(!0)){if(!e)throw new Error("Need to provide a private key for signing");const a=await s.getSignatureParameters(e,t),{parameters:n}=a;this.signature=a.signatureAlgorithm,this.signatureAlgorithm=a.signatureAlgorithm,this.tbsView=new Uint8Array(this.encodeTBS().toBER());const u=await s.signWithPrivateKey(this.tbsView,e,n);this.signatureValue=new re({valueHex:u})}async verify(e={},t=Q(!0)){let s;if(e.issuerCertificate&&(s=e.issuerCertificate.subjectPublicKeyInfo,!this.issuer.isEqual(e.issuerCertificate.subject)))return!1;if(e.publicKeyInfo&&(s=e.publicKeyInfo),!s)throw new Error("Issuer's certificate must be provided as an input parameter");if(this.crlExtensions){for(const a of this.crlExtensions.extensions)if(a.critical&&!j1.includes(a.extnID))return!1}return t.verifyWithPublicKey(this.tbsView,this.signatureValue,s,this.signatureAlgorithm)}}Me.CLASS_NAME="CertificateRevocationList";const ii="crlId",oi="crlValue",Mo="parsedValue",$1=[ii,oi];class bn extends D{constructor(e={}){super(),this.crlId=f(e,ii,bn.defaultValues(ii)),this.crlValue=f(e,oi,bn.defaultValues(oi)),Mo in e&&(this.parsedValue=f(e,Mo,bn.defaultValues(Mo))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ii:return v;case oi:return new X;case Mo:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ii:return t===v;case oi:return t instanceof X;case Mo:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.id||"id"}),new I({idBlock:{tagClass:3,tagNumber:0},value:[new X({name:t.value||"value"})]})]})}fromSchema(e){T(e,$1);const t=R(e,e,bn.schema({names:{id:ii,value:oi}}));switch(O.assertSchema(t,this.className),this.crlId=t.result.crlId.valueBlock.toString(),this.crlValue=t.result.crlValue,this.crlId){case ep:this.parsedValue=Me.fromBER(this.certValue.valueBlock.valueHex);break;default:throw new Error("Incorrect CRL_ID value in CRLBag: ".concat(this.crlId))}}toSchema(){return this.parsedValue&&(this.crlId=ep,this.crlValue=new $({valueHex:this.parsedValue.toSchema().toBER(!1)})),new A({value:[new J({value:this.crlId}),new I({idBlock:{tagClass:3,tagNumber:0},value:[this.crlValue.toSchema()]})]})}toJSON(){return{crlId:this.crlId,crlValue:this.crlValue.toJSON()}}}bn.CLASS_NAME="CRLBag";const ui="version",li="encryptedContentInfo",Sr="unprotectedAttrs",K1=[ui,li,Sr];class ds extends D{constructor(e={}){super(),this.version=f(e,ui,ds.defaultValues(ui)),this.encryptedContentInfo=f(e,li,ds.defaultValues(li)),Sr in e&&(this.unprotectedAttrs=f(e,Sr,ds.defaultValues(Sr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ui:return 0;case li:return new Oe;case Sr:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ui:return t===0;case li:return Oe.compareWithDefault("contentType",t.contentType)&&Oe.compareWithDefault("contentEncryptionAlgorithm",t.contentEncryptionAlgorithm)&&Oe.compareWithDefault("encryptedContent",t.encryptedContent);case Sr:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),Oe.schema(t.encryptedContentInfo||{}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new Z({name:t.unprotectedAttrs||v,value:ge.schema()})]})]})}fromSchema(e){T(e,K1);const t=R(e,e,ds.schema({names:{version:ui,encryptedContentInfo:{names:{blockName:li}},unprotectedAttrs:Sr}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.encryptedContentInfo=new Oe({schema:t.result.encryptedContentInfo}),Sr in t.result&&(this.unprotectedAttrs=Array.from(t.result.unprotectedAttrs,s=>new ge({schema:s})))}toSchema(){const e=[];return e.push(new B({value:this.version})),e.push(this.encryptedContentInfo.toSchema()),this.unprotectedAttrs&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.unprotectedAttrs,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={version:this.version,encryptedContentInfo:this.encryptedContentInfo.toJSON()};return this.unprotectedAttrs&&(e.unprotectedAttrs=Array.from(this.unprotectedAttrs,t=>t.toJSON())),e}async encrypt(e,t=Q(!0)){he.assert(e,"parameters","object");const s=os(it({},e),{contentType:"1.2.840.113549.1.7.1"});this.encryptedContentInfo=await t.encryptEncryptedContentInfo(s)}async decrypt(e,t=Q(!0)){he.assert(e,"parameters","object");const s=os(it({},e),{encryptedContentInfo:this.encryptedContentInfo});return t.decryptEncryptedContentInfo(s)}}ds.CLASS_NAME="EncryptedData";const Fa="encryptionAlgorithm",Ar="encryptedData",Fo="parsedValue",H1=[Fa,Ar];class Jr extends D{constructor(e={}){super(),this.encryptionAlgorithm=f(e,Fa,Jr.defaultValues(Fa)),this.encryptedData=f(e,Ar,Jr.defaultValues(Ar)),Fo in e&&(this.parsedValue=f(e,Fo,Jr.defaultValues(Fo))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Fa:return new V;case Ar:return new $;case Fo:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Fa:return V.compareWithDefault("algorithmId",t.algorithmId)&&!("algorithmParams"in t);case Ar:return t.isEqual(Jr.defaultValues(e));case Fo:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[V.schema(t.encryptionAlgorithm||{names:{blockName:Fa}}),new Ne({value:[new $({name:t.encryptedData||Ar}),new $({idBlock:{isConstructed:!0},name:t.encryptedData||Ar})]})]})}fromSchema(e){T(e,H1);const t=R(e,e,Jr.schema({names:{encryptionAlgorithm:{names:{blockName:Fa}},encryptedData:Ar}}));O.assertSchema(t,this.className),this.encryptionAlgorithm=new V({schema:t.result.encryptionAlgorithm}),this.encryptedData=t.result.encryptedData}toSchema(){return new A({value:[this.encryptionAlgorithm.toSchema(),this.encryptedData]})}toJSON(){return{encryptionAlgorithm:this.encryptionAlgorithm.toJSON(),encryptedData:this.encryptedData.toJSON()}}async parseInternalValues(e,t=Q(!0)){const s=await new ds({encryptedContentInfo:new Oe({contentEncryptionAlgorithm:this.encryptionAlgorithm,encryptedContent:this.encryptedData})}).decrypt(e,t);this.parsedValue=Ft.fromBER(s)}async makeInternalValues(e,t=Q(!0)){if(!this.parsedValue)throw new Error('Please initialize "parsedValue" first');const s=new ds,a=os(it({},e),{contentToEncrypt:this.parsedValue.toSchema().toBER(!1)});if(await s.encrypt(a,t),!s.encryptedContentInfo.encryptedContent)throw new Error("The filed `encryptedContent` in EncryptedContentInfo is empty");this.encryptionAlgorithm=s.encryptedContentInfo.contentEncryptionAlgorithm,this.encryptedData=s.encryptedContentInfo.encryptedContent}}Jr.CLASS_NAME="PKCS8ShroudedKeyBag";const ci="secretTypeId",hi="secretValue",M1=[ci,hi];class So extends D{constructor(e={}){super(),this.secretTypeId=f(e,ci,So.defaultValues(ci)),this.secretValue=f(e,hi,So.defaultValues(hi)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ci:return v;case hi:return new X;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ci:return t===v;case hi:return t instanceof X;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.id||"id"}),new I({idBlock:{tagClass:3,tagNumber:0},value:[new X({name:t.value||"value"})]})]})}fromSchema(e){T(e,M1);const t=R(e,e,So.schema({names:{id:ci,value:hi}}));O.assertSchema(t,this.className),this.secretTypeId=t.result.secretTypeId.valueBlock.toString(),this.secretValue=t.result.secretValue}toSchema(){return new A({value:[new J({value:this.secretTypeId}),new I({idBlock:{tagClass:3,tagNumber:0},value:[this.secretValue.toSchema()]})]})}toJSON(){return{secretTypeId:this.secretTypeId,secretValue:this.secretValue.toJSON()}}}So.CLASS_NAME="SecretBag";class Mr{static getItems(){return this.items||(this.items={},Mr.register("1.2.840.113549.1.12.10.1.1",Ft),Mr.register("1.2.840.113549.1.12.10.1.2",Jr),Mr.register("1.2.840.113549.1.12.10.1.3",yn),Mr.register("1.2.840.113549.1.12.10.1.4",bn),Mr.register("1.2.840.113549.1.12.10.1.5",So),Mr.register("1.2.840.113549.1.12.10.1.6",js)),this.items}static register(e,t){this.getItems()[e]=t}static find(e){return this.getItems()[e]||null}}const Ja="bagId",qa="bagValue",Cs="bagAttributes",F1=[Ja,qa,Cs];class Yr extends D{constructor(e={}){super(),this.bagId=f(e,Ja,Yr.defaultValues(Ja)),this.bagValue=f(e,qa,Yr.defaultValues(qa)),Cs in e&&(this.bagAttributes=f(e,Cs,Yr.defaultValues(Cs))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ja:return v;case qa:return new X;case Cs:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ja:return t===v;case qa:return t instanceof X;case Cs:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.bagId||Ja}),new I({idBlock:{tagClass:3,tagNumber:0},value:[new X({name:t.bagValue||qa})]}),new Je({optional:!0,value:[new Z({name:t.bagAttributes||Cs,value:ge.schema()})]})]})}fromSchema(e){T(e,F1);const t=R(e,e,Yr.schema({names:{bagId:Ja,bagValue:qa,bagAttributes:Cs}}));O.assertSchema(t,this.className),this.bagId=t.result.bagId.valueBlock.toString();const s=Mr.find(this.bagId);if(!s)throw new Error("Invalid BAG_ID for SafeBag: ".concat(this.bagId));this.bagValue=new s({schema:t.result.bagValue}),Cs in t.result&&(this.bagAttributes=Array.from(t.result.bagAttributes,a=>new ge({schema:a})))}toSchema(){const e=[new J({value:this.bagId}),new I({idBlock:{tagClass:3,tagNumber:0},value:[this.bagValue.toSchema()]})];return this.bagAttributes&&e.push(new Je({value:Array.from(this.bagAttributes,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={bagId:this.bagId,bagValue:this.bagValue.toJSON()};return this.bagAttributes&&(e.bagAttributes=Array.from(this.bagAttributes,t=>t.toJSON())),e}}Yr.CLASS_NAME="SafeBag";const $n="safeBags";class js extends D{constructor(e={}){super(),this.safeBags=f(e,$n,js.defaultValues($n)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case $n:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case $n:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.safeBags||v,value:Yr.schema()})]})}fromSchema(e){T(e,[$n]);const t=R(e,e,js.schema({names:{safeBags:$n}}));O.assertSchema(t,this.className),this.safeBags=Array.from(t.result.safeBags,s=>new Yr({schema:s}))}toSchema(){return new A({value:Array.from(this.safeBags,e=>e.toSchema())})}toJSON(){return{safeBags:Array.from(this.safeBags,e=>e.toJSON())}}}js.CLASS_NAME="SafeContents";const yl="otherCertFormat",vl="otherCert",J1=[yl,vl];class ra extends D{constructor(e={}){super(),this.otherCertFormat=f(e,yl,ra.defaultValues(yl)),this.otherCert=f(e,vl,ra.defaultValues(vl)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case yl:return v;case vl:return new X;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.otherCertFormat||yl}),new X({name:t.otherCert||vl})]})}fromSchema(e){T(e,J1);const t=R(e,e,ra.schema());O.assertSchema(t,this.className),this.otherCertFormat=t.result.otherCertFormat.valueBlock.toString(),this.otherCert=t.result.otherCert}toSchema(){return new A({value:[new J({value:this.otherCertFormat}),this.otherCert]})}toJSON(){const e={otherCertFormat:this.otherCertFormat};return this.otherCert instanceof X||(e.otherCert=this.otherCert.toJSON()),e}}const bl="certificates",q1=[bl];class ps extends D{constructor(e={}){super(),this.certificates=f(e,bl,ps.defaultValues(bl)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case bl:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new Je({name:t.blockName||v,value:[new Z({name:t.certificates||bl,value:new Ne({value:[oe.schema(),new I({idBlock:{tagClass:3,tagNumber:0},value:[new X]}),new I({idBlock:{tagClass:3,tagNumber:1},value:[new A]}),new I({idBlock:{tagClass:3,tagNumber:2},value:Lt.schema().valueBlock.value}),new I({idBlock:{tagClass:3,tagNumber:3},value:ra.schema().valueBlock.value})]})})]})}fromSchema(e){T(e,q1);const t=R(e,e,ps.schema());O.assertSchema(t,this.className),this.certificates=Array.from(t.result.certificates||[],s=>{const a=s.idBlock.tagNumber;if(s.idBlock.tagClass===1)return new oe({schema:s});const n=new A({value:s.valueBlock.value});switch(a){case 1:return n.valueBlock.value[0].valueBlock.value[0].valueBlock.valueDec===1?new Lt({schema:n}):new Ls({schema:n});case 2:return new Lt({schema:n});case 3:return new ra({schema:n})}return s})}toSchema(){return new Je({value:Array.from(this.certificates,e=>{switch(!0){case e instanceof oe:return e.toSchema();case e instanceof Ls:return new I({idBlock:{tagClass:3,tagNumber:1},value:e.toSchema().valueBlock.value});case e instanceof Lt:return new I({idBlock:{tagClass:3,tagNumber:2},value:e.toSchema().valueBlock.value});case e instanceof ra:return new I({idBlock:{tagClass:3,tagNumber:3},value:e.toSchema().valueBlock.value})}return e.toSchema()})})}toJSON(){return{certificates:Array.from(this.certificates,e=>e.toJSON())}}}ps.CLASS_NAME="CertificateSet";const Sl="otherRevInfoFormat",Al="otherRevInfo",W1=[Sl,Al];class Hs extends D{constructor(e={}){super(),this.otherRevInfoFormat=f(e,Sl,Hs.defaultValues(Sl)),this.otherRevInfo=f(e,Al,Hs.defaultValues(Al)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Sl:return v;case Al:return new X;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.otherRevInfoFormat||Sl}),new X({name:t.otherRevInfo||Al})]})}fromSchema(e){T(e,W1);const t=R(e,e,Hs.schema());O.assertSchema(t,this.className),this.otherRevInfoFormat=t.result.otherRevInfoFormat.valueBlock.toString(),this.otherRevInfo=t.result.otherRevInfo}toSchema(){return new A({value:[new J({value:this.otherRevInfoFormat}),this.otherRevInfo]})}toJSON(){const e={otherRevInfoFormat:this.otherRevInfoFormat};return this.otherRevInfo instanceof X||(e.otherRevInfo=this.otherRevInfo.toJSON()),e}}Hs.CLASS_NAME="OtherRevocationInfoFormat";const Nl="crls",Om="otherRevocationInfos",G1=[Nl];class Ms extends D{constructor(e={}){super(),this.crls=f(e,Nl,Ms.defaultValues(Nl)),this.otherRevocationInfos=f(e,Om,Ms.defaultValues(Om)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Nl:return[];case Om:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new Je({name:t.blockName||v,value:[new Z({name:t.crls||v,value:new Ne({value:[Me.schema(),new I({idBlock:{tagClass:3,tagNumber:1},value:[new J,new X]})]})})]})}fromSchema(e){T(e,G1);const t=R(e,e,Ms.schema({names:{crls:Nl}}));if(O.assertSchema(t,this.className),t.result.crls)for(const s of t.result.crls)s.idBlock.tagClass===1?this.crls.push(new Me({schema:s})):this.otherRevocationInfos.push(new Hs({schema:s}))}toSchema(){const e=[];return e.push(...Array.from(this.crls,t=>t.toSchema())),e.push(...Array.from(this.otherRevocationInfos,t=>{const s=t.toSchema();return s.idBlock.tagClass=3,s.idBlock.tagNumber=1,s})),new Je({value:e})}toJSON(){return{crls:Array.from(this.crls,e=>e.toJSON()),otherRevocationInfos:Array.from(this.otherRevocationInfos,e=>e.toJSON())}}}Ms.CLASS_NAME="RevocationInfoChoices";const kl="certs",Wa="crls",z1=[kl,Wa];class Pn extends D{constructor(e={}){super(),this.crls=f(e,Wa,Pn.defaultValues(Wa)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case kl:return new ps;case Wa:return new Ms;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case kl:return t.certificates.length===0;case Wa:return t.crls.length===0&&t.otherRevocationInfos.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new I({name:t.certs||v,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:ps.schema().valueBlock.value}),new I({name:t.crls||v,optional:!0,idBlock:{tagClass:3,tagNumber:1},value:Ms.schema().valueBlock.value})]})}fromSchema(e){T(e,z1);const t=R(e,e,Pn.schema({names:{certs:kl,crls:Wa}}));O.assertSchema(t,this.className),kl in t.result&&(this.certs=new ps({schema:new Je({value:t.result.certs.valueBlock.value})})),Wa in t.result&&(this.crls=new Ms({schema:new Je({value:t.result.crls.valueBlock.value})}))}toSchema(){const e=[];return this.certs&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:this.certs.toSchema().valueBlock.value})),this.crls&&e.push(new I({idBlock:{tagClass:3,tagNumber:1},value:this.crls.toSchema().valueBlock.value})),new A({value:e})}toJSON(){const e={};return this.certs&&(e.certs=this.certs.toJSON()),this.crls&&(e.crls=this.crls.toJSON()),e}}Pn.CLASS_NAME="OriginatorInfo";const Cl="issuer",El="serialNumber",_1=[Cl,El];class $e extends D{constructor(e={}){super(),this.issuer=f(e,Cl,$e.defaultValues(Cl)),this.serialNumber=f(e,El,$e.defaultValues(El)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Cl:return new me;case El:return new B;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[me.schema(t.issuer||{}),new B({name:t.serialNumber||v})]})}fromSchema(e){T(e,_1);const t=R(e,e,$e.schema({names:{issuer:{names:{blockName:Cl}},serialNumber:El}}));O.assertSchema(t,this.className),this.issuer=new me({schema:t.result.issuer}),this.serialNumber=t.result.serialNumber}toSchema(){return new A({value:[this.issuer.toSchema(),this.serialNumber]})}toJSON(){return{issuer:this.issuer.toJSON(),serialNumber:this.serialNumber.toJSON()}}}$e.CLASS_NAME="IssuerAndSerialNumber";const Ec="variant",Jo="value",X1=["blockName"];class Ao extends D{constructor(e={}){super(),this.variant=f(e,Ec,Ao.defaultValues(Ec)),Jo in e&&(this.value=f(e,Jo,Ao.defaultValues(Jo))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ec:return-1;case Jo:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ec:return t===-1;case Jo:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new Ne({value:[$e.schema({names:{blockName:t.blockName||v}}),new _({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:0}})]})}fromSchema(e){T(e,X1);const t=R(e,e,Ao.schema({names:{blockName:"blockName"}}));O.assertSchema(t,this.className),t.result.blockName.idBlock.tagClass===1?(this.variant=1,this.value=new $e({schema:t.result.blockName})):(this.variant=2,this.value=new $({valueHex:t.result.blockName.valueBlock.valueHex}))}toSchema(){switch(this.variant){case 1:if(!(this.value instanceof $e))throw new Error("Incorrect type of RecipientIdentifier.value. It should be IssuerAndSerialNumber.");return this.value.toSchema();case 2:if(!(this.value instanceof $))throw new Error("Incorrect type of RecipientIdentifier.value. It should be ASN.1 OctetString.");return new _({idBlock:{tagClass:3,tagNumber:0},valueHex:this.value.valueBlock.valueHexView});default:return new X}}toJSON(){const e={variant:this.variant};return(this.variant===1||this.variant===2)&&this.value&&(e.value=this.value.toJSON()),e}}Ao.CLASS_NAME="RecipientIdentifier";const Ga="version",mi="rid",fi="keyEncryptionAlgorithm",di="encryptedKey",xc="recipientCertificate",Z1=[Ga,mi,fi,di];class Pt extends D{constructor(e={}){super(),this.version=f(e,Ga,Pt.defaultValues(Ga)),this.rid=f(e,mi,Pt.defaultValues(mi)),this.keyEncryptionAlgorithm=f(e,fi,Pt.defaultValues(fi)),this.encryptedKey=f(e,di,Pt.defaultValues(di)),this.recipientCertificate=f(e,xc,Pt.defaultValues(xc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ga:return-1;case mi:return{};case fi:return new V;case di:return new $;case xc:return new oe;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ga:return t===Pt.defaultValues(Ga);case mi:return Object.keys(t).length===0;case fi:case di:return t.isEqual(Pt.defaultValues(e));case xc:return!1;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),Ao.schema(t.rid||{}),V.schema(t.keyEncryptionAlgorithm||{}),new $({name:t.encryptedKey||v})]})}fromSchema(e){T(e,Z1);const t=R(e,e,Pt.schema({names:{version:Ga,rid:{names:{blockName:mi}},keyEncryptionAlgorithm:{names:{blockName:fi}},encryptedKey:di}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,t.result.rid.idBlock.tagClass===3?this.rid=new $({valueHex:t.result.rid.valueBlock.valueHex}):this.rid=new $e({schema:t.result.rid}),this.keyEncryptionAlgorithm=new V({schema:t.result.keyEncryptionAlgorithm}),this.encryptedKey=t.result.encryptedKey}toSchema(){const e=[];return this.rid instanceof $e?(this.version=0,e.push(new B({value:this.version})),e.push(this.rid.toSchema())):(this.version=2,e.push(new B({value:this.version})),e.push(new _({idBlock:{tagClass:3,tagNumber:0},valueHex:this.rid.valueBlock.valueHexView}))),e.push(this.keyEncryptionAlgorithm.toSchema()),e.push(this.encryptedKey),new A({value:e})}toJSON(){return{version:this.version,rid:this.rid.toJSON(),keyEncryptionAlgorithm:this.keyEncryptionAlgorithm.toJSON(),encryptedKey:this.encryptedKey.toJSON()}}}Pt.CLASS_NAME="KeyTransRecipientInfo";const pi="algorithm",gi="publicKey",Q1=[pi,gi];class $s extends D{constructor(e={}){super(),this.algorithm=f(e,pi,$s.defaultValues(pi)),this.publicKey=f(e,gi,$s.defaultValues(gi)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case pi:return new V;case gi:return new re;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case pi:case gi:return t.isEqual($s.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[V.schema(t.algorithm||{}),new re({name:t.publicKey||v})]})}fromSchema(e){T(e,Q1);const t=R(e,e,$s.schema({names:{algorithm:{names:{blockName:pi}},publicKey:gi}}));O.assertSchema(t,this.className),this.algorithm=new V({schema:t.result.algorithm}),this.publicKey=t.result.publicKey}toSchema(){return new A({value:[this.algorithm.toSchema(),this.publicKey]})}toJSON(){return{algorithm:this.algorithm.toJSON(),publicKey:this.publicKey.toJSON()}}}$s.CLASS_NAME="OriginatorPublicKey";const Ic="variant",qo="value",Y1=["blockName"];class Fs extends D{constructor(e={}){super(),this.variant=f(e,Ic,Fs.defaultValues(Ic)),qo in e&&(this.value=f(e,qo,Fs.defaultValues(qo))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ic:return-1;case qo:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ic:return t===-1;case qo:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new Ne({value:[$e.schema({names:{blockName:t.blockName||v}}),new _({idBlock:{tagClass:3,tagNumber:0},name:t.blockName||v}),new I({idBlock:{tagClass:3,tagNumber:1},name:t.blockName||v,value:$s.schema().valueBlock.value})]})}fromSchema(e){T(e,Y1);const t=R(e,e,Fs.schema({names:{blockName:"blockName"}}));O.assertSchema(t,this.className),t.result.blockName.idBlock.tagClass===1?(this.variant=1,this.value=new $e({schema:t.result.blockName})):t.result.blockName.idBlock.tagNumber===0?(t.result.blockName.idBlock.tagClass=1,t.result.blockName.idBlock.tagNumber=4,this.variant=2,this.value=t.result.blockName):(this.variant=3,this.value=new $s({schema:new A({value:t.result.blockName.valueBlock.value})}))}toSchema(){switch(this.variant){case 1:return this.value.toSchema();case 2:return this.value.idBlock.tagClass=3,this.value.idBlock.tagNumber=0,this.value;case 3:{const e=this.value.toSchema();return e.idBlock.tagClass=3,e.idBlock.tagNumber=1,e}default:return new X}}toJSON(){const e={variant:this.variant};return(this.variant===1||this.variant===2||this.variant===3)&&(e.value=this.value.toJSON()),e}}Fs.CLASS_NAME="OriginatorIdentifierOrKey";const wi="keyAttrId",ls="keyAttr",eS=[wi,ls];class ns extends D{constructor(e={}){super(),this.keyAttrId=f(e,wi,ns.defaultValues(wi)),ls in e&&(this.keyAttr=f(e,ls,ns.defaultValues(ls))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case wi:return v;case ls:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case wi:return typeof t=="string"&&t===v;case ls:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({optional:t.optional||!0,name:t.blockName||v,value:[new J({name:t.keyAttrId||v}),new X({optional:!0,name:t.keyAttr||v})]})}fromSchema(e){T(e,eS);const t=R(e,e,ns.schema({names:{keyAttrId:wi,keyAttr:ls}}));O.assertSchema(t,this.className),this.keyAttrId=t.result.keyAttrId.valueBlock.toString(),ls in t.result&&(this.keyAttr=t.result.keyAttr)}toSchema(){const e=[];return e.push(new J({value:this.keyAttrId})),ls in this&&e.push(this.keyAttr),new A({value:e})}toJSON(){const e={keyAttrId:this.keyAttrId};return ls in this&&(e.keyAttr=this.keyAttr.toJSON()),e}}ns.CLASS_NAME="OtherKeyAttribute";const za="subjectKeyIdentifier",Nr="date",kr="other",tS=[za,Nr,kr];class ms extends D{constructor(e={}){super(),this.subjectKeyIdentifier=f(e,za,ms.defaultValues(za)),Nr in e&&(this.date=f(e,Nr,ms.defaultValues(Nr))),kr in e&&(this.other=f(e,kr,ms.defaultValues(kr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case za:return new $;case Nr:return new ke;case kr:return new ns;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case za:return t.isEqual(ms.defaultValues(za));case Nr:return t.year===0&&t.month===0&&t.day===0&&t.hour===0&&t.minute===0&&t.second===0&&t.millisecond===0;case kr:return t.keyAttrId===v&&!("keyAttr"in t);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new $({name:t.subjectKeyIdentifier||v}),new ke({optional:!0,name:t.date||v}),ns.schema(t.other||{})]})}fromSchema(e){T(e,tS);const t=R(e,e,ms.schema({names:{subjectKeyIdentifier:za,date:Nr,other:{names:{blockName:kr}}}}));O.assertSchema(t,this.className),this.subjectKeyIdentifier=t.result.subjectKeyIdentifier,Nr in t.result&&(this.date=t.result.date),kr in t.result&&(this.other=new ns({schema:t.result.other}))}toSchema(){const e=[];return e.push(this.subjectKeyIdentifier),this.date&&e.push(this.date),this.other&&e.push(this.other.toSchema()),new A({value:e})}toJSON(){const e={subjectKeyIdentifier:this.subjectKeyIdentifier.toJSON()};return this.date&&(e.date=this.date.toJSON()),this.other&&(e.other=this.other.toJSON()),e}}ms.CLASS_NAME="RecipientKeyIdentifier";const Vc="variant",Bc="value",sS=["blockName"];class gs extends D{constructor(e={}){super(),this.variant=f(e,Vc,gs.defaultValues(Vc)),this.value=f(e,Bc,gs.defaultValues(Bc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Vc:return-1;case Bc:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Vc:return t===-1;case Bc:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new Ne({value:[$e.schema(t.issuerAndSerialNumber||{names:{blockName:t.blockName||v}}),new I({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:0},value:ms.schema(t.rKeyId||{names:{blockName:t.blockName||v}}).valueBlock.value})]})}fromSchema(e){T(e,sS);const t=R(e,e,gs.schema({names:{blockName:"blockName"}}));O.assertSchema(t,this.className),t.result.blockName.idBlock.tagClass===1?(this.variant=1,this.value=new $e({schema:t.result.blockName})):(this.variant=2,this.value=new ms({schema:new A({value:t.result.blockName.valueBlock.value})}))}toSchema(){switch(this.variant){case 1:return this.value.toSchema();case 2:return new I({idBlock:{tagClass:3,tagNumber:0},value:this.value.toSchema().valueBlock.value});default:return new X}}toJSON(){const e={variant:this.variant};return(this.variant===1||this.variant===2)&&(e.value=this.value.toJSON()),e}}gs.CLASS_NAME="KeyAgreeRecipientIdentifier";const yi="rid",_a="encryptedKey",rS=[yi,_a];class Ks extends D{constructor(e={}){super(),this.rid=f(e,yi,Ks.defaultValues(yi)),this.encryptedKey=f(e,_a,Ks.defaultValues(_a)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case yi:return new gs;case _a:return new $;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case yi:return t.variant===-1&&!("value"in t);case _a:return t.isEqual(Ks.defaultValues(_a));default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[gs.schema(t.rid||{}),new $({name:t.encryptedKey||v})]})}fromSchema(e){T(e,rS);const t=R(e,e,Ks.schema({names:{rid:{names:{blockName:yi}},encryptedKey:_a}}));O.assertSchema(t,this.className),this.rid=new gs({schema:t.result.rid}),this.encryptedKey=t.result.encryptedKey}toSchema(){return new A({value:[this.rid.toSchema(),this.encryptedKey]})}toJSON(){return{rid:this.rid.toJSON(),encryptedKey:this.encryptedKey.toJSON()}}}Ks.CLASS_NAME="RecipientEncryptedKey";const Pc="encryptedKeys",Kg="RecipientEncryptedKeys",aS=[Kg];class aa extends D{constructor(e={}){super(),this.encryptedKeys=f(e,Pc,aa.defaultValues(Pc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Pc:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Pc:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.RecipientEncryptedKeys||v,value:Ks.schema()})]})}fromSchema(e){T(e,aS);const t=R(e,e,aa.schema({names:{RecipientEncryptedKeys:Kg}}));O.assertSchema(t,this.className),this.encryptedKeys=Array.from(t.result.RecipientEncryptedKeys,s=>new Ks({schema:s}))}toSchema(){return new A({value:Array.from(this.encryptedKeys,e=>e.toSchema())})}toJSON(){return{encryptedKeys:Array.from(this.encryptedKeys,e=>e.toJSON())}}}aa.CLASS_NAME="RecipientEncryptedKeys";const vi="version",bi="originator",Es="ukm",Si="keyEncryptionAlgorithm",Ai="recipientEncryptedKeys",Oc="recipientCertificate",Dc="recipientPublicKey",nS=[vi,bi,Es,Si,Ai];class xt extends D{constructor(e={}){super(),this.version=f(e,vi,xt.defaultValues(vi)),this.originator=f(e,bi,xt.defaultValues(bi)),Es in e&&(this.ukm=f(e,Es,xt.defaultValues(Es))),this.keyEncryptionAlgorithm=f(e,Si,xt.defaultValues(Si)),this.recipientEncryptedKeys=f(e,Ai,xt.defaultValues(Ai)),this.recipientCertificate=f(e,Oc,xt.defaultValues(Oc)),this.recipientPublicKey=f(e,Dc,xt.defaultValues(Dc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case vi:return 0;case bi:return new Fs;case Es:return new $;case Si:return new V;case Ai:return new aa;case Oc:return new oe;case Dc:return null;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case vi:return t===0;case bi:return t.variant===-1&&!("value"in t);case Es:return t.isEqual(xt.defaultValues(Es));case Si:return t.algorithmId===v&&!("algorithmParams"in t);case Ai:return t.encryptedKeys.length===0;case Oc:return!1;case Dc:return!1;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),new I({idBlock:{tagClass:3,tagNumber:0},value:[Fs.schema(t.originator||{})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new $({name:t.ukm||v})]}),V.schema(t.keyEncryptionAlgorithm||{}),aa.schema(t.recipientEncryptedKeys||{})]})}fromSchema(e){T(e,nS);const t=R(e,e,xt.schema({names:{version:vi,originator:{names:{blockName:bi}},ukm:Es,keyEncryptionAlgorithm:{names:{blockName:Si}},recipientEncryptedKeys:{names:{blockName:Ai}}}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.originator=new Fs({schema:t.result.originator}),Es in t.result&&(this.ukm=t.result.ukm),this.keyEncryptionAlgorithm=new V({schema:t.result.keyEncryptionAlgorithm}),this.recipientEncryptedKeys=new aa({schema:t.result.recipientEncryptedKeys})}toSchema(){const e=[];return e.push(new B({value:this.version})),e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[this.originator.toSchema()]})),this.ukm&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[this.ukm]})),e.push(this.keyEncryptionAlgorithm.toSchema()),e.push(this.recipientEncryptedKeys.toSchema()),new A({value:e})}toJSON(){const e={version:this.version,originator:this.originator.toJSON(),keyEncryptionAlgorithm:this.keyEncryptionAlgorithm.toJSON(),recipientEncryptedKeys:this.recipientEncryptedKeys.toJSON()};return this.ukm&&(e.ukm=this.ukm.toJSON()),e}}xt.CLASS_NAME="KeyAgreeRecipientInfo";const Xa="keyIdentifier",Cr="date",Er="other",iS=[Xa,Cr,Er];class ss extends D{constructor(e={}){super(),this.keyIdentifier=f(e,Xa,ss.defaultValues(Xa)),Cr in e&&(this.date=f(e,Cr,ss.defaultValues(Cr))),Er in e&&(this.other=f(e,Er,ss.defaultValues(Er))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Xa:return new $;case Cr:return new ke;case Er:return new ns;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Xa:return t.isEqual(ss.defaultValues(Xa));case Cr:return t.year===0&&t.month===0&&t.day===0&&t.hour===0&&t.minute===0&&t.second===0&&t.millisecond===0;case Er:return t.compareWithDefault("keyAttrId",t.keyAttrId)&&!("keyAttr"in t);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new $({name:t.keyIdentifier||v}),new ke({optional:!0,name:t.date||v}),ns.schema(t.other||{})]})}fromSchema(e){T(e,iS);const t=R(e,e,ss.schema({names:{keyIdentifier:Xa,date:Cr,other:{names:{blockName:Er}}}}));O.assertSchema(t,this.className),this.keyIdentifier=t.result.keyIdentifier,Cr in t.result&&(this.date=t.result.date),Er in t.result&&(this.other=new ns({schema:t.result.other}))}toSchema(){const e=[];return e.push(this.keyIdentifier),this.date&&e.push(this.date),this.other&&e.push(this.other.toSchema()),new A({value:e})}toJSON(){const e={keyIdentifier:this.keyIdentifier.toJSON()};return this.date&&(e.date=this.date),this.other&&(e.other=this.other.toJSON()),e}}ss.CLASS_NAME="KEKIdentifier";const Ni="version",ki="kekid",Ci="keyEncryptionAlgorithm",Za="encryptedKey",Tc="preDefinedKEK",oS=[Ni,ki,Ci,Za];class Ot extends D{constructor(e={}){super(),this.version=f(e,Ni,Ot.defaultValues(Ni)),this.kekid=f(e,ki,Ot.defaultValues(ki)),this.keyEncryptionAlgorithm=f(e,Ci,Ot.defaultValues(Ci)),this.encryptedKey=f(e,Za,Ot.defaultValues(Za)),this.preDefinedKEK=f(e,Tc,Ot.defaultValues(Tc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ni:return 0;case ki:return new ss;case Ci:return new V;case Za:return new $;case Tc:return Ue;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case"KEKRecipientInfo":return t===Ot.defaultValues(Ni);case ki:return t.compareWithDefault("keyIdentifier",t.keyIdentifier)&&!("date"in t)&&!("other"in t);case Ci:return t.algorithmId===v&&!("algorithmParams"in t);case Za:return t.isEqual(Ot.defaultValues(Za));case Tc:return t.byteLength===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),ss.schema(t.kekid||{}),V.schema(t.keyEncryptionAlgorithm||{}),new $({name:t.encryptedKey||v})]})}fromSchema(e){T(e,oS);const t=R(e,e,Ot.schema({names:{version:Ni,kekid:{names:{blockName:ki}},keyEncryptionAlgorithm:{names:{blockName:Ci}},encryptedKey:Za}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.kekid=new ss({schema:t.result.kekid}),this.keyEncryptionAlgorithm=new V({schema:t.result.keyEncryptionAlgorithm}),this.encryptedKey=t.result.encryptedKey}toSchema(){return new A({value:[new B({value:this.version}),this.kekid.toSchema(),this.keyEncryptionAlgorithm.toSchema(),this.encryptedKey]})}toJSON(){return{version:this.version,kekid:this.kekid.toJSON(),keyEncryptionAlgorithm:this.keyEncryptionAlgorithm.toJSON(),encryptedKey:this.encryptedKey.toJSON()}}}Ot.CLASS_NAME="KEKRecipientInfo";const Ei="version",xr="keyDerivationAlgorithm",xi="keyEncryptionAlgorithm",Qa="encryptedKey",Rc="password",uS=[Ei,xr,xi,Qa];class Mt extends D{constructor(e={}){super(),this.version=f(e,Ei,Mt.defaultValues(Ei)),xr in e&&(this.keyDerivationAlgorithm=f(e,xr,Mt.defaultValues(xr))),this.keyEncryptionAlgorithm=f(e,xi,Mt.defaultValues(xi)),this.encryptedKey=f(e,Qa,Mt.defaultValues(Qa)),this.password=f(e,Rc,Mt.defaultValues(Rc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ei:return-1;case xr:return new V;case xi:return new V;case Qa:return new $;case Rc:return Ue;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ei:return t===-1;case xr:case xi:return t.algorithmId===v&&!("algorithmParams"in t);case Qa:return t.isEqual(Mt.defaultValues(Qa));case Rc:return t.byteLength===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),new I({name:t.keyDerivationAlgorithm||v,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:V.schema().valueBlock.value}),V.schema(t.keyEncryptionAlgorithm||{}),new $({name:t.encryptedKey||v})]})}fromSchema(e){T(e,uS);const t=R(e,e,Mt.schema({names:{version:Ei,keyDerivationAlgorithm:xr,keyEncryptionAlgorithm:{names:{blockName:xi}},encryptedKey:Qa}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,xr in t.result&&(this.keyDerivationAlgorithm=new V({schema:new A({value:t.result.keyDerivationAlgorithm.valueBlock.value})})),this.keyEncryptionAlgorithm=new V({schema:t.result.keyEncryptionAlgorithm}),this.encryptedKey=t.result.encryptedKey}toSchema(){const e=[];return e.push(new B({value:this.version})),this.keyDerivationAlgorithm&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:this.keyDerivationAlgorithm.toSchema().valueBlock.value})),e.push(this.keyEncryptionAlgorithm.toSchema()),e.push(this.encryptedKey),new A({value:e})}toJSON(){const e={version:this.version,keyEncryptionAlgorithm:this.keyEncryptionAlgorithm.toJSON(),encryptedKey:this.encryptedKey.toJSON()};return this.keyDerivationAlgorithm&&(e.keyDerivationAlgorithm=this.keyDerivationAlgorithm.toJSON()),e}}Mt.CLASS_NAME="PasswordRecipientInfo";const Ii="oriType",Ya="oriValue",lS=[Ii,Ya];class ea extends D{constructor(e={}){super(),this.oriType=f(e,Ii,ea.defaultValues(Ii)),this.oriValue=f(e,Ya,ea.defaultValues(Ya)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ii:return v;case Ya:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ii:return t===v;case Ya:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.oriType||v}),new X({name:t.oriValue||v})]})}fromSchema(e){T(e,lS);const t=R(e,e,ea.schema({names:{oriType:Ii,oriValue:Ya}}));O.assertSchema(t,this.className),this.oriType=t.result.oriType.valueBlock.toString(),this.oriValue=t.result.oriValue}toSchema(){return new A({value:[new J({value:this.oriType}),this.oriValue]})}toJSON(){const e={oriType:this.oriType};return ea.compareWithDefault(Ya,this.oriValue)||(e.oriValue=this.oriValue.toJSON()),e}}ea.CLASS_NAME="OtherRecipientInfo";const Lc="variant",Wo="value",cS=["blockName"];class Jt extends D{constructor(e={}){super(),this.variant=f(e,Lc,Jt.defaultValues(Lc)),Wo in e&&(this.value=f(e,Wo,Jt.defaultValues(Wo))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Lc:return-1;case Wo:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Lc:return t===Jt.defaultValues(e);case Wo:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new Ne({value:[Pt.schema({names:{blockName:t.blockName||v}}),new I({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:1},value:xt.schema().valueBlock.value}),new I({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:2},value:Ot.schema().valueBlock.value}),new I({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:3},value:Mt.schema().valueBlock.value}),new I({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:4},value:ea.schema().valueBlock.value})]})}fromSchema(e){T(e,cS);const t=R(e,e,Jt.schema({names:{blockName:"blockName"}}));if(O.assertSchema(t,this.className),t.result.blockName.idBlock.tagClass===1)this.variant=1,this.value=new Pt({schema:t.result.blockName});else{const s=new A({value:t.result.blockName.valueBlock.value});switch(t.result.blockName.idBlock.tagNumber){case 1:this.variant=2,this.value=new xt({schema:s});break;case 2:this.variant=3,this.value=new Ot({schema:s});break;case 3:this.variant=4,this.value=new Mt({schema:s});break;case 4:this.variant=5,this.value=new ea({schema:s});break;default:throw new Error("Incorrect structure of RecipientInfo block")}}}toSchema(){ne.assertEmpty(this.value,"value","RecipientInfo");const e=this.value.toSchema();switch(this.variant){case 1:return e;case 2:case 3:case 4:return e.idBlock.tagClass=3,e.idBlock.tagNumber=this.variant-1,e;default:return new X}}toJSON(){const e={variant:this.variant};return this.value&&this.variant>=1&&this.variant<=4&&(e.value=this.value.toJSON()),e}}Jt.CLASS_NAME="RecipientInfo";const Ir="hashAlgorithm",Vr="maskGenAlgorithm",Br="pSourceAlgorithm",hS=[Ir,Vr,Br];class yt extends D{constructor(e={}){super(),this.hashAlgorithm=f(e,Ir,yt.defaultValues(Ir)),this.maskGenAlgorithm=f(e,Vr,yt.defaultValues(Vr)),this.pSourceAlgorithm=f(e,Br,yt.defaultValues(Br)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ir:return new V({algorithmId:"1.3.14.3.2.26",algorithmParams:new Fe});case Vr:return new V({algorithmId:"1.2.840.113549.1.1.8",algorithmParams:new V({algorithmId:"1.3.14.3.2.26",algorithmParams:new Fe}).toSchema()});case Br:return new V({algorithmId:"1.2.840.113549.1.1.9",algorithmParams:new $({valueHex:new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9]).buffer})});default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new I({idBlock:{tagClass:3,tagNumber:0},optional:!0,value:[V.schema(t.hashAlgorithm||{})]}),new I({idBlock:{tagClass:3,tagNumber:1},optional:!0,value:[V.schema(t.maskGenAlgorithm||{})]}),new I({idBlock:{tagClass:3,tagNumber:2},optional:!0,value:[V.schema(t.pSourceAlgorithm||{})]})]})}fromSchema(e){T(e,hS);const t=R(e,e,yt.schema({names:{hashAlgorithm:{names:{blockName:Ir}},maskGenAlgorithm:{names:{blockName:Vr}},pSourceAlgorithm:{names:{blockName:Br}}}}));O.assertSchema(t,this.className),Ir in t.result&&(this.hashAlgorithm=new V({schema:t.result.hashAlgorithm})),Vr in t.result&&(this.maskGenAlgorithm=new V({schema:t.result.maskGenAlgorithm})),Br in t.result&&(this.pSourceAlgorithm=new V({schema:t.result.pSourceAlgorithm}))}toSchema(){const e=[];return this.hashAlgorithm.isEqual(yt.defaultValues(Ir))||e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[this.hashAlgorithm.toSchema()]})),this.maskGenAlgorithm.isEqual(yt.defaultValues(Vr))||e.push(new I({idBlock:{tagClass:3,tagNumber:1},value:[this.maskGenAlgorithm.toSchema()]})),this.pSourceAlgorithm.isEqual(yt.defaultValues(Br))||e.push(new I({idBlock:{tagClass:3,tagNumber:2},value:[this.pSourceAlgorithm.toSchema()]})),new A({value:e})}toJSON(){const e={};return this.hashAlgorithm.isEqual(yt.defaultValues(Ir))||(e.hashAlgorithm=this.hashAlgorithm.toJSON()),this.maskGenAlgorithm.isEqual(yt.defaultValues(Vr))||(e.maskGenAlgorithm=this.maskGenAlgorithm.toJSON()),this.pSourceAlgorithm.isEqual(yt.defaultValues(Br))||(e.pSourceAlgorithm=this.pSourceAlgorithm.toJSON()),e}}yt.CLASS_NAME="RSAESOAEPParams";const Vi="keyInfo",Pr="entityUInfo",Bi="suppPubInfo",mS=[Vi,Pr,Bi];class Ds extends D{constructor(e={}){super(),this.keyInfo=f(e,Vi,Ds.defaultValues(Vi)),Pr in e&&(this.entityUInfo=f(e,Pr,Ds.defaultValues(Pr))),this.suppPubInfo=f(e,Bi,Ds.defaultValues(Bi)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Vi:return new V;case Pr:return new $;case Bi:return new $;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Vi:case Pr:case Bi:return t.isEqual(Ds.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[V.schema(t.keyInfo||{}),new I({name:t.entityUInfo||v,idBlock:{tagClass:3,tagNumber:0},optional:!0,value:[new $]}),new I({name:t.suppPubInfo||v,idBlock:{tagClass:3,tagNumber:2},value:[new $]})]})}fromSchema(e){T(e,mS);const t=R(e,e,Ds.schema({names:{keyInfo:{names:{blockName:Vi}},entityUInfo:Pr,suppPubInfo:Bi}}));O.assertSchema(t,this.className),this.keyInfo=new V({schema:t.result.keyInfo}),Pr in t.result&&(this.entityUInfo=t.result.entityUInfo.valueBlock.value[0]),this.suppPubInfo=t.result.suppPubInfo.valueBlock.value[0]}toSchema(){const e=[];return e.push(this.keyInfo.toSchema()),this.entityUInfo&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[this.entityUInfo]})),e.push(new I({idBlock:{tagClass:3,tagNumber:2},value:[this.suppPubInfo]})),new A({value:e})}toJSON(){const e={keyInfo:this.keyInfo.toJSON(),suppPubInfo:this.suppPubInfo.toJSON()};return this.entityUInfo&&(e.entityUInfo=this.entityUInfo.toJSON()),e}}Ds.CLASS_NAME="ECCCMSSharedInfo";const Pi="version",Or="originatorInfo",Oi="recipientInfos",Di="encryptedContentInfo",Dr="unprotectedAttrs",fS=[Pi,Or,Oi,Di,Dr],yp={kdfAlgorithm:"SHA-512",kekEncryptionLength:256},dS={"P-256":256,"P-384":384,"P-521":528};class es extends D{constructor(e={}){super(),this.version=f(e,Pi,es.defaultValues(Pi)),Or in e&&(this.originatorInfo=f(e,Or,es.defaultValues(Or))),this.recipientInfos=f(e,Oi,es.defaultValues(Oi)),this.encryptedContentInfo=f(e,Di,es.defaultValues(Di)),Dr in e&&(this.unprotectedAttrs=f(e,Dr,es.defaultValues(Dr))),this.policy={disableSplit:!!e.disableSplit},e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Pi:return 0;case Or:return new Pn;case Oi:return[];case Di:return new Oe;case Dr:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Pi:return t===es.defaultValues(e);case Or:return t.certs.certificates.length===0&&t.crls.crls.length===0;case Oi:case Dr:return t.length===0;case Di:return Oe.compareWithDefault("contentType",t.contentType)&&Oe.compareWithDefault("contentEncryptionAlgorithm",t.contentEncryptionAlgorithm)&&Oe.compareWithDefault("encryptedContent",t.encryptedContent);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),new I({name:t.originatorInfo||v,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:Pn.schema().valueBlock.value}),new Je({value:[new Z({name:t.recipientInfos||v,value:Jt.schema()})]}),Oe.schema(t.encryptedContentInfo||{}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new Z({name:t.unprotectedAttrs||v,value:ge.schema()})]})]})}fromSchema(e){T(e,fS);const t=R(e,e,es.schema({names:{version:Pi,originatorInfo:Or,recipientInfos:Oi,encryptedContentInfo:{names:{blockName:Di}},unprotectedAttrs:Dr}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,Or in t.result&&(this.originatorInfo=new Pn({schema:new A({value:t.result.originatorInfo.valueBlock.value})})),this.recipientInfos=Array.from(t.result.recipientInfos,s=>new Jt({schema:s})),this.encryptedContentInfo=new Oe({schema:t.result.encryptedContentInfo}),Dr in t.result&&(this.unprotectedAttrs=Array.from(t.result.unprotectedAttrs,s=>new ge({schema:s})))}toSchema(){const e=[];return e.push(new B({value:this.version})),this.originatorInfo&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:this.originatorInfo.toSchema().valueBlock.value})),e.push(new Je({value:Array.from(this.recipientInfos,t=>t.toSchema())})),e.push(this.encryptedContentInfo.toSchema()),this.unprotectedAttrs&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.unprotectedAttrs,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={version:this.version,recipientInfos:Array.from(this.recipientInfos,t=>t.toJSON()),encryptedContentInfo:this.encryptedContentInfo.toJSON()};return this.originatorInfo&&(e.originatorInfo=this.originatorInfo.toJSON()),this.unprotectedAttrs&&(e.unprotectedAttrs=Array.from(this.unprotectedAttrs,t=>t.toJSON())),e}addRecipientByCertificate(e,t,s,a=Q(!0)){const n=Object.assign({useOAEP:!0,oaepHashAlgorithm:"SHA-512"},yp,t||{});if(e.subjectPublicKeyInfo.algorithm.algorithmId.indexOf("1.2.840.113549")!==-1)s=1;else if(e.subjectPublicKeyInfo.algorithm.algorithmId.indexOf("1.2.840.10045")!==-1)s=2;else throw new Error("Unknown type of certificate's public key: ".concat(e.subjectPublicKeyInfo.algorithm.algorithmId));switch(s){case 1:{let u,i;if(n.useOAEP===!0){u=a.getOIDByAlgorithm({name:"RSA-OAEP"},!0,"keyEncryptionAlgorithm");const o=a.getOIDByAlgorithm({name:n.oaepHashAlgorithm},!0,"RSAES-OAEP-params"),c=new V({algorithmId:o,algorithmParams:new Fe});i=new yt({hashAlgorithm:c,maskGenAlgorithm:new V({algorithmId:"1.2.840.113549.1.1.8",algorithmParams:c.toSchema()})}).toSchema()}else{if(u=a.getOIDByAlgorithm({name:"RSAES-PKCS1-v1_5"}),u===v)throw new Error("Can not find OID for RSAES-PKCS1-v1_5");i=new Fe}const l=new Pt({version:0,rid:new $e({issuer:e.issuer,serialNumber:e.serialNumber}),keyEncryptionAlgorithm:new V({algorithmId:u,algorithmParams:i}),recipientCertificate:e});this.recipientInfos.push(new Jt({variant:1,value:l}))}break;case 2:{const u=new gs({variant:1,value:new $e({issuer:e.issuer,serialNumber:e.serialNumber})});this._addKeyAgreeRecipientInfo(u,n,{recipientCertificate:e},a)}break;default:throw new Error('Unknown "variant" value: '.concat(s))}return!0}addRecipientByPreDefinedData(e,t={},s,a=Q(!0)){if(he.assert(e,"preDefinedData","ArrayBuffer"),!e.byteLength)throw new Error("Pre-defined data could have zero length");if(!t.keyIdentifier){const n=new ArrayBuffer(16),u=new Uint8Array(n);a.getRandomValues(u),t.keyIdentifier=n}switch(t.hmacHashAlgorithm||(t.hmacHashAlgorithm="SHA-512"),t.iterationCount===void 0&&(t.iterationCount=2048),t.keyEncryptionAlgorithm||(t.keyEncryptionAlgorithm={name:"AES-KW",length:256}),t.keyEncryptionAlgorithmParams||(t.keyEncryptionAlgorithmParams=new Fe),s){case 1:{const n=a.getOIDByAlgorithm(t.keyEncryptionAlgorithm,!0,"keyEncryptionAlgorithm"),u=new Ot({version:4,kekid:new ss({keyIdentifier:new $({valueHex:t.keyIdentifier})}),keyEncryptionAlgorithm:new V({algorithmId:n,algorithmParams:t.keyEncryptionAlgorithmParams}),preDefinedKEK:e});this.recipientInfos.push(new Jt({variant:3,value:u}))}break;case 2:{const n=a.getOIDByAlgorithm({name:"PBKDF2"},!0,"keyDerivationAlgorithm"),u=new ArrayBuffer(64),i=new Uint8Array(u);a.getRandomValues(i);const l=a.getOIDByAlgorithm({name:"HMAC",hash:{name:t.hmacHashAlgorithm}},!0,"hmacHashAlgorithm"),o=new mt({salt:new $({valueHex:u}),iterationCount:t.iterationCount,prf:new V({algorithmId:l,algorithmParams:new Fe})}),c=a.getOIDByAlgorithm(t.keyEncryptionAlgorithm,!0,"keyEncryptionAlgorithm"),m=new Mt({version:0,keyDerivationAlgorithm:new V({algorithmId:n,algorithmParams:o.toSchema()}),keyEncryptionAlgorithm:new V({algorithmId:c,algorithmParams:t.keyEncryptionAlgorithmParams}),password:e});this.recipientInfos.push(new Jt({variant:4,value:m}))}break;default:throw new Error('Unknown value for "variant": '.concat(s))}}addRecipientByKeyIdentifier(e,t,s,a=Q(!0)){const n=Object.assign({},yp,s||{}),u=new gs({variant:2,value:new ms({subjectKeyIdentifier:new $({valueHex:t})})});this._addKeyAgreeRecipientInfo(u,n,{recipientPublicKey:e},a)}_addKeyAgreeRecipientInfo(e,t,s,a=Q(!0)){const n=new Ks({rid:e}),u=a.getOIDByAlgorithm({name:"AES-KW",length:t.kekEncryptionLength},!0,"keyEncryptionAlgorithm"),i=new V({algorithmId:u}),l=a.getOIDByAlgorithm({name:"ECDH",kdf:t.kdfAlgorithm},!0,"KeyAgreeRecipientInfo"),o=new ArrayBuffer(64),c=new Uint8Array(o);a.getRandomValues(c);const m={version:3,ukm:new $({valueHex:o}),keyEncryptionAlgorithm:new V({algorithmId:l,algorithmParams:i.toSchema()}),recipientEncryptedKeys:new aa({encryptedKeys:[n]})},h=new xt(Object.assign(m,s));this.recipientInfos.push(new Jt({variant:2,value:h}))}async encrypt(e,t,s=Q(!0)){const a=new ArrayBuffer(16),n=new Uint8Array(a);s.getRandomValues(n);const u=new Uint8Array(t),i=s.getOIDByAlgorithm(e,!0,"contentEncryptionAlgorithm"),l=await s.generateKey(e,!0,["encrypt"]),o=await s.encrypt({name:e.name,iv:n},l,u),c=await s.exportKey("raw",l);this.version=2,this.encryptedContentInfo=new Oe({disableSplit:this.policy.disableSplit,contentType:"1.2.840.113549.1.7.1",contentEncryptionAlgorithm:new V({algorithmId:i,algorithmParams:new $({valueHex:a})}),encryptedContent:new $({valueHex:o})});const m=async y=>{const k=this.recipientInfos[y].value;let g,b;if(k.recipientPublicKey)g=k.recipientPublicKey.algorithm.namedCurve,b=k.recipientPublicKey;else if(k.recipientCertificate){const se=k.recipientCertificate.subjectPublicKeyInfo.algorithm.algorithmParams;if(se.constructor.blockName()!==J.blockName())throw new Error('Incorrect "recipientCertificate" for index '.concat(y));switch(se.valueBlock.toString()){case"1.2.840.10045.3.1.7":g="P-256";break;case"1.3.132.0.34":g="P-384";break;case"1.3.132.0.35":g="P-521";break;default:throw new Error("Incorrect curve OID for index ".concat(y))}b=await k.recipientCertificate.getPublicKey({algorithm:{algorithm:{name:"ECDH",namedCurve:g},usages:[]}},s)}else throw new Error("Unsupported RecipientInfo");const N=dS[g],S=await s.generateKey({name:"ECDH",namedCurve:g},!0,["deriveBits"]),E=await s.exportKey("spki",S.publicKey),x=await s.deriveBits({name:"ECDH",public:b},S.privateKey,N),C=new V({schema:k.keyEncryptionAlgorithm.algorithmParams}),P=s.getAlgorithmByOID(C.algorithmId,!0,"aesKWAlgorithm");let K=P.length;const L=new ArrayBuffer(4),j=new Uint8Array(L);for(let se=3;se>=0;se--)j[se]=K,K>>=8;const U=new Ds({keyInfo:new V({algorithmId:C.algorithmId}),entityUInfo:k.ukm,suppPubInfo:new $({valueHex:L})}).toSchema().toBER(!1),M=s.getAlgorithmByOID(k.keyEncryptionAlgorithm.algorithmId,!0,"ecdhAlgorithm"),G=await np(M.kdf,x,P.length,U,s),we=await s.importKey("raw",G,{name:"AES-KW"},!0,["wrapKey"]),ae=await s.wrapKey("raw",l,we,{name:"AES-KW"}),Y=new Fs;return Y.variant=3,Y.value=$s.fromBER(E),k.originator=Y,k.recipientEncryptedKeys.encryptedKeys[0].encryptedKey=new $({valueHex:ae}),{ecdhPrivateKey:S.privateKey}},h=async y=>{const k=this.recipientInfos[y].value,g=s.getAlgorithmByOID(k.keyEncryptionAlgorithm.algorithmId,!0,"keyEncryptionAlgorithm");if(g.name==="RSA-OAEP"){const b=k.keyEncryptionAlgorithm.algorithmParams,N=new yt({schema:b});if(g.hash=s.getAlgorithmByOID(N.hashAlgorithm.algorithmId),!("name"in g.hash))throw new Error("Incorrect OID for hash algorithm: ".concat(N.hashAlgorithm.algorithmId))}try{const b=await k.recipientCertificate.getPublicKey({algorithm:{algorithm:g,usages:["encrypt","wrapKey"]}},s),N=await s.encrypt(b.algorithm,b,c);k.encryptedKey=new $({valueHex:N})}catch(b){}},p=async y=>{const k=this.recipientInfos[y].value,g=s.getAlgorithmByOID(k.keyEncryptionAlgorithm.algorithmId,!0,"kekAlgorithm"),b=await s.importKey("raw",new Uint8Array(k.preDefinedKEK),g,!0,["wrapKey"]),N=await s.wrapKey("raw",l,b,g);k.encryptedKey=new $({valueHex:N})},d=async y=>{const k=this.recipientInfos[y].value;let g;if(!k.keyDerivationAlgorithm)throw new Error('Please append encoded "keyDerivationAlgorithm"');if(!k.keyDerivationAlgorithm.algorithmParams)throw new Error('Incorrectly encoded "keyDerivationAlgorithm"');try{g=new mt({schema:k.keyDerivationAlgorithm.algorithmParams})}catch(L){throw new Error('Incorrectly encoded "keyDerivationAlgorithm"')}const b=new Uint8Array(k.password),N=await s.importKey("raw",b,"PBKDF2",!1,["deriveKey"]),S=s.getAlgorithmByOID(k.keyEncryptionAlgorithm.algorithmId,!0,"kekAlgorithm");let E="SHA-1";g.prf&&(E=s.getAlgorithmByOID(g.prf.algorithmId,!0,"prfAlgorithm").hash.name);const x=new Uint8Array(g.salt.valueBlock.valueHex),C=g.iterationCount,P=await s.deriveKey({name:"PBKDF2",hash:{name:E},salt:x,iterations:C},N,S,!0,["wrapKey"]),K=await s.wrapKey("raw",l,P,S);k.encryptedKey=new $({valueHex:K})},w=[];for(let y=0;ythis.recipientInfos.length)throw new Error('Maximum value for "index" is: '.concat(this.recipientInfos.length-1));const n=async w=>{const y=this.recipientInfos[w].value;let k,g,b;const N=y.originator;if(a.recipientCertificate){const G=a.recipientCertificate.subjectPublicKeyInfo.algorithm.algorithmParams;if(G.constructor.blockName()!==J.blockName())throw new Error('Incorrect "recipientCertificate" for index '.concat(w));k=G.valueBlock.toString()}else if(N.value.algorithm.algorithmParams){const G=N.value.algorithm.algorithmParams;if(G.constructor.blockName()!==J.blockName())throw new Error("Incorrect originator for index ".concat(w));k=G.valueBlock.toString()}else throw new Error('Parameter "recipientCertificate" is mandatory for "KeyAgreeRecipientInfo" if algorithm params are missing from originator');if(!a.recipientPrivateKey)throw new Error('Parameter "recipientPrivateKey" is mandatory for "KeyAgreeRecipientInfo"');switch(k){case"1.2.840.10045.3.1.7":g="P-256",b=256;break;case"1.3.132.0.34":g="P-384",b=384;break;case"1.3.132.0.35":g="P-521",b=528;break;default:throw new Error("Incorrect curve OID for index ".concat(w))}let S,E=s;pe.isBufferSource(a.recipientPrivateKey)?S=await s.importKey("pkcs8",a.recipientPrivateKey,{name:"ECDH",namedCurve:g},!0,["deriveBits"]):(S=a.recipientPrivateKey,"crypto"in a&&a.crypto&&(E=a.crypto.subtle)),"algorithmParams"in N.value.algorithm||(N.value.algorithm.algorithmParams=new J({value:k}));const x=N.value.toSchema().toBER(!1),C=await s.importKey("spki",x,{name:"ECDH",namedCurve:g},!0,[]),P=await E.deriveBits({name:"ECDH",public:C},S,b);async function K(G){G=G||!1;const we=new V({schema:y.keyEncryptionAlgorithm.algorithmParams}),ae=s.getAlgorithmByOID(we.algorithmId,!0,"kwAlgorithm");let Y=ae.length;const se=new ArrayBuffer(4),F=new Uint8Array(se);for(let ie=3;ie>=0;ie--)F[ie]=Y,Y>>=8;const W={algorithmId:we.algorithmId};G&&(W.algorithmParams=new Fe);const q=new Ds({keyInfo:new V(W),entityUInfo:y.ukm,suppPubInfo:new $({valueHex:se})}).toSchema().toBER(!1),ee=s.getAlgorithmByOID(y.keyEncryptionAlgorithm.algorithmId,!0,"ecdhAlgorithm");if(!ee.name)throw new Error("Incorrect OID for key encryption algorithm: ".concat(y.keyEncryptionAlgorithm.algorithmId));return np(ee.kdf,P,ae.length,q,s)}const L=await K(),j=async G=>s.importKey("raw",G,{name:"AES-KW"},!0,["unwrapKey"]),U=await j(L),M=async G=>{const we=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,ae=s.getAlgorithmByOID(we,!0,"contentEncryptionAlgorithm");return s.unwrapKey("raw",y.recipientEncryptedKeys.encryptedKeys[0].encryptedKey.valueBlock.valueHexView,G,{name:"AES-KW"},ae,!0,["decrypt"])};try{return await M(U)}catch(G){const we=await K(!0),ae=await j(we);return M(ae)}},u=async w=>{const y=this.recipientInfos[w].value;if(!a.recipientPrivateKey)throw new Error('Parameter "recipientPrivateKey" is mandatory for "KeyTransRecipientInfo"');const k=s.getAlgorithmByOID(y.keyEncryptionAlgorithm.algorithmId,!0,"keyEncryptionAlgorithm");if(k.name==="RSA-OAEP"){const x=y.keyEncryptionAlgorithm.algorithmParams,C=new yt({schema:x});if(k.hash=s.getAlgorithmByOID(C.hashAlgorithm.algorithmId),!("name"in k.hash))throw new Error("Incorrect OID for hash algorithm: ".concat(C.hashAlgorithm.algorithmId))}let g,b=s;pe.isBufferSource(a.recipientPrivateKey)?g=await s.importKey("pkcs8",a.recipientPrivateKey,k,!0,["decrypt"]):(g=a.recipientPrivateKey,"crypto"in a&&a.crypto&&(b=a.crypto.subtle));const N=await b.decrypt(g.algorithm,g,y.encryptedKey.valueBlock.valueHexView),S=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,E=s.getAlgorithmByOID(S,!0,"contentEncryptionAlgorithm");if(!("name"in E))throw new Error('Incorrect "contentEncryptionAlgorithm": '.concat(S));return s.importKey("raw",N,E,!0,["decrypt"])},i=async w=>{const y=this.recipientInfos[w].value;if(!a.preDefinedData)throw new Error('Parameter "preDefinedData" is mandatory for "KEKRecipientInfo"');const k=s.getAlgorithmByOID(y.keyEncryptionAlgorithm.algorithmId,!0,"kekAlgorithm"),g=await s.importKey("raw",a.preDefinedData,k,!0,["unwrapKey"]),b=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,N=s.getAlgorithmByOID(b,!0,"contentEncryptionAlgorithm");if(!N.name)throw new Error('Incorrect "contentEncryptionAlgorithm": '.concat(b));return s.unwrapKey("raw",y.encryptedKey.valueBlock.valueHexView,g,k,N,!0,["decrypt"])},l=async w=>{const y=this.recipientInfos[w].value;let k;if(!a.preDefinedData)throw new Error('Parameter "preDefinedData" is mandatory for "KEKRecipientInfo"');if(!y.keyDerivationAlgorithm)throw new Error('Please append encoded "keyDerivationAlgorithm"');if(!y.keyDerivationAlgorithm.algorithmParams)throw new Error('Incorrectly encoded "keyDerivationAlgorithm"');try{k=new mt({schema:y.keyDerivationAlgorithm.algorithmParams})}catch(K){throw new Error('Incorrectly encoded "keyDerivationAlgorithm"')}const g=await s.importKey("raw",a.preDefinedData,"PBKDF2",!1,["deriveKey"]),b=s.getAlgorithmByOID(y.keyEncryptionAlgorithm.algorithmId,!0,"keyEncryptionAlgorithm"),N=k.prf?s.getAlgorithmByOID(k.prf.algorithmId,!0,"prfAlgorithm").hash.name:"SHA-1",S=new Uint8Array(k.salt.valueBlock.valueHex),E=k.iterationCount,x=await s.deriveKey({name:"PBKDF2",hash:{name:N},salt:S,iterations:E},g,b,!0,["unwrapKey"]),C=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,P=s.getAlgorithmByOID(C,!0,"contentEncryptionAlgorithm");return s.unwrapKey("raw",y.encryptedKey.valueBlock.valueHexView,x,b,P,!0,["decrypt"])};let o;switch(this.recipientInfos[e].variant){case 1:o=await u(e);break;case 2:o=await n(e);break;case 3:o=await i(e);break;case 4:o=await l(e);break;default:throw new Error("Unknown recipient type in array with index ".concat(e))}const c=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,m=s.getAlgorithmByOID(c,!0,"contentEncryptionAlgorithm"),h=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmParams.valueBlock.valueHex,p=new Uint8Array(h);if(!this.encryptedContentInfo.encryptedContent)throw new Error("Required property `encryptedContent` is empty");const d=this.encryptedContentInfo.getEncryptedContent();return s.decrypt({name:m.name,iv:p},o,d)}}es.CLASS_NAME="EnvelopedData";const Kn="safeContents",Go="parsedValue",vp="contentInfos";class On extends D{constructor(e={}){super(),this.safeContents=f(e,Kn,On.defaultValues(Kn)),Go in e&&(this.parsedValue=f(e,Go,On.defaultValues(Go))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Kn:return[];case Go:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Kn:return t.length===0;case Go:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.contentInfos||v,value:fe.schema()})]})}fromSchema(e){T(e,[vp]);const t=R(e,e,On.schema({names:{contentInfos:vp}}));O.assertSchema(t,this.className),this.safeContents=Array.from(t.result.contentInfos,s=>new fe({schema:s}))}toSchema(){return new A({value:Array.from(this.safeContents,e=>e.toSchema())})}toJSON(){return{safeContents:Array.from(this.safeContents,e=>e.toJSON())}}async parseInternalValues(e,t=Q(!0)){if(ne.assert(e,Kn),he.assert(e.safeContents,Kn,"Array"),e.safeContents.length!==this.safeContents.length)throw new he('Length of "parameters.safeContents" must be equal to "this.safeContents.length"');this.parsedValue={safeContents:[]};for(const[s,a]of this.safeContents.entries()){const n=e.safeContents[s],u="parameters.safeContents[".concat(s,"]");switch(a.contentType){case td:{he.assert(a.content,"this.safeContents[j].content",$);const i=a.content.getValue();this.parsedValue.safeContents.push({privacyMode:0,value:js.fromBER(i)})}break;case Og:{const i=new es({schema:a.content});ne.assert(u,n,"recipientCertificate","recipientKey");const l=n,o=l.recipientCertificate,c=l.recipientKey,m=await i.decrypt(0,{recipientCertificate:o,recipientPrivateKey:c},t);this.parsedValue.safeContents.push({privacyMode:2,value:js.fromBER(m)})}break;case Dg:{const i=new ds({schema:a.content});ne.assert(u,n,"password");const l=n.password,o=await i.decrypt({password:l},t);this.parsedValue.safeContents.push({privacyMode:1,value:js.fromBER(o)})}break;default:throw new Error('Unknown "contentType" for AuthenticatedSafe: " '.concat(a.contentType))}}}async makeInternalValues(e,t=Q(!0)){if(!this.parsedValue)throw new Error('Please run "parseValues" first or add "parsedValue" manually');if(he.assert(this.parsedValue,"this.parsedValue","object"),he.assert(this.parsedValue.safeContents,"this.parsedValue.safeContents","Array"),he.assert(e,"parameters","object"),ne.assert(e,"safeContents"),he.assert(e.safeContents,"parameters.safeContents","Array"),e.safeContents.length!==this.parsedValue.safeContents.length)throw new he('Length of "parameters.safeContents" must be equal to "this.parsedValue.safeContents"');this.safeContents=[];for(const[s,a]of this.parsedValue.safeContents.entries())switch(ne.assert("content",a,"privacyMode","value"),he.assert(a.value,"content.value",js),a.privacyMode){case 0:{const n=a.value.toSchema().toBER(!1);this.safeContents.push(new fe({contentType:"1.2.840.113549.1.7.1",content:new $({valueHex:n})}))}break;case 1:{const n=new ds,u=e.safeContents[s];u.contentToEncrypt=a.value.toSchema().toBER(!1),await n.encrypt(u,t),this.safeContents.push(new fe({contentType:"1.2.840.113549.1.7.6",content:n.toSchema()}))}break;case 2:{const n=new es,u=a.value.toSchema().toBER(!1),i=e.safeContents[s];switch(ne.assert("parameters.safeContents[".concat(s,"]"),i,"encryptingCertificate","encryptionAlgorithm"),!0){case i.encryptionAlgorithm.name.toLowerCase()==="aes-cbc":case i.encryptionAlgorithm.name.toLowerCase()==="aes-gcm":break;default:throw new Error('Incorrect parameter "encryptionAlgorithm" in "parameters.safeContents[i]": '.concat(i.encryptionAlgorithm))}switch(!0){case i.encryptionAlgorithm.length===128:case i.encryptionAlgorithm.length===192:case i.encryptionAlgorithm.length===256:break;default:throw new Error('Incorrect parameter "encryptionAlgorithm.length" in "parameters.safeContents[i]": '.concat(i.encryptionAlgorithm.length))}const l=i.encryptionAlgorithm;n.addRecipientByCertificate(i.encryptingCertificate,{},void 0,t),await n.encrypt(l,u,t),this.safeContents.push(new fe({contentType:"1.2.840.113549.1.7.3",content:n.toSchema()}))}break;default:throw new Error('Incorrect value for "content.privacyMode": '.concat(a.privacyMode))}return this}}On.CLASS_NAME="AuthenticatedSafe";const en="hashAlgorithm",Ti="issuerNameHash",Ri="issuerKeyHash",tn="serialNumber",pS=[en,Ti,Ri,tn];class Te extends D{static async create(e,t,s=Q(!0)){const a=new Te;return await a.createForCertificate(e,t,s),a}constructor(e={}){super(),this.hashAlgorithm=f(e,en,Te.defaultValues(en)),this.issuerNameHash=f(e,Ti,Te.defaultValues(Ti)),this.issuerKeyHash=f(e,Ri,Te.defaultValues(Ri)),this.serialNumber=f(e,tn,Te.defaultValues(tn)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case en:return new V;case Ti:case Ri:return new $;case tn:return new B;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case en:return t.algorithmId===v&&!("algorithmParams"in t);case Ti:case Ri:case tn:return t.isEqual(Te.defaultValues(tn));default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[V.schema(t.hashAlgorithmObject||{names:{blockName:t.hashAlgorithm||v}}),new $({name:t.issuerNameHash||v}),new $({name:t.issuerKeyHash||v}),new B({name:t.serialNumber||v})]})}fromSchema(e){T(e,pS);const t=R(e,e,Te.schema({names:{hashAlgorithm:en,issuerNameHash:Ti,issuerKeyHash:Ri,serialNumber:tn}}));O.assertSchema(t,this.className),this.hashAlgorithm=new V({schema:t.result.hashAlgorithm}),this.issuerNameHash=t.result.issuerNameHash,this.issuerKeyHash=t.result.issuerKeyHash,this.serialNumber=t.result.serialNumber}toSchema(){return new A({value:[this.hashAlgorithm.toSchema(),this.issuerNameHash,this.issuerKeyHash,this.serialNumber]})}toJSON(){return{hashAlgorithm:this.hashAlgorithm.toJSON(),issuerNameHash:this.issuerNameHash.toJSON(),issuerKeyHash:this.issuerKeyHash.toJSON(),serialNumber:this.serialNumber.toJSON()}}isEqual(e){return!(this.hashAlgorithm.algorithmId!==e.hashAlgorithm.algorithmId||!pe.isEqual(this.issuerNameHash.valueBlock.valueHexView,e.issuerNameHash.valueBlock.valueHexView)||!pe.isEqual(this.issuerKeyHash.valueBlock.valueHexView,e.issuerKeyHash.valueBlock.valueHexView)||!this.serialNumber.isEqual(e.serialNumber))}async createForCertificate(e,t,s=Q(!0)){ne.assert(t,en,"issuerCertificate");const a=s.getOIDByAlgorithm({name:t.hashAlgorithm},!0,"hashAlgorithm");this.hashAlgorithm=new V({algorithmId:a,algorithmParams:new Fe});const n=t.issuerCertificate;this.serialNumber=e.serialNumber;const u=await s.digest({name:t.hashAlgorithm},n.subject.toSchema().toBER(!1));this.issuerNameHash=new $({valueHex:u});const i=n.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView,l=await s.digest({name:t.hashAlgorithm},i);this.issuerKeyHash=new $({valueHex:l})}}Te.CLASS_NAME="CertID";const Li="certID",Ui="certStatus",ji="thisUpdate",Tr="nextUpdate",sn="singleExtensions",gS=[Li,Ui,ji,Tr,sn];class ts extends D{constructor(e={}){super(),this.certID=f(e,Li,ts.defaultValues(Li)),this.certStatus=f(e,Ui,ts.defaultValues(Ui)),this.thisUpdate=f(e,ji,ts.defaultValues(ji)),Tr in e&&(this.nextUpdate=f(e,Tr,ts.defaultValues(Tr))),sn in e&&(this.singleExtensions=f(e,sn,ts.defaultValues(sn))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Li:return new Te;case Ui:return{};case ji:case Tr:return new Date(0,0,0);case sn:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Li:return Te.compareWithDefault("hashAlgorithm",t.hashAlgorithm)&&Te.compareWithDefault("issuerNameHash",t.issuerNameHash)&&Te.compareWithDefault("issuerKeyHash",t.issuerKeyHash)&&Te.compareWithDefault("serialNumber",t.serialNumber);case Ui:return Object.keys(t).length===0;case ji:case Tr:return t===ts.defaultValues(e);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[Te.schema(t.certID||{}),new Ne({value:[new _({name:t.certStatus||v,idBlock:{tagClass:3,tagNumber:0}}),new I({name:t.certStatus||v,idBlock:{tagClass:3,tagNumber:1},value:[new ke,new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Yl]})]}),new _({name:t.certStatus||v,idBlock:{tagClass:3,tagNumber:2},lenBlock:{length:1}})]}),new ke({name:t.thisUpdate||v}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new ke({name:t.nextUpdate||v})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[je.schema(t.singleExtensions||{})]})]})}fromSchema(e){T(e,gS);const t=R(e,e,ts.schema({names:{certID:{names:{blockName:Li}},certStatus:Ui,thisUpdate:ji,nextUpdate:Tr,singleExtensions:{names:{blockName:sn}}}}));O.assertSchema(t,this.className),this.certID=new Te({schema:t.result.certID}),this.certStatus=t.result.certStatus,this.thisUpdate=t.result.thisUpdate.toDate(),Tr in t.result&&(this.nextUpdate=t.result.nextUpdate.toDate()),sn in t.result&&(this.singleExtensions=Array.from(t.result.singleExtensions.valueBlock.value,s=>new De({schema:s})))}toSchema(){const e=[];return e.push(this.certID.toSchema()),e.push(this.certStatus),e.push(new ke({valueDate:this.thisUpdate})),this.nextUpdate&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[new ke({valueDate:this.nextUpdate})]})),this.singleExtensions&&e.push(new A({value:Array.from(this.singleExtensions,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={certID:this.certID.toJSON(),certStatus:this.certStatus.toJSON(),thisUpdate:this.thisUpdate};return this.nextUpdate&&(e.nextUpdate=this.nextUpdate),this.singleExtensions&&(e.singleExtensions=Array.from(this.singleExtensions,t=>t.toJSON())),e}}ts.CLASS_NAME="SingleResponse";const Uc="tbs",rn="version",xl="responderID",Il="producedAt",Vl="responses",$i="responseExtensions",Rn="ResponseData",Yc="".concat(Rn,".").concat(rn),Ki="".concat(Rn,".").concat(xl),df="".concat(Rn,".").concat(Il),pf="".concat(Rn,".").concat(Vl),eh="".concat(Rn,".").concat($i),wS=[Rn,Yc,Ki,df,pf,eh];class ze extends D{get tbs(){return pe.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(f(e,Uc,ze.defaultValues(Uc))),rn in e&&(this.version=f(e,rn,ze.defaultValues(rn))),this.responderID=f(e,xl,ze.defaultValues(xl)),this.producedAt=f(e,Il,ze.defaultValues(Il)),this.responses=f(e,Vl,ze.defaultValues(Vl)),$i in e&&(this.responseExtensions=f(e,$i,ze.defaultValues($i))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case rn:return 0;case Uc:return Ue;case xl:return{};case Il:return new Date(0,0,0);case Vl:case $i:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Uc:return t.byteLength===0;case xl:return Object.keys(t).length===0;case Il:return t===ze.defaultValues(e);case Vl:case $i:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||Rn,value:[new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new B({name:t.version||Yc})]}),new Ne({value:[new I({name:t.responderID||Ki,idBlock:{tagClass:3,tagNumber:1},value:[me.schema(t.ResponseDataByName||{names:{blockName:"ResponseData.byName"}})]}),new I({name:t.responderID||Ki,idBlock:{tagClass:3,tagNumber:2},value:[new $({name:t.ResponseDataByKey||"ResponseData.byKey"})]})]}),new ke({name:t.producedAt||df}),new A({value:[new Z({name:pf,value:ts.schema(t.response||{})})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[je.schema(t.extensions||{names:{blockName:eh}})]})]})}fromSchema(e){T(e,wS);const t=R(e,e,ze.schema());O.assertSchema(t,this.className),this.tbsView=t.result.ResponseData.valueBeforeDecodeView,Yc in t.result&&(this.version=t.result[Yc].valueBlock.valueDec),t.result[Ki].idBlock.tagNumber===1?this.responderID=new me({schema:t.result[Ki].valueBlock.value[0]}):this.responderID=t.result[Ki].valueBlock.value[0],this.producedAt=t.result[df].toDate(),this.responses=Array.from(t.result[pf],s=>new ts({schema:s})),eh in t.result&&(this.responseExtensions=Array.from(t.result[eh].valueBlock.value,s=>new De({schema:s})))}toSchema(e=!1){let t;if(e===!1){if(!this.tbsView.byteLength)return ze.schema();const s=Le(this.tbsView);O.assert(s,"TBS Response Data"),t=s.result}else{const s=[];rn in this&&s.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[new B({value:this.version})]})),this.responderID instanceof me?s.push(new I({idBlock:{tagClass:3,tagNumber:1},value:[this.responderID.toSchema()]})):s.push(new I({idBlock:{tagClass:3,tagNumber:2},value:[this.responderID]})),s.push(new ke({valueDate:this.producedAt})),s.push(new A({value:Array.from(this.responses,a=>a.toSchema())})),this.responseExtensions&&s.push(new I({idBlock:{tagClass:3,tagNumber:1},value:[new A({value:Array.from(this.responseExtensions,a=>a.toSchema())})]})),t=new A({value:s})}return t}toJSON(){const e={};return rn in this&&(e.version=this.version),this.responderID&&(e.responderID=this.responderID),this.producedAt&&(e.producedAt=this.producedAt),this.responses&&(e.responses=Array.from(this.responses,t=>t.toJSON())),this.responseExtensions&&(e.responseExtensions=Array.from(this.responseExtensions,t=>t.toJSON())),e}}ze.CLASS_NAME="ResponseData";const Dm="trustedCerts",Tm="certs",Rm="crls",Lm="ocsps",Um="checkDate",jm="findOrigin",$m="findIssuer";var dn;(function(r){r[r.unknown=-1]="unknown",r[r.success=0]="success",r[r.noRevocation=11]="noRevocation",r[r.noPath=60]="noPath",r[r.noValidPath=97]="noValidPath"})(dn||(dn={}));class qr extends Error{constructor(e,t){super(t),this.name=qr.NAME,this.code=e,this.message=t}}qr.NAME="ChainValidationError";function yS(r,e){for(let t=0;t=0;o--)try{await e.verify(a[o],s)===!1&&a.splice(o,1)}catch(c){a.splice(o,1)}return a}defaultValues(e){switch(e){case Dm:return[];case Tm:return[];case Rm:return[];case Lm:return[];case Um:return new Date;case jm:return Zh.defaultFindOrigin;case $m:return this.defaultFindIssuer;default:throw new Error("Invalid member name for CertificateChainValidationEngine class: ".concat(e))}}async sort(e=!1,t=Q(!0)){const s=[],a=async(d,w)=>{const y=[];function k(b){let N=!0;for(let S=0;S{const w=[],y=[],k=[];if(w.push(...s.filter(g=>d.issuer.isEqual(g.subject))),w.length===0)return{status:1,statusMessage:"No certificate's issuers"};if(y.push(...this.crls.filter(g=>g.issuer.isEqual(d.issuer))),y.length===0)return{status:2,statusMessage:"No CRLs for specific certificate issuer"};for(let g=0;g{const y=t.getAlgorithmByOID(d.signatureAlgorithm.algorithmId);if(!y.name||!y.hash)return 1;for(let k=0;k{for(let y=0;yw||d[y].notAfter.value=0;y--)if(d[y].issuer.isEqual(d[y].subject)===!1&&d[y].issuer.isEqual(d[y+1].subject)===!1)return{result:!1,resultCode:10,resultMessage:"Incorrect name chaining"};if(this.crls.length!==0||this.ocsps.length!==0)for(let y=0;y=0;d--){let w=!1;for(let y=0;y1)return!1;if(h.length>1){for(let p=0;p0&&h[p].charAt(h[p].length-1)!==":"){c=h[p].split(":")[0];break}}if(s(c,m)){const p=c.split("."),d=m.split(".");return d[0].length===0?!0:p.length===d.length}return!1}function u(l,o){const c=l.valueBlock.valueHexView,m=o.valueBlock.valueHexView;if(c.length===4&&m.length===8){for(let h=0;h<4;h++)if((c[h]^m[h])&m[h+4])return!1;return!0}if(c.length===16&&m.length===32){for(let h=0;h<16;h++)if((c[h]^m[h])&m[h+16])return!1;return!0}return!1}function i(l,o){if(l.typesAndValues.length===0||o.typesAndValues.length===0)return!0;if(l.typesAndValues.length=0;F--,K++){const W=this.certs[F];if(W.extensions){for(let q=0;qee.parsedValue.requireExplicitPolicy?ee.parsedValue.requireExplicitPolicy:N,ee.parsedValue.inhibitPolicyMapping===0?k=!0:b[1]===!1?(b[1]=!0,S=ee.parsedValue.inhibitPolicyMapping+1):S=S>ee.parsedValue.inhibitPolicyMapping+1?ee.parsedValue.inhibitPolicyMapping+1:S),ee.extnID===P0&&g===!1&&(ee.parsedValue.valueBlock.valueDec===0?g=!0:b[2]===!1?(b[2]=!0,E=ee.parsedValue.valueBlock.valueDec):E=E>ee.parsedValue.valueBlock.valueDec?ee.parsedValue.valueBlock.valueDec:E)}if(g===!0){let q=-1;for(let ee=0;ee1){W=!1;break}if(typeof j[F][q]>"u"){if(q>=we){for(let ie=0;ie0,resultCode:0,resultMessage:Y.length>0?v:'Zero "userConstrPolicies" array, no intersections with "authConstrPolicies"',authConstrPolicies:ae,userConstrPolicies:Y,explicitPolicyIndicator:y,policyMappings:M,certificatePath:this.certs};if(Y.length===0||se.result===!1)return se;K=1;for(let F=this.certs.length-2;F>=0;F--,K++){const W=this.certs[F];let q=[],ee=[],ie=[];if(W.extensions)for(let le=0;le0)for(let ye=0;ye0)for(let ye=0;ye0)for(let ye=0;ye0)for(let ye=0;ye0&&ua)throw se.result=!1,se.resultCode=41,se.resultMessage='Failed to meet "permitted sub-trees" name constraint',se}let Ie=!1;for(let le=0;le=0)for(let z=0;z0)for(let z=0;z0)for(let z=0;z0)for(let z=0;znew oe({schema:s})))}toSchema(){const e=[];return e.push(this.tbsResponseData.toSchema()),e.push(this.signatureAlgorithm.toSchema()),e.push(this.signature),this.certs&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[new A({value:Array.from(this.certs,t=>t.toSchema())})]})),new A({value:e})}toJSON(){const e={tbsResponseData:this.tbsResponseData.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signature:this.signature.toJSON()};return this.certs&&(e.certs=Array.from(this.certs,t=>t.toJSON())),e}async getCertificateStatus(e,t,s=Q(!0)){const a={isForCertificate:!1,status:2},n={},u=[];for(const i of this.tbsResponseData.responses){const l=s.getAlgorithmByOID(i.certID.hashAlgorithm.algorithmId,!0,"CertID.hashAlgorithm");if(!n[l.name]){n[l.name]=1;const o=new Te;u.push(o),await o.createForCertificate(e,{hashAlgorithm:l.name,issuerCertificate:t},s)}}for(const i of this.tbsResponseData.responses)for(const l of u)if(i.certID.isEqual(l)){a.isForCertificate=!0;try{switch(i.certStatus.idBlock.isConstructed){case!0:i.certStatus.idBlock.tagNumber===1&&(a.status=1);break;case!1:switch(i.certStatus.idBlock.tagNumber){case 0:a.status=0;break;case 2:a.status=2;break;default:}break;default:}}catch(o){}return a}return a}async sign(e,t="SHA-1",s=Q(!0)){if(!e)throw new Error("Need to provide a private key for signing");const a=await s.getSignatureParameters(e,t),n=a.parameters.algorithm;if(!("name"in n))throw new Error("Empty algorithm");this.signatureAlgorithm=a.signatureAlgorithm,this.tbsResponseData.tbsView=new Uint8Array(this.tbsResponseData.toSchema(!0).toBER());const u=await s.signWithPrivateKey(this.tbsResponseData.tbsView,e,{algorithm:n});this.signature=new re({valueHex:u})}async verify(e={},t=Q(!0)){let s=null,a=-1;const n=e.trustedCerts||[];if(!this.certs)throw new Error("No certificates attached to the BasicOCSPResponse");switch(!0){case this.tbsResponseData.responderID instanceof me:for(const[i,l]of this.certs.entries())if(l.subject.isEqual(this.tbsResponseData.responderID)){a=i;break}break;case this.tbsResponseData.responderID instanceof $:for(const[i,l]of this.certs.entries()){const o=await t.digest({name:"sha-1"},l.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView);if(Zl(o,this.tbsResponseData.responderID.valueBlock.valueHex)){a=i;break}}break;default:throw new Error("Wrong value for responderID")}if(a===-1)throw new Error("Correct certificate was not found in OCSP response");s=this.certs[a];const u=[s];for(const i of this.certs){const l=await $g(i,s);l&&u.push(l)}if(!(await new Zh({certs:u,trustedCerts:n}).verify({},t)).result)throw new Error("Validation of signer's certificate failed");return t.verifyWithPublicKey(this.tbsResponseData.tbsView,this.signature,this.certs[a].subjectPublicKeyInfo,this.signatureAlgorithm)}}qt.CLASS_NAME="BasicOCSPResponse";const Km="tbs",Hm="version",Mm="subject",Fm="subjectPublicKeyInfo",Hn="attributes",Ol="signatureAlgorithm",Dl="signatureValue",Vo="CertificationRequestInfo",ld="".concat(Vo,".version"),cd="".concat(Vo,".subject"),hd="".concat(Vo,".subjectPublicKeyInfo"),Mh="".concat(Vo,".attributes"),bS=[Vo,ld,cd,hd,Mh,Ol,Dl];function SS(r={}){const e=f(r,"names",{});return new A({name:e.CertificationRequestInfo||Vo,value:[new B({name:e.CertificationRequestInfoVersion||ld}),me.schema(e.subject||{names:{blockName:cd}}),Ct.schema({names:{blockName:hd}}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Z({optional:!0,name:e.CertificationRequestInfoAttributes||Mh,value:ge.schema(e.attributes||{})})]})]})}class Yt extends D{get tbs(){return pe.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(f(e,Km,Yt.defaultValues(Km))),this.version=f(e,Hm,Yt.defaultValues(Hm)),this.subject=f(e,Mm,Yt.defaultValues(Mm)),this.subjectPublicKeyInfo=f(e,Fm,Yt.defaultValues(Fm)),Hn in e&&(this.attributes=f(e,Hn,Yt.defaultValues(Hn))),this.signatureAlgorithm=f(e,Ol,Yt.defaultValues(Ol)),this.signatureValue=f(e,Dl,Yt.defaultValues(Dl)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Km:return Ue;case Hm:return 0;case Mm:return new me;case Fm:return new Ct;case Hn:return[];case Ol:return new V;case Dl:return new re;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({value:[SS(t.certificationRequestInfo||{}),new A({name:t.signatureAlgorithm||Ol,value:[new J,new X({optional:!0})]}),new re({name:t.signatureValue||Dl})]})}fromSchema(e){T(e,bS);const t=R(e,e,Yt.schema());O.assertSchema(t,this.className),this.tbsView=t.result.CertificationRequestInfo.valueBeforeDecodeView,this.version=t.result[ld].valueBlock.valueDec,this.subject=new me({schema:t.result[cd]}),this.subjectPublicKeyInfo=new Ct({schema:t.result[hd]}),Mh in t.result&&(this.attributes=Array.from(t.result[Mh],s=>new ge({schema:s}))),this.signatureAlgorithm=new V({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}encodeTBS(){const e=[new B({value:this.version}),this.subject.toSchema(),this.subjectPublicKeyInfo.toSchema()];return Hn in this&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.attributes||[],t=>t.toSchema())})),new A({value:e})}toSchema(e=!1){let t;if(e===!1){if(this.tbsView.byteLength===0)return Yt.schema();const s=Le(this.tbsView);O.assert(s,"PKCS#10 Certificate Request"),t=s.result}else t=this.encodeTBS();return new A({value:[t,this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){const e={tbs:ce.ToHex(this.tbsView),version:this.version,subject:this.subject.toJSON(),subjectPublicKeyInfo:this.subjectPublicKeyInfo.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()};return Hn in this&&(e.attributes=Array.from(this.attributes||[],t=>t.toJSON())),e}async sign(e,t="SHA-1",s=Q(!0)){if(!e)throw new Error("Need to provide a private key for signing");const a=await s.getSignatureParameters(e,t),n=a.parameters;this.signatureAlgorithm=a.signatureAlgorithm,this.tbsView=new Uint8Array(this.encodeTBS().toBER());const u=await s.signWithPrivateKey(this.tbsView,e,n);this.signatureValue=new re({valueHex:u})}async verify(e=Q(!0)){return e.verifyWithPublicKey(this.tbsView,this.signatureValue,this.subjectPublicKeyInfo,this.signatureAlgorithm)}async getPublicKey(e,t=Q(!0)){return t.getPublicKey(this.subjectPublicKeyInfo,this.signatureAlgorithm,e)}}Yt.CLASS_NAME="CertificationRequest";const an="digestAlgorithm",nn="digest",AS=[an,nn];class Gt extends D{constructor(e={}){super(),this.digestAlgorithm=f(e,an,Gt.defaultValues(an)),this.digest=f(e,nn,Gt.defaultValues(nn)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case an:return new V;case nn:return new $;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case an:return V.compareWithDefault("algorithmId",t.algorithmId)&&!("algorithmParams"in t);case nn:return t.isEqual(Gt.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[V.schema(t.digestAlgorithm||{names:{blockName:an}}),new $({name:t.digest||nn})]})}fromSchema(e){T(e,AS);const t=R(e,e,Gt.schema({names:{digestAlgorithm:{names:{blockName:an}},digest:nn}}));O.assertSchema(t,this.className),this.digestAlgorithm=new V({schema:t.result.digestAlgorithm}),this.digest=t.result.digest}toSchema(){return new A({value:[this.digestAlgorithm.toSchema(),this.digest]})}toJSON(){return{digestAlgorithm:this.digestAlgorithm.toJSON(),digest:this.digest.toJSON()}}}Gt.CLASS_NAME="DigestInfo";const Mi="eContentType",Qt="eContent",NS=[Mi,Qt];class Vt extends D{constructor(e={}){if(super(),this.eContentType=f(e,Mi,Vt.defaultValues(Mi)),Qt in e&&(this.eContent=f(e,Qt,Vt.defaultValues(Qt)),this.eContent.idBlock.tagClass===1&&this.eContent.idBlock.tagNumber===4&&this.eContent.idBlock.isConstructed===!1)){const t=new $({idBlock:{isConstructed:!0},isConstructed:!0});let s=0;const a=this.eContent.valueBlock.valueHexView.slice().buffer;let n=a.byteLength;for(;n>0;){const u=new Uint8Array(a,s,s+65536>a.byteLength?a.byteLength-s:65536),i=new ArrayBuffer(u.length),l=new Uint8Array(i);for(let o=0;onew De({schema:s})))}toSchema(){const e=[];return e.push(this.reqCert.toSchema()),this.singleRequestExtensions&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new A({value:Array.from(this.singleRequestExtensions,t=>t.toSchema())})]})),new A({value:e})}toJSON(){const e={reqCert:this.reqCert.toJSON()};return this.singleRequestExtensions&&(e.singleRequestExtensions=Array.from(this.singleRequestExtensions,t=>t.toJSON())),e}};Fh.CLASS_NAME="Request";const jc="tbs",Ji="version",qi="requestorName",$c="requestList",Wi="requestExtensions",Bo="TBSRequest",rh="".concat(Bo,".").concat(Ji),ah="".concat(Bo,".").concat(qi),vf="".concat(Bo,".requests"),nh="".concat(Bo,".").concat(Wi),xS=[Bo,rh,ah,vf,nh];class rt extends D{get tbs(){return pe.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(f(e,jc,rt.defaultValues(jc))),Ji in e&&(this.version=f(e,Ji,rt.defaultValues(Ji))),qi in e&&(this.requestorName=f(e,qi,rt.defaultValues(qi))),this.requestList=f(e,$c,rt.defaultValues($c)),Wi in e&&(this.requestExtensions=f(e,Wi,rt.defaultValues(Wi))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case jc:return Ue;case Ji:return 0;case qi:return new ue;case $c:case Wi:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case jc:return t.byteLength===0;case Ji:return t===rt.defaultValues(e);case qi:return t.type===ue.defaultValues("type")&&Object.keys(t.value).length===0;case $c:case Wi:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||Bo,value:[new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new B({name:t.TBSRequestVersion||rh})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[ue.schema(t.requestorName||{names:{blockName:ah}})]}),new A({name:t.requestList||"TBSRequest.requestList",value:[new Z({name:t.requests||vf,value:Fh.schema(t.requestNames||{})})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:2},value:[je.schema(t.extensions||{names:{blockName:t.requestExtensions||nh}})]})]})}fromSchema(e){T(e,xS);const t=R(e,e,rt.schema());O.assertSchema(t,this.className),this.tbsView=t.result.TBSRequest.valueBeforeDecodeView,rh in t.result&&(this.version=t.result[rh].valueBlock.valueDec),ah in t.result&&(this.requestorName=new ue({schema:t.result[ah]})),this.requestList=Array.from(t.result[vf],s=>new Fh({schema:s})),nh in t.result&&(this.requestExtensions=Array.from(t.result[nh].valueBlock.value,s=>new De({schema:s})))}toSchema(e=!1){let t;if(e===!1){if(this.tbsView.byteLength===0)return rt.schema();const s=Le(this.tbsView);if(O.assert(s,"TBS Request"),!(s.result instanceof A))throw new Error("ASN.1 result should be SEQUENCE");t=s.result}else{const s=[];this.version!==void 0&&s.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[new B({value:this.version})]})),this.requestorName&&s.push(new I({idBlock:{tagClass:3,tagNumber:1},value:[this.requestorName.toSchema()]})),s.push(new A({value:Array.from(this.requestList,a=>a.toSchema())})),this.requestExtensions&&s.push(new I({idBlock:{tagClass:3,tagNumber:2},value:[new A({value:Array.from(this.requestExtensions,a=>a.toSchema())})]})),t=new A({value:s})}return t}toJSON(){const e={};return this.version!=null&&(e.version=this.version),this.requestorName&&(e.requestorName=this.requestorName.toJSON()),e.requestList=Array.from(this.requestList,t=>t.toJSON()),this.requestExtensions&&(e.requestExtensions=Array.from(this.requestExtensions,t=>t.toJSON())),e}}rt.CLASS_NAME="TBSRequest";const Mn="signatureAlgorithm",Fn="signature",er="certs";class Tt extends D{constructor(e={}){super(),this.signatureAlgorithm=f(e,Mn,Tt.defaultValues(Mn)),this.signature=f(e,Fn,Tt.defaultValues(Fn)),er in e&&(this.certs=f(e,er,Tt.defaultValues(er))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Mn:return new V;case Fn:return new re;case er:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Mn:return t.algorithmId===v&&!("algorithmParams"in t);case Fn:return t.isEqual(Tt.defaultValues(e));case er:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[V.schema(t.signatureAlgorithm||{}),new re({name:t.signature||v}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new A({value:[new Z({name:t.certs||v,value:oe.schema({})})]})]})]})}fromSchema(e){T(e,[Mn,Fn,er]);const t=R(e,e,Tt.schema({names:{signatureAlgorithm:{names:{blockName:Mn}},signature:Fn,certs:er}}));O.assertSchema(t,this.className),this.signatureAlgorithm=new V({schema:t.result.signatureAlgorithm}),this.signature=t.result.signature,er in t.result&&(this.certs=Array.from(t.result.certs,s=>new oe({schema:s})))}toSchema(){const e=[];return e.push(this.signatureAlgorithm.toSchema()),e.push(this.signature),this.certs&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new A({value:Array.from(this.certs,t=>t.toSchema())})]})),new A({value:e})}toJSON(){const e={signatureAlgorithm:this.signatureAlgorithm.toJSON(),signature:this.signature.toJSON()};return this.certs&&(e.certs=Array.from(this.certs,t=>t.toJSON())),e}}Tt.CLASS_NAME="Signature";const Gi="tbsRequest",Lr="optionalSignature",IS=[Gi,Lr];class _l extends D{constructor(e={}){super(),this.tbsRequest=f(e,Gi,_l.defaultValues(Gi)),Lr in e&&(this.optionalSignature=f(e,Lr,_l.defaultValues(Lr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Gi:return new rt;case Lr:return new Tt;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Gi:return rt.compareWithDefault("tbs",t.tbs)&&rt.compareWithDefault("version",t.version)&&rt.compareWithDefault("requestorName",t.requestorName)&&rt.compareWithDefault("requestList",t.requestList)&&rt.compareWithDefault("requestExtensions",t.requestExtensions);case Lr:return Tt.compareWithDefault("signatureAlgorithm",t.signatureAlgorithm)&&Tt.compareWithDefault("signature",t.signature)&&Tt.compareWithDefault("certs",t.certs);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||"OCSPRequest",value:[rt.schema(t.tbsRequest||{names:{blockName:Gi}}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[Tt.schema(t.optionalSignature||{names:{blockName:Lr}})]})]})}fromSchema(e){T(e,IS);const t=R(e,e,_l.schema());O.assertSchema(t,this.className),this.tbsRequest=new rt({schema:t.result.tbsRequest}),Lr in t.result&&(this.optionalSignature=new Tt({schema:t.result.optionalSignature}))}toSchema(e=!1){const t=[];return t.push(this.tbsRequest.toSchema(e)),this.optionalSignature&&t.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[this.optionalSignature.toSchema()]})),new A({value:t})}toJSON(){const e={tbsRequest:this.tbsRequest.toJSON()};return this.optionalSignature&&(e.optionalSignature=this.optionalSignature.toJSON()),e}async createForCertificate(e,t,s=Q(!0)){const a=new Te;await a.createForCertificate(e,t,s),this.tbsRequest.requestList.push(new Fh({reqCert:a}))}async sign(e,t="SHA-1",s=Q(!0)){if(ne.assertEmpty(e,"privateKey","OCSPRequest.sign method"),!this.optionalSignature)throw new Error('Need to create "optionalSignature" field before signing');const a=await s.getSignatureParameters(e,t),n=a.parameters;this.optionalSignature.signatureAlgorithm=a.signatureAlgorithm;const u=this.tbsRequest.toSchema(!0).toBER(!1),i=await s.signWithPrivateKey(u,e,n);this.optionalSignature.signature=new re({valueHex:i})}verify(){}}_l.CLASS_NAME="OCSPRequest";const zi="responseType",_i="response",VS=[zi,_i];class rs extends D{constructor(e={}){super(),this.responseType=f(e,zi,rs.defaultValues(zi)),this.response=f(e,_i,rs.defaultValues(_i)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case zi:return v;case _i:return new $;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case zi:return t===v;case _i:return t.isEqual(rs.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.responseType||v}),new $({name:t.response||v})]})}fromSchema(e){T(e,VS);const t=R(e,e,rs.schema({names:{responseType:zi,response:_i}}));O.assertSchema(t,this.className),this.responseType=t.result.responseType.valueBlock.toString(),this.response=t.result.response}toSchema(){return new A({value:[new J({value:this.responseType}),this.response]})}toJSON(){return{responseType:this.responseType,response:this.response.toJSON()}}}rs.CLASS_NAME="ResponseBytes";const Jn="responseStatus",ys="responseBytes";class po extends D{constructor(e={}){super(),this.responseStatus=f(e,Jn,po.defaultValues(Jn)),ys in e&&(this.responseBytes=f(e,ys,po.defaultValues(ys))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Jn:return new Yl;case ys:return new rs;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Jn:return t.isEqual(po.defaultValues(e));case ys:return rs.compareWithDefault("responseType",t.responseType)&&rs.compareWithDefault("response",t.response);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||"OCSPResponse",value:[new Yl({name:t.responseStatus||Jn}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[rs.schema(t.responseBytes||{names:{blockName:ys}})]})]})}fromSchema(e){T(e,[Jn,ys]);const t=R(e,e,po.schema());O.assertSchema(t,this.className),this.responseStatus=t.result.responseStatus,ys in t.result&&(this.responseBytes=new rs({schema:t.result.responseBytes}))}toSchema(){const e=[];return e.push(this.responseStatus),this.responseBytes&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[this.responseBytes.toSchema()]})),new A({value:e})}toJSON(){const e={responseStatus:this.responseStatus.toJSON()};return this.responseBytes&&(e.responseBytes=this.responseBytes.toJSON()),e}async getCertificateStatus(e,t,s=Q(!0)){let a;const n={isForCertificate:!1,status:2};if(!this.responseBytes||this.responseBytes.responseType!==qc)return n;try{const u=Le(this.responseBytes.response.valueBlock.valueHexView);O.assert(u,"Basic OCSP response"),a=new qt({schema:u.result})}catch(u){return n}return a.getCertificateStatus(e,t,s)}async sign(e,t,s=Q(!0)){var a;if(this.responseBytes&&this.responseBytes.responseType===qc)return qt.fromBER(this.responseBytes.response.valueBlock.valueHexView).sign(e,t,s);throw new Error("Unknown ResponseBytes type: ".concat(((a=this.responseBytes)===null||a===void 0?void 0:a.responseType)||"Unknown"))}async verify(e=null,t=Q(!0)){var s;if(!(ys in this))throw new Error("Empty ResponseBytes field");if(this.responseBytes&&this.responseBytes.responseType===qc){const a=qt.fromBER(this.responseBytes.response.valueBlock.valueHexView);return e!==null&&(a.certs||(a.certs=[]),a.certs.push(e)),a.verify({},t)}throw new Error("Unknown ResponseBytes type: ".concat(((s=this.responseBytes)===null||s===void 0?void 0:s.responseType)||"Unknown"))}}po.CLASS_NAME="OCSPResponse";const fa="type",Is="attributes",Kc="encodedValue",BS=[Is];class Se extends D{constructor(e={}){super(),this.type=f(e,fa,Se.defaultValues(fa)),this.attributes=f(e,Is,Se.defaultValues(Is)),this.encodedValue=f(e,Kc,Se.defaultValues(Kc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case fa:return-1;case Is:return[];case Kc:return Ue;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case fa:return t===Se.defaultValues(fa);case Is:return t.length===0;case Kc:return t.byteLength===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new I({name:t.blockName||v,optional:!0,idBlock:{tagClass:3,tagNumber:t.tagNumber||0},value:[new Z({name:t.attributes||v,value:ge.schema()})]})}fromSchema(e){T(e,BS);const t=R(e,e,Se.schema({names:{tagNumber:this.type,attributes:Is}}));O.assertSchema(t,this.className),this.type=t.result.idBlock.tagNumber,this.encodedValue=pe.toArrayBuffer(t.result.valueBeforeDecodeView);const s=new Uint8Array(this.encodedValue);if(s[0]=49,!(Is in t.result)){if(this.type===0)throw new Error("Wrong structure of SignedUnsignedAttributes");return}this.attributes=Array.from(t.result.attributes,a=>new ge({schema:a}))}toSchema(){if(Se.compareWithDefault(fa,this.type)||Se.compareWithDefault(Is,this.attributes))throw new Error('Incorrectly initialized "SignedAndUnsignedAttributes" class');return new I({optional:!0,idBlock:{tagClass:3,tagNumber:this.type},value:Array.from(this.attributes,e=>e.toSchema())})}toJSON(){if(Se.compareWithDefault(fa,this.type)||Se.compareWithDefault(Is,this.attributes))throw new Error('Incorrectly initialized "SignedAndUnsignedAttributes" class');return{type:this.type,attributes:Array.from(this.attributes,e=>e.toJSON())}}}Se.CLASS_NAME="SignedAndUnsignedAttributes";const Xi="version",ln="sid",Zi="digestAlgorithm",Ur="signedAttrs",Qi="signatureAlgorithm",Rl="signature",jr="unsignedAttrs",oa="SignerInfo",bf="".concat(oa,".").concat(Xi),Ll="".concat(oa,".").concat(ln),Sf="".concat(oa,".").concat(Zi),ih="".concat(oa,".").concat(Ur),Af="".concat(oa,".").concat(Qi),Nf="".concat(oa,".").concat(Rl),oh="".concat(oa,".").concat(jr),PS=[bf,Ll,Sf,ih,Af,Nf,oh];class Ve extends D{constructor(e={}){super(),this.version=f(e,Xi,Ve.defaultValues(Xi)),this.sid=f(e,ln,Ve.defaultValues(ln)),this.digestAlgorithm=f(e,Zi,Ve.defaultValues(Zi)),Ur in e&&(this.signedAttrs=f(e,Ur,Ve.defaultValues(Ur))),this.signatureAlgorithm=f(e,Qi,Ve.defaultValues(Qi)),this.signature=f(e,Rl,Ve.defaultValues(Rl)),jr in e&&(this.unsignedAttrs=f(e,jr,Ve.defaultValues(jr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Xi:return 0;case ln:return new X;case Zi:return new V;case Ur:return new Se({type:0});case Qi:return new V;case Rl:return new $;case jr:return new Se({type:1});default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Xi:return Ve.defaultValues(Xi)===t;case ln:return t instanceof X;case Zi:return t instanceof V?t.isEqual(Ve.defaultValues(Zi)):!1;case Ur:return Se.compareWithDefault("type",t.type)&&Se.compareWithDefault("attributes",t.attributes)&&Se.compareWithDefault("encodedValue",t.encodedValue);case Qi:return t instanceof V?t.isEqual(Ve.defaultValues(Qi)):!1;case Rl:case jr:return Se.compareWithDefault("type",t.type)&&Se.compareWithDefault("attributes",t.attributes)&&Se.compareWithDefault("encodedValue",t.encodedValue);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:oa,value:[new B({name:t.version||bf}),new Ne({value:[$e.schema(t.sidSchema||{names:{blockName:Ll}}),new Ne({value:[new I({optional:!0,name:t.sid||Ll,idBlock:{tagClass:3,tagNumber:0},value:[new $]}),new _({optional:!0,name:t.sid||Ll,idBlock:{tagClass:3,tagNumber:0}})]})]}),V.schema(t.digestAlgorithm||{names:{blockName:Sf}}),Se.schema(t.signedAttrs||{names:{blockName:ih,tagNumber:0}}),V.schema(t.signatureAlgorithm||{names:{blockName:Af}}),new $({name:t.signature||Nf}),Se.schema(t.unsignedAttrs||{names:{blockName:oh,tagNumber:1}})]})}fromSchema(e){T(e,PS);const t=R(e,e,Ve.schema());O.assertSchema(t,this.className),this.version=t.result[bf].valueBlock.valueDec;const s=t.result[Ll];s.idBlock.tagClass===1?this.sid=new $e({schema:s}):this.sid=s,this.digestAlgorithm=new V({schema:t.result[Sf]}),ih in t.result&&(this.signedAttrs=new Se({type:0,schema:t.result[ih]})),this.signatureAlgorithm=new V({schema:t.result[Af]}),this.signature=t.result[Nf],oh in t.result&&(this.unsignedAttrs=new Se({type:1,schema:t.result[oh]}))}toSchema(){if(Ve.compareWithDefault(ln,this.sid))throw new Error('Incorrectly initialized "SignerInfo" class');const e=[];return e.push(new B({value:this.version})),this.sid instanceof $e?e.push(this.sid.toSchema()):e.push(this.sid),e.push(this.digestAlgorithm.toSchema()),this.signedAttrs&&Ve.compareWithDefault(Ur,this.signedAttrs)===!1&&e.push(this.signedAttrs.toSchema()),e.push(this.signatureAlgorithm.toSchema()),e.push(this.signature),this.unsignedAttrs&&Ve.compareWithDefault(jr,this.unsignedAttrs)===!1&&e.push(this.unsignedAttrs.toSchema()),new A({value:e})}toJSON(){if(Ve.compareWithDefault(ln,this.sid))throw new Error('Incorrectly initialized "SignerInfo" class');const e={version:this.version,digestAlgorithm:this.digestAlgorithm.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signature:this.signature.toJSON()};return this.sid instanceof X||(e.sid=this.sid.toJSON()),this.signedAttrs&&Ve.compareWithDefault(Ur,this.signedAttrs)===!1&&(e.signedAttrs=this.signedAttrs.toJSON()),this.unsignedAttrs&&Ve.compareWithDefault(jr,this.unsignedAttrs)===!1&&(e.unsignedAttrs=this.unsignedAttrs.toJSON()),e}}Ve.CLASS_NAME="SignerInfo";const Ul="version",jl="policy",$l="messageImprint",Kl="serialNumber",Hl="genTime",cn="ordering",hn="nonce",Yi="accuracy",eo="tsa",to="extensions",is="TSTInfo",kf="".concat(is,".").concat(Ul),Cf="".concat(is,".").concat(jl),Ef="".concat(is,".").concat($l),xf="".concat(is,".").concat(Kl),If="".concat(is,".").concat(Hl),uh="".concat(is,".").concat(Yi),lh="".concat(is,".").concat(cn),ch="".concat(is,".").concat(hn),hh="".concat(is,".").concat(eo),mh="".concat(is,".").concat(to),OS=[kf,Cf,Ef,xf,If,uh,lh,ch,hh,mh];class lt extends D{constructor(e={}){super(),this.version=f(e,Ul,lt.defaultValues(Ul)),this.policy=f(e,jl,lt.defaultValues(jl)),this.messageImprint=f(e,$l,lt.defaultValues($l)),this.serialNumber=f(e,Kl,lt.defaultValues(Kl)),this.genTime=f(e,Hl,lt.defaultValues(Hl)),Yi in e&&(this.accuracy=f(e,Yi,lt.defaultValues(Yi))),cn in e&&(this.ordering=f(e,cn,lt.defaultValues(cn))),hn in e&&(this.nonce=f(e,hn,lt.defaultValues(hn))),eo in e&&(this.tsa=f(e,eo,lt.defaultValues(eo))),to in e&&(this.extensions=f(e,to,lt.defaultValues(to))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ul:return 0;case jl:return v;case $l:return new nt;case Kl:return new B;case Hl:return new Date(0,0,0);case Yi:return new Dt;case cn:return!1;case hn:return new B;case eo:return new ue;case to:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ul:case jl:case Hl:case cn:return t===lt.defaultValues(cn);case $l:return nt.compareWithDefault(pn,t.hashAlgorithm)&&nt.compareWithDefault(gn,t.hashedMessage);case Kl:case hn:return t.isEqual(lt.defaultValues(hn));case Yi:return Dt.compareWithDefault(rr,t.seconds)&&Dt.compareWithDefault(ar,t.millis)&&Dt.compareWithDefault(nr,t.micros);case eo:return ue.compareWithDefault(Zo,t.type)&&ue.compareWithDefault(Qo,t.value);case to:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||is,value:[new B({name:t.version||kf}),new J({name:t.policy||Cf}),nt.schema(t.messageImprint||{names:{blockName:Ef}}),new B({name:t.serialNumber||xf}),new ke({name:t.genTime||If}),Dt.schema(t.accuracy||{names:{blockName:uh}}),new ia({name:t.ordering||lh,optional:!0}),new B({name:t.nonce||ch,optional:!0}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[ue.schema(t.tsa||{names:{blockName:hh}})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new Z({name:t.extensions||mh,value:De.schema(t.extension||{})})]})]})}fromSchema(e){T(e,OS);const t=R(e,e,lt.schema());O.assertSchema(t,this.className),this.version=t.result[kf].valueBlock.valueDec,this.policy=t.result[Cf].valueBlock.toString(),this.messageImprint=new nt({schema:t.result[Ef]}),this.serialNumber=t.result[xf],this.genTime=t.result[If].toDate(),uh in t.result&&(this.accuracy=new Dt({schema:t.result[uh]})),lh in t.result&&(this.ordering=t.result[lh].valueBlock.value),ch in t.result&&(this.nonce=t.result[ch]),hh in t.result&&(this.tsa=new ue({schema:t.result[hh]})),mh in t.result&&(this.extensions=Array.from(t.result[mh],s=>new De({schema:s})))}toSchema(){const e=[];return e.push(new B({value:this.version})),e.push(new J({value:this.policy})),e.push(this.messageImprint.toSchema()),e.push(this.serialNumber),e.push(new ke({valueDate:this.genTime})),this.accuracy&&e.push(this.accuracy.toSchema()),this.ordering!==void 0&&e.push(new ia({value:this.ordering})),this.nonce&&e.push(this.nonce),this.tsa&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[this.tsa.toSchema()]})),this.extensions&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.extensions,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={version:this.version,policy:this.policy,messageImprint:this.messageImprint.toJSON(),serialNumber:this.serialNumber.toJSON(),genTime:this.genTime};return this.accuracy&&(e.accuracy=this.accuracy.toJSON()),this.ordering!==void 0&&(e.ordering=this.ordering),this.nonce&&(e.nonce=this.nonce.toJSON()),this.tsa&&(e.tsa=this.tsa.toJSON()),this.extensions&&(e.extensions=Array.from(this.extensions,t=>t.toJSON())),e}async verify(e,t=Q(!0)){if(!e.data)throw new Error('"data" is a mandatory attribute for TST_INFO verification');const s=e.data;if(e.notBefore&&this.genTimee.notAfter)throw new Error("Generation time for TSTInfo object is more than notAfter value");const a=t.getAlgorithmByOID(this.messageImprint.hashAlgorithm.algorithmId,!0,"MessageImprint.hashAlgorithm"),n=await t.digest(a.name,new Uint8Array(s));return pe.isEqual(n,this.messageImprint.hashedMessage.valueBlock.valueHexView)}}lt.CLASS_NAME="TSTInfo";const so="version",Ml="digestAlgorithms",Fl="encapContentInfo",ro="certificates",ao="crls",Jl="signerInfos",zo="ocsps",Ln="SignedData",Vf="".concat(Ln,".").concat(so),fh="".concat(Ln,".").concat(Ml),Bf="".concat(Ln,".").concat(Fl),dh="".concat(Ln,".").concat(ro),ph="".concat(Ln,".").concat(ao),gh="".concat(Ln,".").concat(Jl),DS=[Vf,fh,Bf,dh,ph,gh];class ut extends Error{constructor({message:e,code:t=0,date:s=new Date,signatureVerified:a=null,signerCertificate:n=null,signerCertificateVerified:u=null,timestampSerial:i=null,certificatePath:l=[]}){super(e),this.name="SignedDataVerifyError",this.date=s,this.code=t,this.timestampSerial=i,this.signatureVerified=a,this.signerCertificate=n,this.signerCertificateVerified=u,this.certificatePath=l}}class st extends D{constructor(e={}){super(),this.version=f(e,so,st.defaultValues(so)),this.digestAlgorithms=f(e,Ml,st.defaultValues(Ml)),this.encapContentInfo=f(e,Fl,st.defaultValues(Fl)),ro in e&&(this.certificates=f(e,ro,st.defaultValues(ro))),ao in e&&(this.crls=f(e,ao,st.defaultValues(ao))),zo in e&&(this.ocsps=f(e,zo,st.defaultValues(zo))),this.signerInfos=f(e,Jl,st.defaultValues(Jl)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case so:return 0;case Ml:return[];case Fl:return new Vt;case ro:return[];case ao:return[];case zo:return[];case Jl:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case so:return t===st.defaultValues(so);case Fl:return Vt.compareWithDefault("eContentType",t.eContentType)&&Vt.compareWithDefault("eContent",t.eContent);case Ml:case ro:case ao:case zo:case Jl:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return t.optional===void 0&&(t.optional=!1),new A({name:t.blockName||Ln,optional:t.optional,value:[new B({name:t.version||Vf}),new Je({value:[new Z({name:t.digestAlgorithms||fh,value:V.schema()})]}),Vt.schema(t.encapContentInfo||{names:{blockName:Bf}}),new I({name:t.certificates||dh,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:ps.schema().valueBlock.value}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:Ms.schema(t.crls||{names:{crls:ph}}).valueBlock.value}),new Je({value:[new Z({name:t.signerInfos||gh,value:Ve.schema()})]})]})}fromSchema(e){T(e,DS);const t=R(e,e,st.schema());if(O.assertSchema(t,this.className),this.version=t.result[Vf].valueBlock.valueDec,fh in t.result&&(this.digestAlgorithms=Array.from(t.result[fh],s=>new V({schema:s}))),this.encapContentInfo=new Vt({schema:t.result[Bf]}),dh in t.result){const s=new ps({schema:new Je({value:t.result[dh].valueBlock.value})});this.certificates=s.certificates.slice(0)}ph in t.result&&(this.crls=Array.from(t.result[ph],s=>s.idBlock.tagClass===1?new Me({schema:s}):(s.idBlock.tagClass=1,s.idBlock.tagNumber=16,new Hs({schema:s})))),gh in t.result&&(this.signerInfos=Array.from(t.result[gh],s=>new Ve({schema:s})))}toSchema(e=!1){const t=[];if(this.certificates&&this.certificates.length&&this.certificates.some(s=>s instanceof ra)||this.crls&&this.crls.length&&this.crls.some(s=>s instanceof Hs)?this.version=5:this.certificates&&this.certificates.length&&this.certificates.some(s=>s instanceof Lt)?this.version=4:this.certificates&&this.certificates.length&&this.certificates.some(s=>s instanceof Ls)||this.signerInfos.some(s=>s.version===3)||this.encapContentInfo.eContentType!==st.ID_DATA?this.version=3:this.version=1,t.push(new B({value:this.version})),t.push(new Je({value:Array.from(this.digestAlgorithms,s=>s.toSchema())})),t.push(this.encapContentInfo.toSchema()),this.certificates){const s=new ps({certificates:this.certificates}).toSchema();t.push(new I({idBlock:{tagClass:3,tagNumber:0},value:s.valueBlock.value}))}return this.crls&&t.push(new I({idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.crls,s=>{if(s instanceof Hs){const a=s.toSchema();return a.idBlock.tagClass=3,a.idBlock.tagNumber=1,a}return s.toSchema(e)})})),t.push(new Je({value:Array.from(this.signerInfos,s=>s.toSchema())})),new A({value:t})}toJSON(){const e={version:this.version,digestAlgorithms:Array.from(this.digestAlgorithms,t=>t.toJSON()),encapContentInfo:this.encapContentInfo.toJSON(),signerInfos:Array.from(this.signerInfos,t=>t.toJSON())};return this.certificates&&(e.certificates=Array.from(this.certificates,t=>t.toJSON())),this.crls&&(e.crls=Array.from(this.crls,t=>t.toJSON())),e}async verify({signer:e=-1,data:t=Ue,trustedCerts:s=[],checkDate:a=new Date,checkChain:n=!1,passedWhenNotRevValues:u=!1,extendedMode:i=!1,findOrigin:l=null,findIssuer:o=null}={},c=Q(!0)){let m=null,h=null;try{let p=Ue,d=v,w=[];const y=this.signerInfos[e];if(!y)throw new ut({date:a,code:1,message:"Unable to get signer by supplied index"});if(!this.certificates)throw new ut({date:a,code:2,message:"No certificates attached to this signed data"});if(y.sid instanceof $e){for(const N of this.certificates)if(N instanceof oe&&N.issuer.isEqual(y.sid.issuer)&&N.serialNumber.isEqual(y.sid.serialNumber)){m=N;break}}else{const N=y.sid,S=N.idBlock.isConstructed?N.valueBlock.value[0].valueBlock.valueHex:N.valueBlock.valueHex;for(const E of this.certificates){if(!(E instanceof oe))continue;const x=await c.digest({name:"sha-1"},E.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView);if(Zl(x,S)){m=E;break}}}if(!m)throw new ut({date:a,code:3,message:"Unable to find signer certificate"});if(this.encapContentInfo.eContentType===U0){if(!this.encapContentInfo.eContent)throw new ut({date:a,code:15,message:"Error during verification: TSTInfo eContent is empty",signatureVerified:null,signerCertificate:m,timestampSerial:h,signerCertificateVerified:!0});let N;try{N=lt.fromBER(this.encapContentInfo.eContent.valueBlock.valueHexView)}catch(S){throw new ut({date:a,code:15,message:"Error during verification: TSTInfo wrong ASN.1 schema ",signatureVerified:null,signerCertificate:m,timestampSerial:h,signerCertificateVerified:!0})}if(a=N.genTime,h=N.serialNumber.valueBlock.valueHexView.slice(),t.byteLength===0)throw new ut({date:a,code:4,message:"Missed detached data input array"});if(!await N.verify({data:t},c))throw new ut({date:a,code:15,message:"Error during verification: TSTInfo verification is failed",signatureVerified:!1,signerCertificate:m,timestampSerial:h,signerCertificateVerified:!0})}if(n){const N=this.certificates.filter(C=>C instanceof oe&&!!$g(C,m)),S={checkDate:a,certs:N,trustedCerts:s};o&&(S.findIssuer=o),l&&(S.findOrigin=l);const E=new Zh(S);if(E.certs.push(m),this.crls)for(const C of this.crls)"thisUpdate"in C?E.crls.push(C):C.otherRevInfoFormat===qc&&E.ocsps.push(new qt({schema:C.otherRevInfo}));this.ocsps&&E.ocsps.push(...this.ocsps);const x=await E.verify({passedWhenNotRevValues:u},c).catch(C=>{throw new ut({date:a,code:5,message:"Validation of signer's certificate failed with error: ".concat(C instanceof Object?C.resultMessage:C),signerCertificate:m,signerCertificateVerified:!1})});if(x.certificatePath&&(w=x.certificatePath),!x.result)throw new ut({date:a,code:5,message:"Validation of signer's certificate failed: ".concat(x.resultMessage),signerCertificate:m,signerCertificateVerified:!1})}const k=c.getAlgorithmByOID(y.digestAlgorithm.algorithmId);if(!("name"in k))throw new ut({date:a,code:7,message:"Unsupported signature algorithm: ".concat(y.digestAlgorithm.algorithmId),signerCertificate:m,signerCertificateVerified:!0});d=k.name;const g=this.encapContentInfo.eContent;if(g)g.idBlock.tagClass===1&&g.idBlock.tagNumber===4?t=g.getValue():t=g.valueBlock.valueBeforeDecodeView;else if(t.byteLength===0)throw new ut({date:a,code:8,message:"Missed detached data input array",signerCertificate:m,signerCertificateVerified:!0});if(y.signedAttrs){let N=!1,S=!1;for(const E of y.signedAttrs.attributes)if(E.type==="1.2.840.113549.1.9.3"&&(N=!0),E.type==="1.2.840.113549.1.9.4"&&(S=!0,p=E.values[0].valueBlock.valueHex),N&&S)break;if(N===!1)throw new ut({date:a,code:9,message:'Attribute "content-type" is a mandatory attribute for "signed attributes"',signerCertificate:m,signerCertificateVerified:!0});if(S===!1)throw new ut({date:a,code:10,message:'Attribute "message-digest" is a mandatory attribute for "signed attributes"',signatureVerified:null,signerCertificate:m,signerCertificateVerified:!0})}if(y.signedAttrs){const N=await c.digest(d,new Uint8Array(t));if(!Zl(N,p))throw new ut({date:a,code:15,message:"Error during verification: Message digest doesn't match",signatureVerified:null,signerCertificate:m,timestampSerial:h,signerCertificateVerified:!0});t=y.signedAttrs.encodedValue}const b=y.signatureAlgorithm.algorithmId==="1.2.840.113549.1.1.1"?await c.verifyWithPublicKey(t,y.signature,m.subjectPublicKeyInfo,y.signatureAlgorithm,d):await c.verifyWithPublicKey(t,y.signature,m.subjectPublicKeyInfo,y.signatureAlgorithm);return i?{date:a,code:14,message:v,signatureVerified:b,signerCertificate:m,timestampSerial:h,signerCertificateVerified:!0,certificatePath:w}:b}catch(p){throw p instanceof ut?p:new ut({date:a,code:15,message:"Error during verification: ".concat(p instanceof Error?p.message:p),signatureVerified:null,signerCertificate:m,timestampSerial:h,signerCertificateVerified:!0})}}async sign(e,t,s="SHA-1",a=Ue,n=Q(!0)){var u;if(!e)throw new Error("Need to provide a private key for signing");const i=this.signerInfos[t];if(!i)throw new RangeError("SignerInfo index is out of range");!(!((u=i.signedAttrs)===null||u===void 0)&&u.attributes.length)&&"hash"in e.algorithm&&"hash"in e.algorithm&&e.algorithm.hash&&(s=e.algorithm.hash.name);const l=n.getOIDByAlgorithm({name:s},!0,"hashAlgorithm");this.digestAlgorithms.filter(h=>h.algorithmId===l).length===0&&this.digestAlgorithms.push(new V({algorithmId:l,algorithmParams:new Fe})),i.digestAlgorithm=new V({algorithmId:l,algorithmParams:new Fe});const o=await n.getSignatureParameters(e,s),c=o.parameters;if(i.signatureAlgorithm=o.signatureAlgorithm,i.signedAttrs)if(i.signedAttrs.encodedValue.byteLength!==0)a=i.signedAttrs.encodedValue;else{a=i.signedAttrs.toSchema().toBER();const h=pe.toUint8Array(a);h[0]=49}else{const h=this.encapContentInfo.eContent;if(h)h.idBlock.tagClass===1&&h.idBlock.tagNumber===4?a=h.getValue():a=h.valueBlock.valueBeforeDecodeView;else if(a.byteLength===0)throw new Error("Missed detached data input array")}const m=await n.signWithPrivateKey(a,e,c);i.signature=new $({valueHex:m})}}st.CLASS_NAME="SignedData",st.ID_DATA=td;const mn="version",fn="authSafe",Vs="macData",_o="parsedValue",TS=[mn,fn,Vs];class Fr extends D{constructor(e={}){super(),this.version=f(e,mn,Fr.defaultValues(mn)),this.authSafe=f(e,fn,Fr.defaultValues(fn)),Vs in e&&(this.macData=f(e,Vs,Fr.defaultValues(Vs))),_o in e&&(this.parsedValue=f(e,_o,Fr.defaultValues(_o))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case mn:return 3;case fn:return new fe;case Vs:return new vt;case _o:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case mn:return t===Fr.defaultValues(e);case fn:return fe.compareWithDefault("contentType",t.contentType)&&fe.compareWithDefault("content",t.content);case Vs:return vt.compareWithDefault("mac",t.mac)&&vt.compareWithDefault("macSalt",t.macSalt)&&vt.compareWithDefault("iterations",t.iterations);case _o:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||mn}),fe.schema(t.authSafe||{names:{blockName:fn}}),vt.schema(t.macData||{names:{blockName:Vs,optional:!0}})]})}fromSchema(e){T(e,TS);const t=R(e,e,Fr.schema({names:{version:mn,authSafe:{names:{blockName:fn}},macData:{names:{blockName:Vs}}}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.authSafe=new fe({schema:t.result.authSafe}),Vs in t.result&&(this.macData=new vt({schema:t.result.macData}))}toSchema(){const e=[new B({value:this.version}),this.authSafe.toSchema()];return this.macData&&e.push(this.macData.toSchema()),new A({value:e})}toJSON(){const e={version:this.version,authSafe:this.authSafe.toJSON()};return this.macData&&(e.macData=this.macData.toJSON()),e}async makeInternalValues(e={},t=Q(!0)){if(he.assert(e,"parameters","object"),!this.parsedValue)throw new Error('Please call "parseValues" function first in order to make "parsedValue" data');switch(ne.assertEmpty(this.parsedValue.integrityMode,"integrityMode","parsedValue"),ne.assertEmpty(this.parsedValue.authenticatedSafe,"authenticatedSafe","parsedValue"),this.parsedValue.integrityMode){case 0:{if(!("iterations"in e))throw new ne("iterations");ne.assertEmpty(e.pbkdf2HashAlgorithm,"pbkdf2HashAlgorithm"),ne.assertEmpty(e.hmacHashAlgorithm,"hmacHashAlgorithm"),ne.assertEmpty(e.password,"password");const s=new ArrayBuffer(64),a=new Uint8Array(s);t.getRandomValues(a);const n=this.parsedValue.authenticatedSafe.toSchema().toBER(!1);this.authSafe=new fe({contentType:fe.DATA,content:new $({valueHex:n})});const u=await t.stampDataWithPassword({password:e.password,hashAlgorithm:e.hmacHashAlgorithm,salt:s,iterationCount:e.iterations,contentToStamp:n});this.macData=new vt({mac:new Gt({digestAlgorithm:new V({algorithmId:t.getOIDByAlgorithm({name:e.hmacHashAlgorithm},!0,"hmacHashAlgorithm")}),digest:new $({valueHex:u})}),macSalt:new $({valueHex:s}),iterations:e.iterations})}break;case 1:{if(!("signingCertificate"in e))throw new ne("signingCertificate");ne.assertEmpty(e.privateKey,"privateKey"),ne.assertEmpty(e.hashAlgorithm,"hashAlgorithm");const s=this.parsedValue.authenticatedSafe.toSchema().toBER(!1),a=new st({version:1,encapContentInfo:new Vt({eContentType:"1.2.840.113549.1.7.1",eContent:new $({valueHex:s})}),certificates:[e.signingCertificate]}),n=await t.digest({name:e.hashAlgorithm},new Uint8Array(s)),u=[];u.push(new ge({type:"1.2.840.113549.1.9.3",values:[new J({value:"1.2.840.113549.1.7.1"})]})),u.push(new ge({type:"1.2.840.113549.1.9.5",values:[new Xm({valueDate:new Date})]})),u.push(new ge({type:"1.2.840.113549.1.9.4",values:[new $({valueHex:n})]})),a.signerInfos.push(new Ve({version:1,sid:new $e({issuer:e.signingCertificate.issuer,serialNumber:e.signingCertificate.serialNumber}),signedAttrs:new Se({type:0,attributes:u})})),await a.sign(e.privateKey,0,e.hashAlgorithm,void 0,t),this.authSafe=new fe({contentType:"1.2.840.113549.1.7.2",content:a.toSchema(!0)})}break;default:throw new Error('Parameter "integrityMode" has unknown value: '.concat(this.parsedValue.integrityMode))}}async parseInternalValues(e,t=Q(!0)){switch(he.assert(e,"parameters","object"),e.checkIntegrity===void 0&&(e.checkIntegrity=!0),this.parsedValue={},this.authSafe.contentType){case fe.DATA:{ne.assertEmpty(e.password,"password"),this.parsedValue.integrityMode=0,he.assert(this.authSafe.content,"authSafe.content",$);const s=this.authSafe.content.getValue();if(this.parsedValue.authenticatedSafe=On.fromBER(s),e.checkIntegrity){if(!this.macData)throw new Error('Absent "macData" value, can not check PKCS#12 data integrity');const a=t.getAlgorithmByOID(this.macData.mac.digestAlgorithm.algorithmId,!0,"digestAlgorithm");if(!await t.verifyDataStampedWithPassword({password:e.password,hashAlgorithm:a.name,salt:pe.toArrayBuffer(this.macData.macSalt.valueBlock.valueHexView),iterationCount:this.macData.iterations||1,contentToVerify:s,signatureToVerify:pe.toArrayBuffer(this.macData.mac.digest.valueBlock.valueHexView)}))throw new Error("Integrity for the PKCS#12 data is broken!")}}break;case fe.SIGNED_DATA:{this.parsedValue.integrityMode=1;const s=new st({schema:this.authSafe.content}),a=s.encapContentInfo.eContent;ne.assert(a,"eContent","cmsSigned.encapContentInfo"),he.assert(a,"eContent",$);const n=a.getValue();if(this.parsedValue.authenticatedSafe=On.fromBER(n),!await s.verify({signer:0,checkChain:!1},t))throw new Error("Integrity for the PKCS#12 data is broken!")}break;default:throw new Error('Incorrect value for "this.authSafe.contentType": '.concat(this.authSafe.contentType))}}}Fr.CLASS_NAME="PFX";const no="status",$r="statusStrings",Kr="failInfo",RS=[no,$r,Kr];var bp;(function(r){r[r.granted=0]="granted",r[r.grantedWithMods=1]="grantedWithMods",r[r.rejection=2]="rejection",r[r.waiting=3]="waiting",r[r.revocationWarning=4]="revocationWarning",r[r.revocationNotification=5]="revocationNotification"})(bp||(bp={}));class Wt extends D{constructor(e={}){super(),this.status=f(e,no,Wt.defaultValues(no)),$r in e&&(this.statusStrings=f(e,$r,Wt.defaultValues($r))),Kr in e&&(this.failInfo=f(e,Kr,Wt.defaultValues(Kr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case no:return 2;case $r:return[];case Kr:return new re;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case no:return t===Wt.defaultValues(e);case $r:return t.length===0;case Kr:return t.isEqual(Wt.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.status||v}),new A({optional:!0,value:[new Z({name:t.statusStrings||v,value:new kh})]}),new re({name:t.failInfo||v,optional:!0})]})}fromSchema(e){T(e,RS);const t=R(e,e,Wt.schema({names:{status:no,statusStrings:$r,failInfo:Kr}}));O.assertSchema(t,this.className);const s=t.result.status;if(s.valueBlock.isHexOnly===!0||s.valueBlock.valueDec<0||s.valueBlock.valueDec>5)throw new Error('PKIStatusInfo "status" has invalid value');this.status=s.valueBlock.valueDec,$r in t.result&&(this.statusStrings=t.result.statusStrings),Kr in t.result&&(this.failInfo=t.result.failInfo)}toSchema(){const e=[];return e.push(new B({value:this.status})),this.statusStrings&&e.push(new A({optional:!0,value:this.statusStrings})),this.failInfo&&e.push(this.failInfo),new A({value:e})}toJSON(){const e={status:this.status};return this.statusStrings&&(e.statusStrings=Array.from(this.statusStrings,t=>t.toJSON())),this.failInfo&&(e.failInfo=this.failInfo.toJSON()),e}}Wt.CLASS_NAME="PKIStatusInfo";const ql="version",Wl="messageImprint",io="reqPolicy",oo="nonce",Bs="certReq",uo="extensions",Un="TimeStampReq",Pf="".concat(Un,".").concat(ql),Of="".concat(Un,".").concat(Wl),wh="".concat(Un,".").concat(io),yh="".concat(Un,".").concat(oo),vh="".concat(Un,".").concat(Bs),bh="".concat(Un,".").concat(uo),LS=[Pf,Of,wh,yh,vh,bh];class Bt extends D{constructor(e={}){super(),this.version=f(e,ql,Bt.defaultValues(ql)),this.messageImprint=f(e,Wl,Bt.defaultValues(Wl)),io in e&&(this.reqPolicy=f(e,io,Bt.defaultValues(io))),oo in e&&(this.nonce=f(e,oo,Bt.defaultValues(oo))),Bs in e&&(this.certReq=f(e,Bs,Bt.defaultValues(Bs))),uo in e&&(this.extensions=f(e,uo,Bt.defaultValues(uo))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ql:return 0;case Wl:return new nt;case io:return v;case oo:return new B;case Bs:return!1;case uo:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ql:case io:case Bs:return t===Bt.defaultValues(e);case Wl:return nt.compareWithDefault("hashAlgorithm",t.hashAlgorithm)&&nt.compareWithDefault("hashedMessage",t.hashedMessage);case oo:return t.isEqual(Bt.defaultValues(e));case uo:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||Un,value:[new B({name:t.version||Pf}),nt.schema(t.messageImprint||{names:{blockName:Of}}),new J({name:t.reqPolicy||wh,optional:!0}),new B({name:t.nonce||yh,optional:!0}),new ia({name:t.certReq||vh,optional:!0}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Z({name:t.extensions||bh,value:De.schema()})]})]})}fromSchema(e){T(e,LS);const t=R(e,e,Bt.schema());O.assertSchema(t,this.className),this.version=t.result[Pf].valueBlock.valueDec,this.messageImprint=new nt({schema:t.result[Of]}),wh in t.result&&(this.reqPolicy=t.result[wh].valueBlock.toString()),yh in t.result&&(this.nonce=t.result[yh]),vh in t.result&&(this.certReq=t.result[vh].valueBlock.value),bh in t.result&&(this.extensions=Array.from(t.result[bh],s=>new De({schema:s})))}toSchema(){const e=[];return e.push(new B({value:this.version})),e.push(this.messageImprint.toSchema()),this.reqPolicy&&e.push(new J({value:this.reqPolicy})),this.nonce&&e.push(this.nonce),Bs in this&&Bt.compareWithDefault(Bs,this.certReq)===!1&&e.push(new ia({value:this.certReq})),this.extensions&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.extensions,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={version:this.version,messageImprint:this.messageImprint.toJSON()};return this.reqPolicy!==void 0&&(e.reqPolicy=this.reqPolicy),this.nonce!==void 0&&(e.nonce=this.nonce.toJSON()),this.certReq!==void 0&&Bt.compareWithDefault(Bs,this.certReq)===!1&&(e.certReq=this.certReq),this.extensions&&(e.extensions=Array.from(this.extensions,t=>t.toJSON())),e}}Bt.CLASS_NAME="TimeStampReq";const lo="status",co="timeStampToken",md="TimeStampResp",Df="".concat(md,".").concat(lo),Sh="".concat(md,".").concat(co),US=[Df,Sh];class Xl extends D{constructor(e={}){super(),this.status=f(e,lo,Xl.defaultValues(lo)),co in e&&(this.timeStampToken=f(e,co,Xl.defaultValues(co))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case lo:return new Wt;case co:return new fe;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case lo:return Wt.compareWithDefault(lo,t.status)&&!("statusStrings"in t)&&!("failInfo"in t);case co:return t.contentType===v&&t.content instanceof X;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||md,value:[Wt.schema(t.status||{names:{blockName:Df}}),fe.schema(t.timeStampToken||{names:{blockName:Sh,optional:!0}})]})}fromSchema(e){T(e,US);const t=R(e,e,Xl.schema());O.assertSchema(t,this.className),this.status=new Wt({schema:t.result[Df]}),Sh in t.result&&(this.timeStampToken=new fe({schema:t.result[Sh]}))}toSchema(){const e=[];return e.push(this.status.toSchema()),this.timeStampToken&&e.push(this.timeStampToken.toSchema()),new A({value:e})}toJSON(){const e={status:this.status.toJSON()};return this.timeStampToken&&(e.timeStampToken=this.timeStampToken.toJSON()),e}async sign(e,t,s=Q(!0)){return this.assertContentType(),new st({schema:this.timeStampToken.content}).sign(e,0,t,void 0,s)}async verify(e={signer:0,trustedCerts:[],data:Ue},t=Q(!0)){return this.assertContentType(),new st({schema:this.timeStampToken.content}).verify(e,t)}assertContentType(){if(!this.timeStampToken)throw new Error("timeStampToken is absent in TSP response");if(this.timeStampToken.contentType!==Pg)throw new Error("Wrong format of timeStampToken: ".concat(this.timeStampToken.contentType))}}Xl.CLASS_NAME="TimeStampResp";function jS(){if(typeof self<"u"){if("crypto"in self){let r="webcrypto";"webkitSubtle"in self.crypto&&(r="safari"),ap(r,new nc({name:r,crypto}))}}else if(typeof crypto<"u"&&"webcrypto"in crypto){const r="NodeJS ^15",e=crypto.webcrypto;ap(r,new nc({name:r,crypto:e}))}}jS();function $S(r){return String.fromCharCode(...r)}function Hg(r){return Uint8Array.from(r,e=>e.charCodeAt(0))}function KS(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function ws(r){return Hg(atob(r))}function fd(r){const e=r.replace(/-----BEGIN ((PRIVATE KEY)|(PUBLIC KEY)|(CERTIFICATE))-----/,"").replace(/-----END ((PRIVATE KEY)|(PUBLIC KEY)|(CERTIFICATE))-----/,"").replace(/\n/g,"");return ws(e)}var HS=Object.defineProperty,MS=Object.defineProperties,FS=Object.getOwnPropertyDescriptors,Sp=Object.getOwnPropertySymbols,JS=Object.prototype.hasOwnProperty,qS=Object.prototype.propertyIsEnumerable,Ap=(r,e,t)=>e in r?HS(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Tf=(r,e)=>{for(var t in e||(e={}))JS.call(e,t)&&Ap(r,t,e[t]);if(Sp)for(var t of Sp(e))qS.call(e,t)&&Ap(r,t,e[t]);return r},Np=(r,e)=>MS(r,FS(e));async function dd(r,e,t={}){return await self.crypto.subtle.decrypt(Tf({name:"AES-GCM"},t),e,r)}async function WS(r,e){return await self.crypto.subtle.decrypt({name:"RSA-OAEP"},e,r)}async function Mg(r){return await self.crypto.subtle.importKey("raw",r,{name:"AES-GCM",length:128},!0,["decrypt","encrypt"])}async function GS(r){return await self.crypto.subtle.importKey("spki",r,{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"},!0,["verify"])}async function zS(r){return await self.crypto.subtle.importKey("pkcs8",r,{name:"RSA-OAEP",hash:"SHA-256"},!0,["decrypt"])}async function _S(r){return new Uint8Array(await self.crypto.subtle.exportKey("raw",r))}async function XS(r){const e=await self.crypto.subtle.digest("SHA-256",r);return KS(new Uint8Array(e))}async function ZS(r,e){return new gw(r).verify({publicKey:e},QS())}function QS(){return Np(Tf({},self.crypto),{subtle:Np(Tf({},self.crypto.subtle),{async verify(r,e,t,s){return self.crypto.subtle.verify(r,e,new Uint8Array(t),new Uint8Array(s))}})})}async function YS(r,e,t){const s=fe.fromBER(e),a=new st({schema:s.content}),n=a.signerInfos[0].sid.issuer.typesAndValues.find(({type:l})=>l==="2.5.4.3").value.valueBlock.value,u=t.find(({userId:l})=>l===n);if(u===void 0)throw new Error("Signer not found in the users array");const i=oe.fromBER(fd(u.certificate));return await a.verify({signer:0,trustedCerts:[i],data:r,checkChain:!0},tA())}class eA extends nc{verify(e,t,s,a){return super.verify(e,t,s,new Uint8Array(a))}}function tA(){return new eA({crypto:self.crypto})}var sA=Object.defineProperty,kp=Object.getOwnPropertySymbols,rA=Object.prototype.hasOwnProperty,aA=Object.prototype.propertyIsEnumerable,Cp=(r,e,t)=>e in r?sA(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,nA=(r,e)=>{for(var t in e||(e={}))rA.call(e,t)&&Cp(r,t,e[t]);if(kp)for(var t of kp(e))aA.call(e,t)&&Cp(r,t,e[t]);return r};async function iA(r,e){_e.debug("Decrypting private key",{privateKeyInfo:r,mnemonic:e});const t=await Promise.all([await Jm(e,r.salt,{hash:"SHA-256",iterations:6e5}),await Jm(e,r.salt,{hash:"SHA-1",iterations:1024}),await Jm(e,r.salt,{hash:"SHA-1",iterations:6e5})]);for(const s of t)try{const a=await dd(r.encryptedPrivateKey,s,{iv:r.iv,tagLength:128}),n=atob($S(new Uint8Array(a)));return zS(fd(n))}catch(a){}throw new Error("Failed to decrypt private key")}async function Jm(r,e,t){const s=await crypto.subtle.importKey("raw",new TextEncoder().encode(r.replaceAll(" ","")),{name:"PBKDF2"},!1,["deriveKey"]);return await crypto.subtle.deriveKey(nA({name:"PBKDF2",salt:e},t),s,{name:"AES-GCM",length:256},!0,["decrypt","encrypt"])}const qm="apps/end_to_end_encryption/api/v2",Fg={PrivateKey:qm+"/private-key",Metadata:qm+"/meta-data/{fileId}",ServerKey:qm+"/server-key"};async function oA(){const r=(await Bp.get(Pp(Fg.PrivateKey),{headers:{"X-E2EE-SUPPORTED":"true"}})).data.ocs.data["private-key"],[e,t,s]=r.split("|");return{encryptedPrivateKey:ws(e),iv:ws(t),salt:ws(s)}}async function uA(){const r=await Bp.get(Pp(Fg.ServerKey),{headers:{"X-E2EE-SUPPORTED":"true"}});return await GS(fd(r.data.ocs.data["public-key"]))}const lA={name:"AlertCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var cA=function(){var r=this,e=r._self._c;return e("span",r._b({staticClass:"material-design-icon alert-circle-outline-icon",attrs:{"aria-hidden":r.title?null:"true","aria-label":r.title,role:"img"},on:{click:function(t){return r.$emit("click",t)}}},"span",r.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:r.fillColor,width:r.size,height:r.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z"}},[r.title?e("title",[r._v(r._s(r.title))]):r._e()])])])},hA=[],mA=qh(lA,cA,hA,!1,null,null);const fA=mA.exports,dA={name:"NcInputField",components:{NcButton:Qg,AlertCircle:fA,Check:yw},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{value:{type:[String,Number],default:void 0},modelValue:{type:[String,Number],default:void 0},type:{type:String,default:"text",validator:r=>["text","password","email","tel","url","search","number"].includes(r)},label:{type:String,default:void 0},labelOutside:{type:Boolean,default:!1},placeholder:{type:String,default:void 0},showTrailingButton:{type:Boolean,default:!1},trailingButtonLabel:{type:String,default:""},success:{type:Boolean,default:!1},error:{type:Boolean,default:!1},helperText:{type:String,default:""},disabled:{type:Boolean,default:!1},pill:{type:Boolean,default:!1},inputClass:{type:[Object,String],default:""}},emits:["update:value","update:modelValue","update:model-value","trailing-button-click"],setup(){return{model:Dp("value","update:value",!0)}},computed:{computedId(){return this.$attrs.id&&this.$attrs.id!==""?this.$attrs.id:this.inputName},inputName(){return"input"+Yg()},hasLeadingIcon(){return this.$slots.default},hasTrailingIcon(){return this.success},hasPlaceholder(){return this.placeholder!==""&&this.placeholder!==void 0},computedPlaceholder(){return this.hasPlaceholder?this.placeholder:this.label},isValidLabel(){const r=this.label||this.labelOutside;return r||console.warn("You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation."),r},ariaDescribedby(){const r=[];return this.helperText.length>0&&r.push("".concat(this.inputName,"-helper-text")),this.$attrs["aria-describedby"]&&r.push(this.$attrs["aria-describedby"]),r.join(" ")||null}},methods:{focus(){this.$refs.input.focus()},select(){this.$refs.input.select()},handleInput(r){const e=this.type==="number"&&typeof this.model=="number"?parseFloat(r.target.value,10):r.target.value;this.model=e},handleTrailingButtonClick(r){this.$emit("trailing-button-click",r)}}};var pA=function(){var t;var r=this,e=r._self._c;return e("div",{staticClass:"input-field",class:{"input-field--disabled":r.disabled,"input-field--label-outside":r.labelOutside||!r.isValidLabel,"input-field--leading-icon":r.hasLeadingIcon,"input-field--trailing-icon":r.showTrailingButton||r.hasTrailingIcon,"input-field--pill":r.pill}},[e("div",{staticClass:"input-field__main-wrapper"},[e("input",r._g(r._b({ref:"input",staticClass:"input-field__input",class:[r.inputClass,{"input-field__input--success":r.success,"input-field__input--error":r.error}],attrs:{id:r.computedId,type:r.type,disabled:r.disabled,placeholder:r.computedPlaceholder,"aria-describedby":r.ariaDescribedby,"aria-live":"polite"},domProps:{value:(t=r.model)==null?void 0:t.toString()},on:{input:r.handleInput}},"input",r.$attrs,!1),r.$listeners)),!r.labelOutside&&r.isValidLabel?e("label",{staticClass:"input-field__label",attrs:{for:r.computedId}},[r._v(" "+r._s(r.label)+" ")]):r._e(),e("div",{directives:[{name:"show",rawName:"v-show",value:r.hasLeadingIcon,expression:"hasLeadingIcon"}],staticClass:"input-field__icon input-field__icon--leading"},[r._t("default")],2),r.showTrailingButton?e("NcButton",{staticClass:"input-field__trailing-button",attrs:{type:"tertiary-no-background","aria-label":r.trailingButtonLabel,disabled:r.disabled},on:{click:r.handleTrailingButtonClick},scopedSlots:r._u([{key:"icon",fn:function(){return[r._t("trailing-button-icon")]},proxy:!0}],null,!0)}):r.success||r.error?e("div",{staticClass:"input-field__icon input-field__icon--trailing"},[r.success?e("Check",{staticStyle:{color:"var(--color-success-text)"},attrs:{size:20}}):r.error?e("AlertCircle",{staticStyle:{color:"var(--color-error-text)"},attrs:{size:20}}):r._e()],1):r._e()],1),r.helperText.length>0?e("p",{staticClass:"input-field__helper-text-message",class:{"input-field__helper-text-message--error":r.error,"input-field__helper-text-message--success":r.success},attrs:{id:"".concat(r.inputName,"-helper-text")}},[r.success?e("Check",{staticClass:"input-field__helper-text-message__icon",attrs:{size:18}}):r.error?e("AlertCircle",{staticClass:"input-field__helper-text-message__icon",attrs:{size:18}}):r._e(),r._v(" "+r._s(r.helperText)+" ")],1):r._e()])},gA=[],wA=qh(dA,pA,gA,!1,null,"e4fac465");const Rf=wA.exports,yA={name:"UndoVariantIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var vA=function(){var r=this,e=r._self._c;return e("span",r._b({staticClass:"material-design-icon undo-variant-icon",attrs:{"aria-hidden":r.title?null:"true","aria-label":r.title,role:"img"},on:{click:function(t){return r.$emit("click",t)}}},"span",r.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:r.fillColor,width:r.size,height:r.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z"}},[r.title?e("title",[r._v(r._s(r.title))]):r._e()])])])},bA=[],SA=qh(yA,vA,bA,!1,null,null);const AA=SA.exports;ew(rw,sw);const NA=new Set(Object.keys(Rf.props)),kA={name:"NcTextField",components:{NcInputField:Rf,Close:tw,ArrowRight:ww,Undo:AA},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:os(it({" ":{}},Rf.props),{trailingButtonLabel:{type:String,default:""},trailingButtonIcon:{type:String,default:"close",validator:r=>["close","arrowRight","undo"].includes(r)}}),emits:["update:value","update:modelValue","update:model-value"],setup(){return{model:Dp("value","update:value")}},computed:{propsAndAttrsToForward(){const r={undo:em("Undo changes"),close:em("Clear text"),arrowRight:em("Save changes")};return os(it(it({},this.$attrs),Object.fromEntries(Object.entries(this.$props).filter(([e])=>NA.has(e)))),{trailingButtonLabel:this.trailingButtonLabel||r[this.trailingButtonIcon]})}},methods:{focus(){this.$refs.inputField.focus()},select(){this.$refs.inputField.select()}}};var CA=function(){var r=this,e=r._self._c;return e("NcInputField",r._g(r._b({ref:"inputField",scopedSlots:r._u([r.type!=="search"?{key:"trailing-button-icon",fn:function(){return[r.trailingButtonIcon==="close"?e("Close",{attrs:{size:20}}):r.trailingButtonIcon==="arrowRight"?e("ArrowRight",{attrs:{size:20}}):r.trailingButtonIcon==="undo"?e("Undo",{attrs:{size:20}}):r._e()]},proxy:!0}:null],null,!0)},"NcInputField",r.propsAndAttrsToForward,!1),r.$listeners),[r._t("default")],2)},EA=[],xA=qh(kA,CA,EA,!1,null,null);const IA=xA.exports,VA=aw({__name:"MnemonicPromptDialog",emits:["close"],setup(r,{emit:e}){const t=tm(),s=tm(""),a=tm(!1),n=wd(()=>a.value===!0&&s.value.trim().split(/\s+/g).length===12);function u(){e("close",s.value)}const i=wd(()=>[{label:zm("end_to_en_encryption","Submit"),nativeType:"submit",type:"primary",disabled:!n.value,callback:u}]);return{__sfc:!0,emit:e,dialogRef:t,mnemonic:s,confirmToggle:a,isFormValid:n,submit:u,buttons:i,t:zm,NcDialog:nw,NcTextField:IA,NcNoteCard:iw,NcCheckboxRadioSwitch:vw}}});var BA=function(){var r=this,e=r._self._c,t=r._self._setupProxy;return e(t.NcDialog,{ref:"dialogRef",attrs:{name:t.t("end_to_end_encryption","Enter your 12 words mnemonic"),buttons:t.buttons,"is-form":!0},on:{submit:t.submit}},[e(t.NcNoteCard,{attrs:{type:"warning","show-alert":!0,heading:t.t("end_to_end_encryption","Decrypting your files in the browser can weaken security")}},[r._v(" "+r._s(t.t("end_to_end_encryption","The server could serve malicious source code to extract the secret that protects your files."))+" "),e(t.NcCheckboxRadioSwitch,{attrs:{required:!0,"data-cy-e2ee-mnemonic-prompt":"i_understand_the_risks",type:"switch"},model:{value:t.confirmToggle,callback:function(s){t.confirmToggle=s},expression:"confirmToggle"}},[r._v(" "+r._s(t.t("end_to_end_encryption","I understand the risks"))+" ")])],1),e(t.NcTextField,{attrs:{value:t.mnemonic,required:"true",pattern:"^(\\w+\\s+){11}\\w+$",label:t.t("end_to_end_encryption","Mnemonic"),autofocus:!0},on:{"update:value":function(s){t.mnemonic=s}}})],1)},PA=[],OA=ow(VA,BA,PA,!1,null,null);const DA=OA.exports;async function TA(){const r=Promise.withResolvers();return uw(DA,void 0,e=>{e!==void 0?r.resolve(e):r.reject()}),r.promise}async function RA(r,e){_e.debug("Decrypting metadata info",{metadata:r});const[t,s]=r.metadata.ciphertext.split("|"),a=await dd(ws(t),e,{iv:ws(s)}),n=JSON.parse(await jA(a));return LA(n,r),await UA(n,e),n}function LA(r,e){var t,s;if(((t=r.keyChecksums)==null?void 0:t.length)!==((s=e.users)==null?void 0:s.length))throw new Error("Key checksums length does not match users length")}async function UA(r,e){if(r.keyChecksums===void 0)return;const t=await _S(e),s=await XS(t);if(!r.keyChecksums.includes(s))throw new Error("Key checksum is not in keyChecksums")}async function jA(r){const e=new ReadableStream({start(t){t.enqueue(new Uint8Array(r)),t.close()}}).pipeThrough(new DecompressionStream("gzip"));return await new Response(e).text()}async function $A(r,e,t){var s;_e.debug("Getting metadata private key",{metadata:r,userId:e});const a=(s=r.users)==null?void 0:s.find(i=>i.userId===e);if(!a)throw new Error("User not found in metadata");const n=ws(a.encryptedMetadataKey),u=await WS(n,t);return await Mg(new Uint8Array(u))}async function Ep(r,e,t){const s=JSON.stringify(r,(n,u)=>{if(n!=="filedrop")return u}),a=await YS(Hg(btoa(s)),ws(e),t.users);if(!a)throw new Error("Metadata signature verification failed");return a}async function KA(r,e){const t=r.users.map(async({userId:s,certificate:a})=>{const n=await ZS(a,e);if(!n)throw new Error("Certificate verification failed for user ".concat(s));return n});return await Promise.all(t)}const HA=Qy(),ht={_userPrivateKey:void 0,_serverPublicKey:void 0,_metadataCache:{},async getUserPrivateKey(){var r;return(r=this._userPrivateKey)!=null||(this._userPrivateKey=await iA(await oA(),await TA())),this._userPrivateKey},async getServerPublicKey(){var r;return(r=this._serverPublicKey)!=null||(this._serverPublicKey=await uA()),this._serverPublicKey},async getMetadata(r){if(this._metadataCache[r])return _e.debug("Found metadata in cache",{path:r,state:ht}),this._metadataCache[r];if(_e.debug("Fetching PROPFIND for metadata",{path:r,state:ht}),await HA.stat(decodeURI(r).replace("remote.php/dav/",""),{details:!0,data:zy()}),this._metadataCache[r])return _e.debug("Found metadata in cache after PROPFIND",{path:r,state:ht}),this._metadataCache[r];throw new Error("Could not find metadata for ".concat(r))},async setMetadata(r,e,t){const s=JSON.parse(e);Jc(s)?(await Ep(s,t,s),await KA(s,await this.getServerPublicKey())):await Ep(s,t,await this.getRootMetadata(No.dirname(r))),this._metadataCache[r]=s,_e.debug("Added metadata in cache",{path:r,state:ht})},async getMetadataInfo(r){const e=await this.getMetadata(r),t=await this.getRootMetadata(r),s=Uf();if(s===null)throw new Error("No user logged in");return RA(e,await $A(t,s.uid,await ht.getUserPrivateKey()))},async getRootMetadata(r){const e=Object.entries(ht._metadataCache).filter(([t])=>r.startsWith(t)).map(([,t])=>t).find(t=>Jc(t));if(e)return _e.debug("Found root metadata in cache",{path:r,state:ht}),e;for(_e.debug("Looking for root metadata",{path:r,state:ht});r!=="/";){const t=await ht.getMetadata(r);if(Jc(t))return _e.debug("Fetched root metadata",{path:r,state:ht}),t;r=No.dirname(r)}throw new Error("Found no root metadata for ".concat(r))}};var MA=Object.defineProperty,FA=Object.defineProperties,JA=Object.getOwnPropertyDescriptors,xp=Object.getOwnPropertySymbols,qA=Object.prototype.hasOwnProperty,WA=Object.prototype.propertyIsEnumerable,Ip=(r,e,t)=>e in r?MA(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,GA=(r,e)=>{for(var t in e||(e={}))qA.call(e,t)&&Ip(r,t,e[t]);if(xp)for(var t of xp(e))WA.call(e,t)&&Ip(r,t,e[t]);return r},zA=(r,e)=>FA(r,JA(e));let Jh;function _A(){Jh=window.fetch,_e.debug("Setting up WebDAV decryption proxy"),window.fetch=async(r,e={})=>{let t=new Request(r,e);if(!(t.url.includes("/remote.php/dav/files/")&&(t.method==="GET"||t.method==="PROPFIND")))return Jh(t);_e.debug("Proxying ".concat(t.method," ").concat(t.url),{request:t});const s=new Headers(t.headers);switch(s.set("X-E2EE-SUPPORTED","true"),t=new Request(t,{headers:s}),t.method){case"PROPFIND":return ZA(t);case"GET":default:return XA(t)}}}async function XA(r){const e=new URL(r.url).pathname,t=Jh(r);try{const s=await ht.getMetadataInfo(No.dirname(e)),a=s.files[No.basename(r.url)];if(a===void 0)throw _e.debug("Could not find file in metadata",{path:e,metadataInfo:s}),new Error("Could not find file in metadata");return await QA(await t,a)}catch(s){return await t}}async function ZA(r){var e;_e.debug("Fetching raw PROPFIND",{request:r});const t=await Jh(r),s=new URL(r.url).pathname,a=await t.text(),n=await Jy(a),u=Fy(n,s,!0);if(((e=u.props)==null?void 0:e["e2ee-is-encrypted"])!==1)return _e.debug("Node is not e2ee",{xml:n}),new Response(a,t);if(u.type==="directory"){const i=u.props["e2ee-metadata"],l=u.props["e2ee-metadata-signature"];i!==void 0&&l!==void 0&&await ht.setMetadata(s,i,l);const o=await ht.getMetadata(s),c=await ht.getMetadataInfo(s);if(Jc(o))Wm(n,s,c);else{const m=await ht.getMetadataInfo(No.dirname(s));Wm(n,s,c,m)}}else if(u.type==="file"){const i=await ht.getMetadataInfo(No.dirname(s));if(i===void 0)return _e.debug("Cannot find metadata for parent folder",{path:s}),new Response(a,t);Wm(n,s,void 0,i)}return new Response(new Ib.XMLBuilder().build(n),t)}function Wm(r,e,t,s){_e.debug("Updating PROPFIND info",{path:e,decryptedMetadata:t,decryptedParentMetadata:s,xml:r}),r.multistatus.response.forEach(a=>{if(a.propstat===void 0)return;const n=a.href===e?s:t;if(n===void 0)return;const u=a.propstat.prop.displayname;let i=u;n.files[u]?(i=n.files[u].filename,a.propstat.prop.getcontenttype=n.files[u].mimetype):n.folders[u]&&(i=n.folders[u],a.propstat.prop.getcontenttype="httpd/unix-directory"),a.propstat.prop.displayname=i,a.propstat.prop.permissions=a.propstat.prop.permissions.replace(/(R)|(D)|(N)|(V)|(W)|(CK)/g,"")})}async function QA(r,e){_e.debug("Decrypting encrypted file",{response:r,fileEncryptionInfo:e});const t=await dd(new Uint8Array(await r.arrayBuffer()),await Mg(ws(e.key)),{iv:ws(e.nonce)}),s=new Headers(r.headers);return s.set("Content-Type",e.mimetype),new Response(t,zA(GA({},r),{headers:s}))}const YA='';function eN(r){if(!(r.permissions&rg.READ))return!1;if(r.attributes["share-attributes"]){const e=JSON.parse(r.attributes["share-attributes"]||"[]").find(({scope:t,key:s})=>t==="permissions"&&s==="download");if(e!==void 0)return e.value===!0}return!0}async function tN([r]){const e=await(await fetch(r.encodedSource)).arrayBuffer(),t=new Blob([e],{type:r.mime}),s=document.createElement("a");s.href=window.URL.createObjectURL(t),s.download=r.displayname,s.click()}const sN=new Yy({id:"download_unencrypted",default:Gf.DEFAULT,displayName:()=>zm("files","Download unencrypted"),iconSvgInline:()=>YA,enabled(r){return r.length!==1||r.some(e=>e.attributes["e2ee-is-encrypted"]!==1)||r.some(e=>!e.isDavRessource)||r.some(e=>e.type!==ag.File)?!1:r.every(eN)},async exec(r){return tN([r]),null},order:30}),rN=Lf("end_to_end_encryption","userConfig",{e2eeInBrowserEnabled:!1});rN.e2eeInBrowserEnabled&&(_A(),hm("nc:e2ee-is-encrypted",{nc:"http://nextcloud.org/ns"}),hm("nc:e2ee-metadata",{nc:"http://nextcloud.org/ns"}),hm("nc:e2ee-metadata-signature",{nc:"http://nextcloud.org/ns"}),ev(sN),Vp("download"),Vp("move-copy"));function Vp(r){_e.debug("Inhibiting ".concat(r," actions for e2ee files"));const e=tv().find(s=>s.id===r),t=e._action.enabled;e._action.enabled=(s,a)=>s.some(n=>n.attributes["e2ee-is-encrypted"]===1)?!1:t(s,a)} +var Jg=Object.defineProperty,qg=Object.defineProperties;var Wg=Object.getOwnPropertyDescriptors;var pd=Object.getOwnPropertySymbols;var Gg=Object.prototype.hasOwnProperty,zg=Object.prototype.propertyIsEnumerable;var gd=r=>{throw TypeError(r)};var Qh=(r,e,t)=>e in r?Jg(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,it=(r,e)=>{for(var t in e||(e={}))Gg.call(e,t)&&Qh(r,t,e[t]);if(pd)for(var t of pd(e))zg.call(e,t)&&Qh(r,t,e[t]);return r},os=(r,e)=>qg(r,Wg(e));var Ke=(r,e,t)=>Qh(r,typeof e!="symbol"?e+"":e,t),Yh=(r,e,t)=>e.has(r)||gd("Cannot "+t);var H=(r,e,t)=>(Yh(r,e,"read from private field"),t?t.call(r):e.get(r)),Et=(r,e,t)=>e.has(r)?gd("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(r):e.set(r,t),Be=(r,e,t,s)=>(Yh(r,e,"write to private field"),s?s.call(r,t):e.set(r,t),t),zs=(r,e,t)=>(Yh(r,e,"access private method"),t);import{p as Ge,g as It,l as Lf,a as Gm,b as Uf,U as _g,o as Xg,c as Zg,d as Bp,v as Pp,n as qh,N as Qg,G as Yg,r as ew,C as tw,t as em,e as sw,f as rw,h as aw,i as tm,j as wd,k as zm,m as nw,q as iw,s as ow,u as uw,w as No}from"./_plugin-vue2_normalizer-CrJFl0zs.chunk.mjs";import{f as Le,B as pe,s as ko,a as Ah,O as $,N as Fe,I as B,S as A,g as f,A as X,b as J,c as T,d as R,e as re,C as I,R as Z,h as Ne,P as _,i as ce,j as Je,G as ke,k as ia,u as go,l as Zl,m as Nh,t as _m,n as Ql,o as lw,p as cw,q as yd,r as vd,E as Yl,U as Xm,v as kh,w as Zm,x as Qm,y as Hc,z as Ts,T as Ym,V as hw,D as Op,F as mw,H as fw,J as dw,K as pw,X as gw,L as ww}from"./ArrowRight-CY2b9hgN-BYrXno-G.chunk.mjs";import{C as yw}from"./Check-BkThHPH7-CnRQr-6z.chunk.mjs";import{u as Dp}from"./useModelMigration-EhAWvqDD-Db3pyjwR.chunk.mjs";import{N as vw}from"./NcCheckboxRadioSwitch-Dm_27r-z-DDJ8c5wz.chunk.mjs";function tr(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function bd(r,e,t){bw(r,e),e.set(r,t)}function bw(r,e){if(e.has(r))throw new TypeError("Cannot initialize the same private elements twice on an object")}function at(r,e){var t=Tp(r,e,"get");return Sw(r,t)}function Sw(r,e){return e.get?e.get.call(r):e.value}function Sd(r,e,t){var s=Tp(r,e,"set");return Aw(r,s,t),t}function Tp(r,e,t){if(!e.has(r))throw new TypeError("attempted to "+t+" private field on non-instance");return e.get(r)}function Aw(r,e,t){if(e.set)e.set.call(r,t);else{if(!e.writable)throw new TypeError("attempted to set read only private field");e.value=t}}var Nw=typeof Symbol<"u"?Symbol.toStringTag:"@@toStringTag",ot=new WeakMap,Po=new WeakMap;class Wh{constructor(e){var{executor:t=()=>{},internals:s=$f(),promise:a=new Promise((n,u)=>t(n,u,i=>{s.onCancelList.push(i)}))}=e;bd(this,ot,{writable:!0,value:void 0}),bd(this,Po,{writable:!0,value:void 0}),tr(this,Nw,"CancelablePromise"),this.cancel=this.cancel.bind(this),Sd(this,ot,s),Sd(this,Po,a||new Promise((n,u)=>t(n,u,i=>{s.onCancelList.push(i)})))}then(e,t){return Mc(at(this,Po).then(hc(e,at(this,ot)),hc(t,at(this,ot))),at(this,ot))}catch(e){return Mc(at(this,Po).catch(hc(e,at(this,ot))),at(this,ot))}finally(e,t){return t&&at(this,ot).onCancelList.push(e),Mc(at(this,Po).finally(hc(()=>{if(e)return t&&(at(this,ot).onCancelList=at(this,ot).onCancelList.filter(s=>s!==e)),e()},at(this,ot))),at(this,ot))}cancel(){at(this,ot).isCanceled=!0;var e=at(this,ot).onCancelList;at(this,ot).onCancelList=[];for(var t of e)if(typeof t=="function")try{t()}catch(s){console.error(s)}}isCanceled(){return at(this,ot).isCanceled===!0}}class sr extends Wh{constructor(e){super({executor:e})}}tr(sr,"all",function(r){return mc(r,Promise.all(r))}),tr(sr,"allSettled",function(r){return mc(r,Promise.allSettled(r))}),tr(sr,"any",function(r){return mc(r,Promise.any(r))}),tr(sr,"race",function(r){return mc(r,Promise.race(r))}),tr(sr,"resolve",function(r){return Ad(Promise.resolve(r))}),tr(sr,"reject",function(r){return Ad(Promise.reject(r))}),tr(sr,"isCancelable",jf);function Ad(r){return Mc(r,$f())}function jf(r){return r instanceof sr||r instanceof Wh}function hc(r,e){if(r)return t=>{if(!e.isCanceled){var s=r(t);return jf(s)&&e.onCancelList.push(s.cancel),s}return t}}function Mc(r,e){return new Wh({internals:e,promise:r})}function mc(r,e){var t=$f();return t.onCancelList.push(()=>{for(var s of r)jf(s)&&s.cancel()}),new Wh({internals:t,promise:e})}function $f(){return{isCanceled:!1,onCancelList:[]}}var sm={},kw={2:r=>{function e(a,n,u){a instanceof RegExp&&(a=t(a,u)),n instanceof RegExp&&(n=t(n,u));var i=s(a,n,u);return i&&{start:i[0],end:i[1],pre:u.slice(0,i[0]),body:u.slice(i[0]+a.length,i[1]),post:u.slice(i[1]+n.length)}}function t(a,n){var u=n.match(a);return u?u[0]:null}function s(a,n,u){var i,l,o,c,m,h=u.indexOf(a),p=u.indexOf(n,h+1),d=h;if(h>=0&&p>0){for(i=[],o=u.length;d>=0&&!m;)d==h?(i.push(d),h=u.indexOf(a,d+1)):i.length==1?m=[i.pop(),p]:((l=i.pop())=0?h:p;i.length&&(m=[o,c])}return m}r.exports=e,e.range=s},101:function(r,e,t){var s;r=t.nmd(r),function(a){var n=(r&&r.exports,typeof It=="object"&&It);n.global!==n&&n.window;var u=function(m){this.message=m};(u.prototype=new Error).name="InvalidCharacterError";var i=function(m){throw new u(m)},l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=/[\t\n\f\r ]/g,c={encode:function(m){m=String(m),/[^\0-\xFF]/.test(m)&&i("The string to be encoded contains characters outside of the Latin1 range.");for(var h,p,d,w,y=m.length%3,k="",g=-1,b=m.length-y;++g>18&63)+l.charAt(w>>12&63)+l.charAt(w>>6&63)+l.charAt(63&w);return y==2?(h=m.charCodeAt(g)<<8,p=m.charCodeAt(++g),k+=l.charAt((w=h+p)>>10)+l.charAt(w>>4&63)+l.charAt(w<<2&63)+"="):y==1&&(w=m.charCodeAt(g),k+=l.charAt(w>>2)+l.charAt(w<<4&63)+"=="),k},decode:function(m){var h=(m=String(m).replace(o,"")).length;h%4==0&&(h=(m=m.replace(/==?$/,"")).length),(h%4==1||/[^+a-zA-Z0-9/]/.test(m))&&i("Invalid character: the string to be decoded is not correctly encoded.");for(var p,d,w=0,y="",k=-1;++k>(-2*w&6)));return y},version:"1.0.0"};(s=function(){return c}.call(e,t,e,r))===void 0||(r.exports=s)}()},172:(r,e)=>{e.d=function(t){if(!t)return 0;for(var s=(t=t.toString()).length,a=t.length;a--;){var n=t.charCodeAt(a);56320<=n&&n<=57343&&a--,127{var e={utf8:{stringToBytes:function(t){return e.bin.stringToBytes(unescape(encodeURIComponent(t)))},bytesToString:function(t){return decodeURIComponent(escape(e.bin.bytesToString(t)))}},bin:{stringToBytes:function(t){for(var s=[],a=0;a{var e,t;e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t={rotl:function(s,a){return s<>>32-a},rotr:function(s,a){return s<<32-a|s>>>a},endian:function(s){if(s.constructor==Number)return 16711935&t.rotl(s,8)|4278255360&t.rotl(s,24);for(var a=0;a0;s--)a.push(Math.floor(256*Math.random()));return a},bytesToWords:function(s){for(var a=[],n=0,u=0;n>>5]|=s[n]<<24-u%32;return a},wordsToBytes:function(s){for(var a=[],n=0;n<32*s.length;n+=8)a.push(s[n>>>5]>>>24-n%32&255);return a},bytesToHex:function(s){for(var a=[],n=0;n>>4).toString(16)),a.push((15&s[n]).toString(16));return a.join("")},hexToBytes:function(s){for(var a=[],n=0;n>>6*(3-i)&63)):a.push("=");return a.join("")},base64ToBytes:function(s){s=s.replace(/[^A-Z0-9+\/]/gi,"");for(var a=[],n=0,u=0;n>>6-2*u);return a}},r.exports=t},635:(r,e,t)=>{const s=t(31),a=t(338),n=t(221);r.exports={XMLParser:a,XMLValidator:s,XMLBuilder:n}},705:(r,e)=>{const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",s="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",a=new RegExp("^"+s+"$");e.isExist=function(n){return n!==void 0},e.isEmptyObject=function(n){return Object.keys(n).length===0},e.merge=function(n,u,i){if(u){const l=Object.keys(u),o=l.length;for(let c=0;c{const s=t(705),a={allowBooleanAttributes:!1,unpairedTags:[]};function n(g){return g===" "||g===" "||g==="\n"||g==="\r"}function u(g,b){const N=b;for(;b5&&S==="xml")return d("InvalidXml","XML declaration allowed only at the start of the document.",y(g,b));if(g[b]=="?"&&g[b+1]==">"){b++;break}}return b}function i(g,b){if(g.length>b+5&&g[b+1]==="-"&&g[b+2]==="-"){for(b+=3;b"){b+=2;break}}else if(g.length>b+8&&g[b+1]==="D"&&g[b+2]==="O"&&g[b+3]==="C"&&g[b+4]==="T"&&g[b+5]==="Y"&&g[b+6]==="P"&&g[b+7]==="E"){let N=1;for(b+=8;b"&&(N--,N===0))break}else if(g.length>b+9&&g[b+1]==="["&&g[b+2]==="C"&&g[b+3]==="D"&&g[b+4]==="A"&&g[b+5]==="T"&&g[b+6]==="A"&&g[b+7]==="["){for(b+=8;b"){b+=2;break}}return b}e.validate=function(g,b){b=Object.assign({},a,b);const N=[];let S=!1,E=!1;g[0]==="\uFEFF"&&(g=g.substr(1));for(let C=0;C"&&g[C]!==" "&&g[C]!==" "&&g[C]!=="\n"&&g[C]!=="\r";C++)L+=g[C];if(L=L.trim(),L[L.length-1]==="/"&&(L=L.substring(0,L.length-1),C--),x=L,!s.isName(x)){let M;return M=L.trim().length===0?"Invalid space after '<'.":"Tag '"+L+"' is an invalid name.",d("InvalidTag",M,y(g,C))}const j=c(g,C);if(j===!1)return d("InvalidAttr","Attributes for '"+L+"' have open quote.",y(g,C));let U=j.value;if(C=j.index,U[U.length-1]==="/"){const M=C-U.length;U=U.substring(0,U.length-1);const G=h(U,b);if(G!==!0)return d(G.err.code,G.err.msg,y(g,M+G.err.line));S=!0}else if(K){if(!j.tagClosed)return d("InvalidTag","Closing tag '"+L+"' doesn't have proper closing.",y(g,C));if(U.trim().length>0)return d("InvalidTag","Closing tag '"+L+"' can't have attributes or invalid starting.",y(g,P));if(N.length===0)return d("InvalidTag","Closing tag '"+L+"' has not been opened.",y(g,P));{const M=N.pop();if(L!==M.tagName){let G=y(g,M.tagStartPos);return d("InvalidTag","Expected closing tag '"+M.tagName+"' (opened in line "+G.line+", col "+G.col+") instead of closing tag '"+L+"'.",y(g,P))}N.length==0&&(E=!0)}}else{const M=h(U,b);if(M!==!0)return d(M.err.code,M.err.msg,y(g,C-U.length+M.err.line));if(E===!0)return d("InvalidXml","Multiple possible root nodes found.",y(g,C));b.unpairedTags.indexOf(L)!==-1||N.push({tagName:L,tagStartPos:P}),S=!0}for(C++;C0)||d("InvalidXml","Invalid '"+JSON.stringify(N.map(C=>C.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):d("InvalidXml","Start tag expected.",1)};const l='"',o="'";function c(g,b){let N="",S="",E=!1;for(;b"&&S===""){E=!0;break}N+=g[b]}return S===""&&{value:N,index:b,tagClosed:E}}const m=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function h(g,b){const N=s.getAllMatches(g,m),S={};for(let E=0;E{const s=t(87),a={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(o,c){return c},attributeValueProcessor:function(o,c){return c},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function n(o){this.options=Object.assign({},a,o),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=l),this.processTextOrObjNode=u,this.options.format?(this.indentate=i,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function u(o,c,m){const h=this.j2x(o,m+1);return o[this.options.textNodeName]!==void 0&&Object.keys(o).length===1?this.buildTextValNode(o[this.options.textNodeName],c,h.attrStr,m):this.buildObjectNode(h.val,c,h.attrStr,m)}function i(o){return this.options.indentBy.repeat(o)}function l(o){return!(!o.startsWith(this.options.attributeNamePrefix)||o===this.options.textNodeName)&&o.substr(this.attrPrefixLen)}n.prototype.build=function(o){return this.options.preserveOrder?s(o,this.options):(Array.isArray(o)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(o={[this.options.arrayNodeName]:o}),this.j2x(o,0).val)},n.prototype.j2x=function(o,c){let m="",h="";for(let p in o)if(Object.prototype.hasOwnProperty.call(o,p))if(o[p]===void 0)this.isAttribute(p)&&(h+="");else if(o[p]===null)this.isAttribute(p)?h+="":p[0]==="?"?h+=this.indentate(c)+"<"+p+"?"+this.tagEndChar:h+=this.indentate(c)+"<"+p+"/"+this.tagEndChar;else if(o[p]instanceof Date)h+=this.buildTextValNode(o[p],p,"",c);else if(typeof o[p]!="object"){const d=this.isAttribute(p);if(d)m+=this.buildAttrPairStr(d,""+o[p]);else if(p===this.options.textNodeName){let w=this.options.tagValueProcessor(p,""+o[p]);h+=this.replaceEntitiesValue(w)}else h+=this.buildTextValNode(o[p],p,"",c)}else if(Array.isArray(o[p])){const d=o[p].length;let w="",y="";for(let k=0;k")+this.newLine:this.indentate(h)+"<"+c+m+d+this.tagEndChar+o+this.indentate(h)+p:this.indentate(h)+"<"+c+m+d+">"+o+p}},n.prototype.closeTag=function(o){let c="";return this.options.unpairedTags.indexOf(o)!==-1?this.options.suppressUnpairedNode||(c="/"):c=this.options.suppressEmptyNode?"/":">")+this.newLine;if(this.options.commentPropName!==!1&&c===this.options.commentPropName)return this.indentate(h)+"")+this.newLine;if(c[0]==="?")return this.indentate(h)+"<"+c+m+"?"+this.tagEndChar;{let p=this.options.tagValueProcessor(c,o);return p=this.replaceEntitiesValue(p),p===""?this.indentate(h)+"<"+c+m+this.closeTag(c)+this.tagEndChar:this.indentate(h)+"<"+c+m+">"+p+"0&&this.options.processEntities)for(let c=0;c{function e(u,i,l,o){let c="",m=!1;for(let h=0;h"),m=!1;continue}if(d===i.commentPropName){c+=o+""),m=!0;continue}if(d[0]==="?"){const b=s(p[":@"],i),N=d==="?xml"?"":o;let S=p[d][0][i.textNodeName];S=S.length!==0?" "+S:"",c+=N+"<".concat(d).concat(S).concat(b,"?>"),m=!0;continue}let y=o;y!==""&&(y+=i.indentBy);const k=o+"<".concat(d).concat(s(p[":@"],i)),g=e(p[d],i,w,y);i.unpairedTags.indexOf(d)!==-1?i.suppressUnpairedNode?c+=k+">":c+=k+"/>":g&&g.length!==0||!i.suppressEmptyNode?g&&g.endsWith(">")?c+=k+">".concat(g).concat(o,""):(c+=k+">",g&&o!==""&&(g.includes("/>")||g.includes("")):c+=k+"/>",m=!0}return c}function t(u){const i=Object.keys(u);for(let l=0;l0&&i.processEntities)for(let l=0;l0&&(l="\n"),e(u,i,"",l)}},193:(r,e,t)=>{const s=t(705);function a(m,h){let p="";for(;h"){if(y?m[h-1]==="-"&&m[h-2]==="-"&&(y=!1,d--):d--,d===0)break}else m[h]==="["?w=!0:k+=m[h];else{if(w&&u(m,h))h+=7,[entityName,val,h]=a(m,h+1),val.indexOf("&")===-1&&(p[c(entityName)]={regx:RegExp("&".concat(entityName,";"),"g"),val});else if(w&&i(m,h))h+=8;else if(w&&l(m,h))h+=8;else if(w&&o(m,h))h+=9;else{if(!n)throw new Error("Invalid DOCTYPE");y=!0}d++,k=""}if(d!==0)throw new Error("Unclosed DOCTYPE")}return{entities:p,i:h}}},63:(r,e)=>{const t={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(s,a){return a},attributeValueProcessor:function(s,a){return a},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(s,a,n){return s}};e.buildOptions=function(s){return Object.assign({},t,s)},e.defaultOptions=t},299:(r,e,t)=>{const s=t(705),a=t(365),n=t(193),u=t(494);function i(S){const E=Object.keys(S);for(let x=0;x0)){L||(S=this.replaceEntitiesValue(S));const j=this.options.tagValueProcessor(E,S,x,P,K);return j==null?S:typeof j!=typeof S||j!==S?j:this.options.trimValues||S.trim()===S?N(S,this.options.parseTagValue,this.options.numberParseOptions):S}}function o(S){if(this.options.removeNSPrefix){const E=S.split(":"),x=S.charAt(0)==="/"?"/":"";if(E[0]==="xmlns")return"";E.length===2&&(S=x+E[1])}return S}const c=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function m(S,E,x){if(!this.options.ignoreAttributes&&typeof S=="string"){const C=s.getAllMatches(S,c),P=C.length,K={};for(let L=0;L",K,"Closing Tag is not closed.");let j=S.substring(K+2,L).trim();if(this.options.removeNSPrefix){const G=j.indexOf(":");G!==-1&&(j=j.substr(G+1))}this.options.transformTagName&&(j=this.options.transformTagName(j)),x&&(C=this.saveTextToParentTag(C,x,P));const U=P.substring(P.lastIndexOf(".")+1);if(j&&this.options.unpairedTags.indexOf(j)!==-1)throw new Error("Unpaired tag can not be used as closing tag: "));let M=0;U&&this.options.unpairedTags.indexOf(U)!==-1?(M=P.lastIndexOf(".",P.lastIndexOf(".")-1),this.tagsNodeStack.pop()):M=P.lastIndexOf("."),P=P.substring(0,M),x=this.tagsNodeStack.pop(),C="",K=L}else if(S[K+1]==="?"){let L=g(S,K,!1,"?>");if(!L)throw new Error("Pi Tag is not closed.");if(C=this.saveTextToParentTag(C,x,P),!(this.options.ignoreDeclaration&&L.tagName==="?xml"||this.options.ignorePiTags)){const j=new a(L.tagName);j.add(this.options.textNodeName,""),L.tagName!==L.tagExp&&L.attrExpPresent&&(j[":@"]=this.buildAttributesMap(L.tagExp,P,L.tagName)),this.addChild(x,j,P)}K=L.closeIndex+1}else if(S.substr(K+1,3)==="!--"){const L=k(S,"-->",K+4,"Comment is not closed.");if(this.options.commentPropName){const j=S.substring(K+4,L-2);C=this.saveTextToParentTag(C,x,P),x.add(this.options.commentPropName,[{[this.options.textNodeName]:j}])}K=L}else if(S.substr(K+1,2)==="!D"){const L=n(S,K);this.docTypeEntities=L.entities,K=L.i}else if(S.substr(K+1,2)==="!["){const L=k(S,"]]>",K,"CDATA is not closed.")-2,j=S.substring(K+9,L);C=this.saveTextToParentTag(C,x,P);let U=this.parseTextData(j,x.tagname,P,!0,!1,!0,!0);U==null&&(U=""),this.options.cdataPropName?x.add(this.options.cdataPropName,[{[this.options.textNodeName]:j}]):x.add(this.options.textNodeName,U),K=L+2}else{let L=g(S,K,this.options.removeNSPrefix),j=L.tagName;const U=L.rawTagName;let M=L.tagExp,G=L.attrExpPresent,we=L.closeIndex;this.options.transformTagName&&(j=this.options.transformTagName(j)),x&&C&&x.tagname!=="!xml"&&(C=this.saveTextToParentTag(C,x,P,!1));const ae=x;if(ae&&this.options.unpairedTags.indexOf(ae.tagname)!==-1&&(x=this.tagsNodeStack.pop(),P=P.substring(0,P.lastIndexOf("."))),j!==E.tagname&&(P+=P?"."+j:j),this.isItStopNode(this.options.stopNodes,P,j)){let Y="";if(M.length>0&&M.lastIndexOf("/")===M.length-1)j[j.length-1]==="/"?(j=j.substr(0,j.length-1),P=P.substr(0,P.length-1),M=j):M=M.substr(0,M.length-1),K=L.closeIndex;else if(this.options.unpairedTags.indexOf(j)!==-1)K=L.closeIndex;else{const F=this.readStopNodeData(S,U,we+1);if(!F)throw new Error("Unexpected end of ".concat(U));K=F.i,Y=F.tagContent}const se=new a(j);j!==M&&G&&(se[":@"]=this.buildAttributesMap(M,P,j)),Y&&(Y=this.parseTextData(Y,j,P,!0,G,!0,!0)),P=P.substr(0,P.lastIndexOf(".")),se.add(this.options.textNodeName,Y),this.addChild(x,se,P)}else{if(M.length>0&&M.lastIndexOf("/")===M.length-1){j[j.length-1]==="/"?(j=j.substr(0,j.length-1),P=P.substr(0,P.length-1),M=j):M=M.substr(0,M.length-1),this.options.transformTagName&&(j=this.options.transformTagName(j));const Y=new a(j);j!==M&&G&&(Y[":@"]=this.buildAttributesMap(M,P,j)),this.addChild(x,Y,P),P=P.substr(0,P.lastIndexOf("."))}else{const Y=new a(j);this.tagsNodeStack.push(x),j!==M&&G&&(Y[":@"]=this.buildAttributesMap(M,P,j)),this.addChild(x,Y,P),x=Y}C="",K=we}}else C+=S[K];return E.child};function p(S,E,x){const C=this.options.updateTag(E.tagname,x,E[":@"]);C===!1||(typeof C=="string"&&(E.tagname=C),S.addChild(E))}const d=function(S){if(this.options.processEntities){for(let E in this.docTypeEntities){const x=this.docTypeEntities[E];S=S.replace(x.regx,x.val)}for(let E in this.lastEntities){const x=this.lastEntities[E];S=S.replace(x.regex,x.val)}if(this.options.htmlEntities)for(let E in this.htmlEntities){const x=this.htmlEntities[E];S=S.replace(x.regex,x.val)}S=S.replace(this.ampEntity.regex,this.ampEntity.val)}return S};function w(S,E,x,C){return S&&(C===void 0&&(C=Object.keys(E.child).length===0),(S=this.parseTextData(S,E.tagname,x,!1,!!E[":@"]&&Object.keys(E[":@"]).length!==0,C))!==void 0&&S!==""&&E.add(this.options.textNodeName,S),S=""),S}function y(S,E,x){const C="*."+x;for(const P in S){const K=S[P];if(C===K||E===K)return!0}return!1}function k(S,E,x,C){const P=S.indexOf(E,x);if(P===-1)throw new Error(C);return P+E.length-1}function g(S,E,x){const C=function(G,we){let ae,Y=arguments.length>2&&arguments[2]!==void 0?arguments[2]:">",se="";for(let F=we;F3&&arguments[3]!==void 0?arguments[3]:">");if(!C)return;let P=C.data;const K=C.index,L=P.search(/\s/);let j=P,U=!0;L!==-1&&(j=P.substring(0,L),P=P.substring(L+1).trimStart());const M=j;if(x){const G=j.indexOf(":");G!==-1&&(j=j.substr(G+1),U=j!==C.data.substr(G+1))}return{tagName:j,tagExp:P,closeIndex:K,attrExpPresent:U,rawTagName:M}}function b(S,E,x){const C=x;let P=1;for(;x",x,"".concat(E," is not closed"));if(S.substring(x+2,K).trim()===E&&(P--,P===0))return{tagContent:S.substring(C,x),i:K};x=K}else if(S[x+1]==="?")x=k(S,"?>",x+1,"StopNode is not closed.");else if(S.substr(x+1,3)==="!--")x=k(S,"-->",x+3,"StopNode is not closed.");else if(S.substr(x+1,2)==="![")x=k(S,"]]>",x,"StopNode is not closed.")-2;else{const K=g(S,x,">");K&&((K&&K.tagName)===E&&K.tagExp[K.tagExp.length-1]!=="/"&&P++,x=K.closeIndex)}}function N(S,E,x){if(E&&typeof S=="string"){const C=S.trim();return C==="true"||C!=="false"&&u(S,x)}return s.isExist(S)?S:""}r.exports=class{constructor(S){this.options=S,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(E,x)=>String.fromCharCode(Number.parseInt(x,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(E,x)=>String.fromCharCode(Number.parseInt(x,16))}},this.addExternalEntities=i,this.parseXml=h,this.parseTextData=l,this.resolveNameSpace=o,this.buildAttributesMap=m,this.isItStopNode=y,this.replaceEntitiesValue=d,this.readStopNodeData=b,this.saveTextToParentTag=w,this.addChild=p}}},338:(r,e,t)=>{const{buildOptions:s}=t(63),a=t(299),{prettify:n}=t(728),u=t(31);r.exports=class{constructor(i){this.externalEntities={},this.options=s(i)}parse(i,l){if(typeof i!="string"){if(!i.toString)throw new Error("XML data is accepted in String or Bytes[] form.");i=i.toString()}if(l){l===!0&&(l={});const m=u.validate(i,l);if(m!==!0)throw Error("".concat(m.err.msg,":").concat(m.err.line,":").concat(m.err.col))}const o=new a(this.options);o.addExternalEntities(this.externalEntities);const c=o.parseXml(i);return this.options.preserveOrder||c===void 0?c:n(c,this.options)}addEntity(i,l){if(l.indexOf("&")!==-1)throw new Error("Entity value can't have '&'");if(i.indexOf("&")!==-1||i.indexOf(";")!==-1)throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if(l==="&")throw new Error("An entity with value '&' is not permitted");this.externalEntities[i]=l}}},728:(r,e)=>{function t(u,i,l){let o;const c={};for(let m=0;m0&&(c[i.textNodeName]=o):o!==void 0&&(c[i.textNodeName]=o),c}function s(u){const i=Object.keys(u);for(let l=0;l{r.exports=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){e==="__proto__"&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){e.tagname==="__proto__"&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}},135:r=>{function e(t){return!!t.constructor&&typeof t.constructor.isBuffer=="function"&&t.constructor.isBuffer(t)}r.exports=function(t){return t!=null&&(e(t)||function(s){return typeof s.readFloatLE=="function"&&typeof s.slice=="function"&&e(s.slice(0,0))}(t)||!!t._isBuffer)}},542:(r,e,t)=>{(function(){var s=t(298),a=t(526).utf8,n=t(135),u=t(526).bin,i=function(l,o){l.constructor==String?l=o&&o.encoding==="binary"?u.stringToBytes(l):a.stringToBytes(l):n(l)?l=Array.prototype.slice.call(l,0):Array.isArray(l)||l.constructor===Uint8Array||(l=l.toString());for(var c=s.bytesToWords(l),m=8*l.length,h=1732584193,p=-271733879,d=-1732584194,w=271733878,y=0;y>>24)|4278255360&(c[y]<<24|c[y]>>>8);c[m>>>5]|=128<>>9<<4)]=m;var k=i._ff,g=i._gg,b=i._hh,N=i._ii;for(y=0;y>>0,p=p+E>>>0,d=d+x>>>0,w=w+C>>>0}return s.endian([h,p,d,w])};i._ff=function(l,o,c,m,h,p,d){var w=l+(o&c|~o&m)+(h>>>0)+d;return(w<>>32-p)+o},i._gg=function(l,o,c,m,h,p,d){var w=l+(o&m|c&~m)+(h>>>0)+d;return(w<>>32-p)+o},i._hh=function(l,o,c,m,h,p,d){var w=l+(o^c^m)+(h>>>0)+d;return(w<>>32-p)+o},i._ii=function(l,o,c,m,h,p,d){var w=l+(c^(o|~m))+(h>>>0)+d;return(w<>>32-p)+o},i._blocksize=16,i._digestsize=16,r.exports=function(l,o){if(l==null)throw new Error("Illegal argument "+l);var c=s.wordsToBytes(i(l,o));return o&&o.asBytes?c:o&&o.asString?u.bytesToString(c):s.bytesToHex(c)}})()},285:(r,e,t)=>{var s=t(2);r.exports=function(k){return k?(k.substr(0,2)==="{}"&&(k="\\{\\}"+k.substr(2)),y(function(g){return g.split("\\\\").join(a).split("\\{").join(n).split("\\}").join(u).split("\\,").join(i).split("\\.").join(l)}(k),!0).map(c)):[]};var a="\0SLASH"+Math.random()+"\0",n="\0OPEN"+Math.random()+"\0",u="\0CLOSE"+Math.random()+"\0",i="\0COMMA"+Math.random()+"\0",l="\0PERIOD"+Math.random()+"\0";function o(k){return parseInt(k,10)==k?parseInt(k,10):k.charCodeAt(0)}function c(k){return k.split(a).join("\\").split(n).join("{").split(u).join("}").split(i).join(",").split(l).join(".")}function m(k){if(!k)return[""];var g=[],b=s("{","}",k);if(!b)return k.split(",");var N=b.pre,S=b.body,E=b.post,x=N.split(",");x[x.length-1]+="{"+S+"}";var C=m(E);return E.length&&(x[x.length-1]+=C.shift(),x.push.apply(x,C)),g.push.apply(g,x),g}function h(k){return"{"+k+"}"}function p(k){return/^-?0\d/.test(k)}function d(k,g){return k<=g}function w(k,g){return k>=g}function y(k,g){var b=[],N=s("{","}",k);if(!N)return[k];var S=N.pre,E=N.post.length?y(N.post,!1):[""];if(/\$$/.test(N.pre))for(var x=0;x=0;if(!U&&!M)return N.post.match(/,.*\}/)?y(k=N.pre+"{"+N.body+u+N.post):[k];if(U)P=N.body.split(/\.\./);else if((P=m(N.body)).length===1&&(P=y(P[0],!1).map(h)).length===1)return E.map(function(_t){return N.pre+P[0]+_t});if(U){var G=o(P[0]),we=o(P[1]),ae=Math.max(P[0].length,P[1].length),Y=P.length==3?Math.abs(o(P[2])):1,se=d;we0){var ie=new Array(ee+1).join("0");q=W<0?"-"+ie+q.slice(1):ie+q}}K.push(q)}}else{K=[];for(var xe=0;xe{function e(o){return e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(c){return typeof c}:function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},e(o)}function t(o){var c=typeof Map=="function"?new Map:void 0;return t=function(m){if(m===null||(h=m,Function.toString.call(h).indexOf("[native code]")===-1))return m;var h;if(typeof m!="function")throw new TypeError("Super expression must either be null or a function");if(c!==void 0){if(c.has(m))return c.get(m);c.set(m,p)}function p(){return s(m,arguments,n(this).constructor)}return p.prototype=Object.create(m.prototype,{constructor:{value:p,enumerable:!1,writable:!0,configurable:!0}}),a(p,m)},t(o)}function s(o,c,m){return s=function(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(h){return!1}}()?Reflect.construct:function(h,p,d){var w=[null];w.push.apply(w,p);var y=new(Function.bind.apply(h,w));return d&&a(y,d.prototype),y},s.apply(null,arguments)}function a(o,c){return a=Object.setPrototypeOf||function(m,h){return m.__proto__=h,m},a(o,c)}function n(o){return n=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},n(o)}var u=function(o){function c(m){var h;return function(p,d){if(!(p instanceof d))throw new TypeError("Cannot call a class as a function")}(this,c),(h=function(p,d){return!d||e(d)!=="object"&&typeof d!="function"?function(w){if(w===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return w}(p):d}(this,n(c).call(this,m))).name="ObjectPrototypeMutationError",h}return function(m,h){if(typeof h!="function"&&h!==null)throw new TypeError("Super expression must either be null or a function");m.prototype=Object.create(h&&h.prototype,{constructor:{value:m,writable:!0,configurable:!0}}),h&&a(m,h)}(c,o),c}(t(Error));function i(o,c){for(var m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},h=c.split("."),p=h.length,d=function(k){var g=h[k];if(!o)return{v:void 0};if(g==="+"){if(Array.isArray(o))return{v:o.map(function(N,S){var E=h.slice(k+1);return E.length>0?i(N,E.join("."),m):m(o,S,h,k)})};var b=h.slice(0,k).join(".");throw new Error("Object at wildcard (".concat(b,") is not an array"))}o=m(o,g,h,k)},w=0;w2&&arguments[2]!==void 0?arguments[2]:{};if(e(o)!="object"||o===null||c===void 0)return!1;if(typeof c=="number")return c in o;try{var h=!1;return i(o,c,function(p,d,w,y){if(!l(w,y))return p&&p[d];h=m.own?p.hasOwnProperty(d):d in p}),h}catch(p){return!1}},hasOwn:function(o,c,m){return this.has(o,c,m||{own:!0})},isIn:function(o,c,m){var h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};if(e(o)!="object"||o===null||c===void 0)return!1;try{var p=!1,d=!1;return i(o,c,function(w,y,k,g){return p=p||w===m||!!w&&w[y]===m,d=l(k,g)&&e(w)==="object"&&y in w,w&&w[y]}),h.validPath?p&&d:p}catch(w){return!1}},ObjectPrototypeMutationError:u}},47:(r,e,t)=>{var s=t(410),a=function(o){return typeof o=="string"};function n(o,c){for(var m=[],h=0;h=-1&&!c;m--){var h=m>=0?arguments[m]:Ge.cwd();if(!a(h))throw new TypeError("Arguments to path.resolve must be strings");h&&(o=h+"/"+o,c=h.charAt(0)==="/")}return(c?"/":"")+(o=n(o.split("/"),!c).join("/"))||"."},i.normalize=function(o){var c=i.isAbsolute(o),m=o.substr(-1)==="/";return(o=n(o.split("/"),!c).join("/"))||c||(o="."),o&&m&&(o+="/"),(c?"/":"")+o},i.isAbsolute=function(o){return o.charAt(0)==="/"},i.join=function(){for(var o="",c=0;c=0&&g[N]==="";N--);return b>N?[]:g.slice(b,N+1)}o=i.resolve(o).substr(1),c=i.resolve(c).substr(1);for(var h=m(o.split("/")),p=m(c.split("/")),d=Math.min(h.length,p.length),w=d,y=0;y{var t=Object.prototype.hasOwnProperty;function s(n){try{return decodeURIComponent(n.replace(/\+/g," "))}catch(u){return null}}function a(n){try{return encodeURIComponent(n)}catch(u){return null}}e.stringify=function(n,u){u=u||"";var i,l,o=[];for(l in typeof u!="string"&&(u="?"),n)if(t.call(n,l)){if((i=n[l])||i!=null&&!isNaN(i)||(i=""),l=a(l),i=a(i),l===null||i===null)continue;o.push(l+"="+i)}return o.length?u+o.join("&"):""},e.parse=function(n){for(var u,i=/([^=?#&]+)=?([^&]*)/g,l={};u=i.exec(n);){var o=s(u[1]),c=s(u[2]);o===null||c===null||o in l||(l[o]=c)}return l}},670:r=>{r.exports=function(e,t){if(t=t.split(":")[0],!(e=+e))return!1;switch(t){case"http":case"ws":return e!==80;case"https":case"wss":return e!==443;case"ftp":return e!==21;case"gopher":return e!==70;case"file":return!1}return e!==0}},494:r=>{const e=/^[-+]?0x[a-fA-F0-9]+$/,t=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const s={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};r.exports=function(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(n=Object.assign({},s,n),!a||typeof a!="string")return a;let u=a.trim();if(n.skipLike!==void 0&&n.skipLike.test(u))return a;if(n.hex&&e.test(u))return Number.parseInt(u,16);{const l=t.exec(u);if(l){const o=l[1],c=l[2];let m=((i=l[3])&&i.indexOf(".")!==-1&&((i=i.replace(/0+$/,""))==="."?i="0":i[0]==="."?i="0"+i:i[i.length-1]==="."&&(i=i.substr(0,i.length-1))),i);const h=l[4]||l[6];if(!n.leadingZeros&&c.length>0&&o&&u[2]!=="."||!n.leadingZeros&&c.length>0&&!o&&u[1]!==".")return a;{const p=Number(u),d=""+p;return d.search(/[eE]/)!==-1||h?n.eNotation?p:a:u.indexOf(".")!==-1?d==="0"&&m===""||d===m||o&&d==="-"+m?p:a:c?m===d||o+m===d?p:a:u===d||u===o+d?p:a}}return a}var i}},737:(r,e,t)=>{var s=t(670),a=t(647),n=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,u=/[\n\r\t]/g,i=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,l=/:\d+$/,o=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,c=/^[a-zA-Z]:/;function m(g){return(g||"").toString().replace(n,"")}var h=[["#","hash"],["?","query"],function(g,b){return w(b.protocol)?g.replace(/\\/g,"/"):g},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],p={hash:1,query:1};function d(g){var b,N=(typeof window<"u"?window:typeof It<"u"?It:typeof self<"u"?self:{}).location||{},S={},E=typeof(g=g||N);if(g.protocol==="blob:")S=new k(unescape(g.pathname),{});else if(E==="string")for(b in S=new k(g,{}),p)delete S[b];else if(E==="object"){for(b in g)b in p||(S[b]=g[b]);S.slashes===void 0&&(S.slashes=i.test(g.href))}return S}function w(g){return g==="file:"||g==="ftp:"||g==="http:"||g==="https:"||g==="ws:"||g==="wss:"}function y(g,b){g=(g=m(g)).replace(u,""),b=b||{};var N,S=o.exec(g),E=S[1]?S[1].toLowerCase():"",x=!!S[2],C=!!S[3],P=0;return x?C?(N=S[2]+S[3]+S[4],P=S[2].length+S[3].length):(N=S[2]+S[4],P=S[2].length):C?(N=S[3]+S[4],P=S[3].length):N=S[4],E==="file:"?P>=2&&(N=N.slice(2)):w(E)?N=S[4]:E?x&&(N=N.slice(2)):P>=2&&w(b.protocol)&&(N=S[4]),{protocol:E,slashes:x||w(E),slashesCount:P,rest:N}}function k(g,b,N){if(g=(g=m(g)).replace(u,""),!(this instanceof k))return new k(g,b,N);var S,E,x,C,P,K,L=h.slice(),j=typeof b,U=this,M=0;for(j!=="object"&&j!=="string"&&(N=b,b=null),N&&typeof N!="function"&&(N=a.parse),S=!(E=y(g||"",b=d(b))).protocol&&!E.slashes,U.slashes=E.slashes||S&&b.slashes,U.protocol=E.protocol||b.protocol||"",g=E.rest,(E.protocol==="file:"&&(E.slashesCount!==2||c.test(g))||!E.slashes&&(E.protocol||E.slashesCount<2||!w(U.protocol)))&&(L[3]=[/(.*)/,"pathname"]);M{},388:()=>{},805:()=>{},345:()=>{},800:()=>{}},Nd={};function de(r){var e=Nd[r];if(e!==void 0)return e.exports;var t=Nd[r]={id:r,loaded:!1,exports:{}};return kw[r].call(t.exports,t,t.exports,de),t.loaded=!0,t.exports}de.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return de.d(e,{a:e}),e},de.d=(r,e)=>{for(var t in e)de.o(e,t)&&!de.o(r,t)&&Object.defineProperty(r,t,{enumerable:!0,get:e[t]})},de.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),de.nmd=r=>(r.paths=[],r.children||(r.children=[]),r);var zt={};de.d(zt,{hT:()=>bt,O4:()=>Js,Kd:()=>Dw,YK:()=>Tw,UU:()=>Ky,Gu:()=>jp,ky:()=>_p,h4:()=>lc,ch:()=>Gh,hq:()=>Tn,i5:()=>Xp});var Cw=de(737),Ew=de.n(Cw);function rm(r){if(!ef(r))throw new Error("Parameter was not an error")}function ef(r){return!!r&&typeof r=="object"&&(e=r,Object.prototype.toString.call(e)==="[object Error]")||r instanceof Error;var e}class Nt extends Error{constructor(e,t){const s=[...arguments],{options:a,shortMessage:n}=function(i){let l,o="";if(i.length===0)l={};else if(ef(i[0]))l={cause:i[0]},o=i.slice(1).join(" ")||"";else if(i[0]&&typeof i[0]=="object")l=Object.assign({},i[0]),o=i.slice(1).join(" ")||"";else{if(typeof i[0]!="string")throw new Error("Invalid arguments passed to Layerr");l={},o=o=i.join(" ")||""}return{options:l,shortMessage:o}}(s);let u=n;if(a.cause&&(u="".concat(u,": ").concat(a.cause.message)),super(u),this.message=u,a.name&&typeof a.name=="string"?this.name=a.name:this.name="Layerr",a.cause&&Object.defineProperty(this,"_cause",{value:a.cause}),Object.defineProperty(this,"_info",{value:{}}),a.info&&typeof a.info=="object"&&Object.assign(this._info,a.info),Error.captureStackTrace){const i=a.constructorOpt||this.constructor;Error.captureStackTrace(this,i)}}static cause(e){return rm(e),e._cause&&ef(e._cause)?e._cause:null}static fullStack(e){var s;rm(e);const t=Nt.cause(e);return t?"".concat(e.stack,"\ncaused by: ").concat(Nt.fullStack(t)):(s=e.stack)!=null?s:""}static info(e){rm(e);const t={},s=Nt.cause(e);return s&&Object.assign(t,Nt.info(s)),e._info&&Object.assign(t,e._info),t}toString(){let e=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(e="".concat(e,": ").concat(this.message)),e}}var xw=de(47),Ch=de.n(xw);const kd="__PATH_SEPARATOR_POSIX__",Cd="__PATH_SEPARATOR_WINDOWS__";function Ce(r){try{const e=r.replace(/\//g,kd).replace(/\\\\/g,Cd);return encodeURIComponent(e).split(Cd).join("\\\\").split(kd).join("/")}catch(e){throw new Nt(e,"Failed encoding path")}}function Ed(r){return r.startsWith("/")?r:"/"+r}function ec(r){let e=r;return e[0]!=="/"&&(e="/"+e),/^.+\/$/.test(e)&&(e=e.substr(0,e.length-1)),e}function Iw(r){let e=new(Ew())(r).pathname;return e.length<=0&&(e="/"),ec(e)}function Ee(){for(var r=arguments.length,e=new Array(r),t=0;t1){var n=s.shift();s[0]=n+s[0]}s[0].match(/^file:\/\/\//)?s[0]=s[0].replace(/^([^/:]+):\/*/,"$1:///"):s[0]=s[0].replace(/^([^/:]+):\/*/,"$1://");for(var u=0;u0&&(i=i.replace(/^[\/]+/,"")),i=u0?"?":"")+o.join("&")}(typeof arguments[0]=="object"?arguments[0]:[].slice.call(arguments))}(e.reduce((s,a,n)=>((n===0||a!=="/"||a==="/"&&s[s.length-1]!=="/")&&s.push(a),s),[]))}var Vw=de(542),Oo=de.n(Vw);const Bw="abcdef0123456789";function xd(r,e){const t=r.url.replace("//",""),s=t.indexOf("/")==-1?"/":t.slice(t.indexOf("/")),a=r.method?r.method.toUpperCase():"GET",n=!!/(^|,)\s*auth\s*($|,)/.test(e.qop)&&"auth",u="00000000".concat(e.nc).slice(-8),i=function(h,p,d,w,y,k,g){const b=g||Oo()("".concat(p,":").concat(d,":").concat(w));return h&&h.toLowerCase()==="md5-sess"?Oo()("".concat(b,":").concat(y,":").concat(k)):b}(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),l=Oo()("".concat(a,":").concat(s)),o=n?Oo()("".concat(i,":").concat(e.nonce,":").concat(u,":").concat(e.cnonce,":").concat(n,":").concat(l)):Oo()("".concat(i,":").concat(e.nonce,":").concat(l)),c={username:e.username,realm:e.realm,nonce:e.nonce,uri:s,qop:n,response:o,nc:u,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},m=[];for(const h in c)c[h]&&(h==="qop"||h==="nc"||h==="algorithm"?m.push("".concat(h,"=").concat(c[h])):m.push("".concat(h,'="').concat(c[h],'"')));return"Digest ".concat(m.join(", "))}function Rp(r){return(r.headers&&r.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()==="digest"}var Pw=de(101),Lp=de.n(Pw);function Id(r){return Lp().decode(r)}function Vd(r,e){var t;return"Basic ".concat((t="".concat(r,":").concat(e),Lp().encode(t)))}const Eh=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:typeof window<"u"?window:globalThis,Ow=Eh.fetch.bind(Eh),Dw=Eh.Request,Tw=Eh.Response;let bt=function(r){return r.Auto="auto",r.Digest="digest",r.None="none",r.Password="password",r.Token="token",r}({}),Js=function(r){return r.DataTypeNoLength="data-type-no-length",r.InvalidAuthType="invalid-auth-type",r.InvalidOutputFormat="invalid-output-format",r.LinkUnsupportedAuthType="link-unsupported-auth",r.InvalidUpdateRange="invalid-update-range",r.NotSupported="not-supported",r}({});function Up(r,e,t,s,a){switch(r.authType){case bt.Auto:e&&t&&(r.headers.Authorization=Vd(e,t));break;case bt.Digest:r.digest=function(u,i,l){return{username:u,password:i,ha1:l,nc:0,algorithm:"md5",hasDigestAuth:!1}}(e,t,a);break;case bt.None:break;case bt.Password:r.headers.Authorization=Vd(e,t);break;case bt.Token:r.headers.Authorization="".concat((n=s).token_type," ").concat(n.access_token);break;default:throw new Nt({info:{code:Js.InvalidAuthType}},"Invalid auth type: ".concat(r.authType))}var n}de(345),de(800);const Bd="@@HOTPATCHER",Rw=()=>{};function am(r){return{original:r,methods:[r],final:!1}}class Lw{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=Bd}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(e){this.configuration.getEmptyAction=e}control(e){let t=arguments.length>1&&arguments[1]!==void 0&&arguments[1];if(!e||e.__type__!==Bd)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(e.configuration.registry).forEach(s=>{this.configuration.registry.hasOwnProperty(s)?t&&(this.configuration.registry[s]=Object.assign({},e.configuration.registry[s])):this.configuration.registry[s]=Object.assign({},e.configuration.registry[s])}),e._configuration=this.configuration,this}execute(e){const t=this.get(e)||Rw;for(var s=arguments.length,a=new Array(s>1?s-1:0),n=1;n0;)o=[a.shift().apply(c,o)];return o[0]}}(...t.methods)}isPatched(e){return!!this.configuration.registry[e]}patch(e,t){let s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{chain:a=!1}=s;if(this.configuration.registry[e]&&this.configuration.registry[e].final)throw new Error("Failed patching '".concat(e,"': Method marked as being final"));if(typeof t!="function")throw new Error("Failed patching '".concat(e,"': Provided method is not a function"));if(a)this.configuration.registry[e]?this.configuration.registry[e].methods.push(t):this.configuration.registry[e]=am(t);else if(this.isPatched(e)){const{original:n}=this.configuration.registry[e];this.configuration.registry[e]=Object.assign(am(t),{original:n})}else this.configuration.registry[e]=am(t);return this}patchInline(e,t){this.isPatched(e)||this.patch(e,t);for(var s=arguments.length,a=new Array(s>2?s-2:0),n=2;n1?t-1:0),a=1;a{this.patch(e,n,{chain:!0})}),this}restore(e){if(!this.isPatched(e))throw new Error("Failed restoring method: No method present for key: ".concat(e));if(typeof this.configuration.registry[e].original!="function")throw new Error("Failed restoring method: Original method not found or of invalid type for key: ".concat(e));return this.configuration.registry[e].methods=[this.configuration.registry[e].original],this}setFinal(e){if(!this.configuration.registry.hasOwnProperty(e))throw new Error("Failed marking '".concat(e,"' as final: No method found for key"));return this.configuration.registry[e].final=!0,this}}let nm=null;function jp(){return nm||(nm=new Lw),nm}function xh(r){return function(e){if(typeof e!="object"||e===null||Object.prototype.toString.call(e)!="[object Object]")return!1;if(Object.getPrototypeOf(e)===null)return!0;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}(r)?Object.assign({},r):Object.setPrototypeOf(Object.assign({},r),Object.getPrototypeOf(r))}function Pd(){for(var r=arguments.length,e=new Array(r),t=0;t0;){const n=a.shift();s=s?$p(s,n):xh(n)}return s}function $p(r,e){const t=xh(r);return Object.keys(e).forEach(s=>{t.hasOwnProperty(s)?Array.isArray(e[s])?t[s]=Array.isArray(t[s])?[...t[s],...e[s]]:[...e[s]]:typeof e[s]=="object"&&e[s]?t[s]=typeof t[s]=="object"&&t[s]?$p(t[s],e[s]):xh(e[s]):t[s]=e[s]:t[s]=e[s]}),t}function Uw(r){const e={};for(const t of r.keys())e[t]=r.get(t);return e}function tf(){for(var r=arguments.length,e=new Array(r),t=0;t(Object.keys(n).forEach(u=>{const i=u.toLowerCase();s.hasOwnProperty(i)?a[s[i]]=n[u]:(s[i]=u,a[u]=n[u])}),a),{})}de(805);const jw=typeof ArrayBuffer=="function",{toString:$w}=Object.prototype;function Kp(r){return jw&&(r instanceof ArrayBuffer||$w.call(r)==="[object ArrayBuffer]")}function Hp(r){return r!=null&&r.constructor!=null&&typeof r.constructor.isBuffer=="function"&&r.constructor.isBuffer(r)}function Kf(r){return function(){for(var e=[],t=0;te.patchInline("fetch",Ow,t.url,function(s){let a={};const n={method:s.method};if(s.headers&&(a=tf(a,s.headers)),s.data!==void 0){const[u,i]=function(l){if(typeof l=="string")return[l,{}];if(Hp(l))return[l,{}];if(Kp(l))return[l,{}];if(l&&typeof l=="object")return[JSON.stringify(l),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof l)}(s.data);n.body=u,a=tf(a,i)}return s.signal&&(n.signal=s.signal),s.withCredentials&&(n.credentials="include"),n.headers=a,n}(t)),r)}var Hw=de(285);const Vh=r=>{if(typeof r!="string")throw new TypeError("invalid pattern");if(r.length>65536)throw new TypeError("pattern is too long")},Mw={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},Do=r=>r.replace(/[[\]\\-]/g,"\\$&"),Od=r=>r.join(""),Fw=(r,e)=>{const t=e;if(r.charAt(t)!=="[")throw new Error("not in a brace expression");const s=[],a=[];let n=t+1,u=!1,i=!1,l=!1,o=!1,c=t,m="";e:for(;nm?s.push(Do(m)+"-"+Do(w)):w===m&&s.push(Do(w)),m="",n++):r.startsWith("-]",n+1)?(s.push(Do(w+"-")),n+=2):r.startsWith("-",n+1)?(m=w,n+=2):(s.push(Do(w)),n++)}else l=!0,n++}else o=!0,n++}if(c1&&arguments[1]!==void 0?arguments[1]:{};return e?r.replace(/\[([^\/\\])\]/g,"$1"):r.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")},Jw=new Set(["!","?","+","*","@"]),Dd=r=>Jw.has(r),im="(?!\\.)",qw=new Set(["[","."]),Ww=new Set(["..","."]),Gw=new Set("().*{}+?[]^$\\!"),Hf="[^/]",Td=Hf+"*?",Rd=Hf+"+?";var We,et,Os,be,He,Wr,Sn,Gr,hs,An,uc,Dn,Fp,na,Fc,rf,Jp;const pt=class pt{constructor(e,t){Et(this,Dn);Ke(this,"type");Et(this,We);Et(this,et);Et(this,Os,!1);Et(this,be,[]);Et(this,He);Et(this,Wr);Et(this,Sn);Et(this,Gr,!1);Et(this,hs);Et(this,An);Et(this,uc,!1);let s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.type=e,e&&Be(this,et,!0),Be(this,He,t),Be(this,We,H(this,He)?H(H(this,He),We):this),Be(this,hs,H(this,We)===this?s:H(H(this,We),hs)),Be(this,Sn,H(this,We)===this?[]:H(H(this,We),Sn)),e!=="!"||H(H(this,We),Gr)||H(this,Sn).push(this),Be(this,Wr,H(this,He)?H(H(this,He),be).length:0)}get hasMagic(){if(H(this,et)!==void 0)return H(this,et);for(const e of H(this,be))if(typeof e!="string"&&(e.type||e.hasMagic))return Be(this,et,!0);return H(this,et)}toString(){return H(this,An)!==void 0?H(this,An):this.type?Be(this,An,this.type+"("+H(this,be).map(e=>String(e)).join("|")+")"):Be(this,An,H(this,be).map(e=>String(e)).join(""))}push(){for(var e=arguments.length,t=new Array(e),s=0;stypeof s=="string"?s:s.toJSON()):[this.type,...H(this,be).map(s=>s.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===H(this,We)||H(H(this,We),Gr)&&((t=H(this,He))==null?void 0:t.type)==="!")&&e.push({}),e}isStart(){var t;if(H(this,We)===this)return!0;if(!((t=H(this,He))!=null&&t.isStart()))return!1;if(H(this,Wr)===0)return!0;const e=H(this,He);for(let s=0;s1&&arguments[1]!==void 0?arguments[1]:{};const s=new pt(null,void 0,t);return zs(a=pt,na,Fc).call(a,e,s,0,t),s}toMMPattern(){if(this!==H(this,We))return H(this,We).toMMPattern();const e=this.toString(),[t,s,a,n]=this.toRegExpSource();if(!(a||H(this,et)||H(this,hs).nocase&&!H(this,hs).nocaseMagicOnly&&e.toUpperCase()!==e.toLowerCase()))return s;const u=(H(this,hs).nocase?"i":"")+(n?"u":"");return Object.assign(new RegExp("^".concat(t,"$"),u),{_src:t,_glob:e})}get options(){return H(this,hs)}toRegExpSource(e){var l;const t=e!=null?e:!!H(this,hs).dot;if(H(this,We)===this&&zs(this,Dn,Fp).call(this),!this.type){const o=this.isStart()&&this.isEnd(),c=H(this,be).map(p=>{var g;const[d,w,y,k]=typeof p=="string"?zs(g=pt,na,Jp).call(g,p,H(this,et),o):p.toRegExpSource(e);return Be(this,et,H(this,et)||y),Be(this,Os,H(this,Os)||k),d}).join("");let m="";if(this.isStart()&&typeof H(this,be)[0]=="string"&&(H(this,be).length!==1||!Ww.has(H(this,be)[0]))){const p=qw,d=t&&p.has(c.charAt(0))||c.startsWith("\\.")&&p.has(c.charAt(2))||c.startsWith("\\.\\.")&&p.has(c.charAt(4)),w=!t&&!e&&p.has(c.charAt(0));m=d?"(?!(?:^|/)\\.\\.?(?:$|/))":w?im:""}let h="";return this.isEnd()&&H(H(this,We),Gr)&&((l=H(this,He))==null?void 0:l.type)==="!"&&(h="(?:$|\\/)"),[m+c+h,Xo(c),Be(this,et,!!H(this,et)),H(this,Os)]}const s=this.type==="*"||this.type==="+",a=this.type==="!"?"(?:(?!(?:":"(?:";let n=zs(this,Dn,rf).call(this,t);if(this.isStart()&&this.isEnd()&&!n&&this.type!=="!"){const o=this.toString();return Be(this,be,[o]),this.type=null,Be(this,et,void 0),[o,Xo(this.toString()),!1,!1]}let u=!s||e||t?"":zs(this,Dn,rf).call(this,!0);u===n&&(u=""),u&&(n="(?:".concat(n,")(?:").concat(u,")*?"));let i="";return i=this.type==="!"&&H(this,uc)?(this.isStart()&&!t?im:"")+Rd:a+n+(this.type==="!"?"))"+(!this.isStart()||t||e?"":im)+Td+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&u?")":this.type==="*"&&u?")?":")".concat(this.type)),[i,Xo(n),Be(this,et,!!H(this,et)),H(this,Os)]}};We=new WeakMap,et=new WeakMap,Os=new WeakMap,be=new WeakMap,He=new WeakMap,Wr=new WeakMap,Sn=new WeakMap,Gr=new WeakMap,hs=new WeakMap,An=new WeakMap,uc=new WeakMap,Dn=new WeakSet,Fp=function(){if(this!==H(this,We))throw new Error("should only call on root");if(H(this,Gr))return this;let e;for(this.toString(),Be(this,Gr,!0);e=H(this,Sn).pop();){if(e.type!=="!")continue;let t=e,s=H(t,He);for(;s;){for(let a=H(t,Wr)+1;!s.type&&a{if(typeof t=="string")throw new Error("string type in extglob ast??");const[s,a,n,u]=t.toRegExpSource(e);return Be(this,Os,H(this,Os)||u),s}).filter(t=>!(this.isStart()&&this.isEnd()&&!t)).join("|")},Jp=function(e,t){let s=arguments.length>2&&arguments[2]!==void 0&&arguments[2],a=!1,n="",u=!1;for(let i=0;i2&&arguments[2]!==void 0?arguments[2]:{};return Vh(e),!(!t.nocomment&&e.charAt(0)==="#")&&new Ph(e,t).match(r)},zw=/^\*+([^+@!?\*\[\(]*)$/,_w=r=>e=>!e.startsWith(".")&&e.endsWith(r),Xw=r=>e=>e.endsWith(r),Zw=r=>(r=r.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(r)),Qw=r=>(r=r.toLowerCase(),e=>e.toLowerCase().endsWith(r)),Yw=/^\*+\.\*+$/,ey=r=>!r.startsWith(".")&&r.includes("."),ty=r=>r!=="."&&r!==".."&&r.includes("."),sy=/^\.\*+$/,ry=r=>r!=="."&&r!==".."&&r.startsWith("."),ay=/^\*+$/,ny=r=>r.length!==0&&!r.startsWith("."),iy=r=>r.length!==0&&r!=="."&&r!=="..",oy=/^\?+([^+@!?\*\[\(]*)?$/,uy=r=>{let[e,t=""]=r;const s=qp([e]);return t?(t=t.toLowerCase(),a=>s(a)&&a.toLowerCase().endsWith(t)):s},ly=r=>{let[e,t=""]=r;const s=Wp([e]);return t?(t=t.toLowerCase(),a=>s(a)&&a.toLowerCase().endsWith(t)):s},cy=r=>{let[e,t=""]=r;const s=Wp([e]);return t?a=>s(a)&&a.endsWith(t):s},hy=r=>{let[e,t=""]=r;const s=qp([e]);return t?a=>s(a)&&a.endsWith(t):s},qp=r=>{let[e]=r;const t=e.length;return s=>s.length===t&&!s.startsWith(".")},Wp=r=>{let[e]=r;const t=e.length;return s=>s.length===t&&s!=="."&&s!==".."},Gp=typeof Ge=="object"&&Ge?typeof sm=="object"&&sm&&sm.__MINIMATCH_TESTING_PLATFORM__||Ge.platform:"posix";ft.sep=Gp==="win32"?"\\":"/";const Kt=Symbol("globstar **");ft.GLOBSTAR=Kt,ft.filter=function(r){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return t=>ft(t,r,e)};const jt=function(r){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.assign({},r,e)};ft.defaults=r=>{if(!r||typeof r!="object"||!Object.keys(r).length)return ft;const e=ft;return Object.assign(function(t,s){return e(t,s,jt(r,arguments.length>2&&arguments[2]!==void 0?arguments[2]:{}))},{Minimatch:class extends e.Minimatch{constructor(t){super(t,jt(r,arguments.length>1&&arguments[1]!==void 0?arguments[1]:{}))}static defaults(t){return e.defaults(jt(r,t)).Minimatch}},AST:class extends e.AST{constructor(t,s){super(t,s,jt(r,arguments.length>2&&arguments[2]!==void 0?arguments[2]:{}))}static fromGlob(t){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.AST.fromGlob(t,jt(r,s))}},unescape:function(t){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.unescape(t,jt(r,s))},escape:function(t){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.escape(t,jt(r,s))},filter:function(t){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.filter(t,jt(r,s))},defaults:t=>e.defaults(jt(r,t)),makeRe:function(t){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.makeRe(t,jt(r,s))},braceExpand:function(t){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e.braceExpand(t,jt(r,s))},match:function(t,s){let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return e.match(t,s,jt(r,a))},sep:e.sep,GLOBSTAR:Kt})};const zp=function(r){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Vh(r),e.nobrace||!/\{(?:(?!\{).)*\}/.test(r)?[r]:Hw(r)};ft.braceExpand=zp,ft.makeRe=function(r){return new Ph(r,arguments.length>1&&arguments[1]!==void 0?arguments[1]:{}).makeRe()},ft.match=function(r,e){const t=new Ph(e,arguments.length>2&&arguments[2]!==void 0?arguments[2]:{});return r=r.filter(s=>t.match(s)),t.options.nonull&&!r.length&&r.push(e),r};const Ld=/[?*]|[+@!]\(.*?\)|\[|\]/;class Ph{constructor(e){Ke(this,"options");Ke(this,"set");Ke(this,"pattern");Ke(this,"windowsPathsNoEscape");Ke(this,"nonegate");Ke(this,"negate");Ke(this,"comment");Ke(this,"empty");Ke(this,"preserveMultipleSlashes");Ke(this,"partial");Ke(this,"globSet");Ke(this,"globParts");Ke(this,"nocase");Ke(this,"isWindows");Ke(this,"platform");Ke(this,"windowsNoMagicRoot");Ke(this,"regexp");let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Vh(e),t=t||{},this.options=t,this.pattern=e,this.platform=t.platform||Gp,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=t.windowsNoMagicRoot!==void 0?t.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const e of this.set)for(const t of e)if(typeof t!="string")return!0;return!1}debug(){}make(){const e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)==="#")return void(this.comment=!0);if(!e)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=function(){return console.error(...arguments)}),this.debug(this.pattern,this.globSet);const s=this.globSet.map(n=>this.slashSplit(n));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let a=this.globParts.map((n,u,i)=>{if(this.isWindows&&this.windowsNoMagicRoot){const l=!(n[0]!==""||n[1]!==""||n[2]!=="?"&&Ld.test(n[2])||Ld.test(n[3])),o=/^[a-z]:/i.test(n[0]);if(l)return[...n.slice(0,4),...n.slice(4).map(c=>this.parse(c))];if(o)return[n[0],...n.slice(1).map(c=>this.parse(c))]}return n.map(l=>this.parse(l))});if(this.debug(this.pattern,a),this.set=a.filter(n=>n.indexOf(!1)===-1),this.isWindows)for(let n=0;n=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):e=t>=1?this.levelOneOptimize(e):this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(t=>{let s=-1;for(;(s=t.indexOf("**",s+1))!==-1;){let a=s;for(;t[a+1]==="**";)a++;a!==s&&t.splice(s,a-s)}return t})}levelOneOptimize(e){return e.map(t=>(t=t.reduce((s,a)=>{const n=s[s.length-1];return a==="**"&&n==="**"?s:a===".."&&n&&n!==".."&&n!=="."&&n!=="**"?(s.pop(),s):(s.push(a),s)},[])).length===0?[""]:t)}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let a=1;aa&&s.splice(a+1,u-a);let i=s[a+1];const l=s[a+2],o=s[a+3];if(i!==".."||!l||l==="."||l===".."||!o||o==="."||o==="..")continue;t=!0,s.splice(a,1);const c=s.slice(0);c[a]="**",e.push(c),a--}if(!this.preserveMultipleSlashes){for(let u=1;ut.length)}partsMatch(e,t){let s=arguments.length>2&&arguments[2]!==void 0&&arguments[2],a=0,n=0,u=[],i="";for(;a2&&arguments[2]!==void 0&&arguments[2];const a=this.options;if(this.isWindows){const w=typeof e[0]=="string"&&/^[a-z]:$/i.test(e[0]),y=!w&&e[0]===""&&e[1]===""&&e[2]==="?"&&/^[a-z]:$/i.test(e[3]),k=typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0]),g=y?3:w?0:void 0,b=!k&&t[0]===""&&t[1]===""&&t[2]==="?"&&typeof t[3]=="string"&&/^[a-z]:$/i.test(t[3])?3:k?0:void 0;if(typeof g=="number"&&typeof b=="number"){const[N,S]=[e[g],t[b]];N.toLowerCase()===S.toLowerCase()&&(t[b]=N,b>g?t=t.slice(b):g>b&&(e=e.slice(g)))}}const{optimizationLevel:n=1}=this.options;n>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:t}),this.debug("matchOne",e.length,t.length);for(var u=0,i=0,l=e.length,o=t.length;u>> no match, partial?",e,h,t,p),h!==l))}let w;if(typeof c=="string"?(w=m===c,this.debug("string match",c,m,w)):(w=c.test(m),this.debug("pattern match",c,m,w)),!w)return!1}if(u===l&&i===o)return!0;if(u===l)return s;if(i===o)return u===l-1&&e[u]==="";throw new Error("wtf?")}braceExpand(){return zp(this.pattern,this.options)}parse(e){Vh(e);const t=this.options;if(e==="**")return Kt;if(e==="")return"";let s,a=null;(s=e.match(ay))?a=t.dot?iy:ny:(s=e.match(zw))?a=(t.nocase?t.dot?Qw:Zw:t.dot?Xw:_w)(s[1]):(s=e.match(oy))?a=(t.nocase?t.dot?ly:uy:t.dot?cy:hy)(s):(s=e.match(Yw))?a=t.dot?ty:ey:(s=e.match(sy))&&(a=ry);const n=Bh.fromGlob(e,this.options).toMMPattern();return a&&typeof n=="object"&&Reflect.defineProperty(n,"test",{value:a}),n}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;const e=this.set;if(!e.length)return this.regexp=!1,this.regexp;const t=this.options,s=t.noglobstar?"[^/]*?":t.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",a=new Set(t.nocase?["i"]:[]);let n=e.map(l=>{const o=l.map(c=>{if(c instanceof RegExp)for(const m of c.flags.split(""))a.add(m);return typeof c=="string"?c.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):c===Kt?Kt:c._src});return o.forEach((c,m)=>{const h=o[m+1],p=o[m-1];c===Kt&&p!==Kt&&(p===void 0?h!==void 0&&h!==Kt?o[m+1]="(?:\\/|"+s+"\\/)?"+h:o[m]=s:h===void 0?o[m-1]=p+"(?:\\/|"+s+")?":h!==Kt&&(o[m-1]=p+"(?:\\/|\\/"+s+"\\/)"+h,o[m+1]=Kt))}),o.filter(c=>c!==Kt).join("/")}).join("|");const[u,i]=e.length>1?["(?:",")"]:["",""];n="^"+u+n+i+"$",this.negate&&(n="^(?!"+n+").+$");try{this.regexp=new RegExp(n,[...a].join(""))}catch(l){this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.partial;if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return e==="";if(e==="/"&&t)return!0;const s=this.options;this.isWindows&&(e=e.split("\\").join("/"));const a=this.slashSplit(e);this.debug(this.pattern,"split",a);const n=this.set;this.debug(this.pattern,"set",n);let u=a[a.length-1];if(!u)for(let i=a.length-2;!u&&i>=0;i--)u=a[i];for(let i=0;i1&&arguments[1]!==void 0?arguments[1]:"","Invalid response: ").concat(r.status," ").concat(r.statusText));return e.status=r.status,e.response=r,e}function Qe(r,e){const{status:t}=e;if(t===401&&r.digest)return e;if(t>=400)throw Mf(e);return e}function Tn(r,e){return arguments.length>2&&arguments[2]!==void 0&&arguments[2]?{data:e,headers:r.headers?Uw(r.headers):{},status:r.status,statusText:r.statusText}:e}ft.AST=Bh,ft.Minimatch=Ph,ft.escape=function(r){let{windowsPathsNoEscape:e=!1}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return e?r.replace(/[?*()[\]]/g,"[$&]"):r.replace(/[?*()[\]\\]/g,"\\$&")},ft.unescape=Xo;const my=(Ud=function(r,e,t){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const a=Ze({url:Ee(r.remoteURL,Ce(e)),method:"COPY",headers:{Destination:Ee(r.remoteURL,Ce(t)),Overwrite:s.overwrite===!1?"F":"T",Depth:s.shallow?"0":"infinity"}},r,s);return u=function(i){Qe(r,i)},(n=Xe(a,r))&&n.then||(n=Promise.resolve(n)),u?n.then(u):n;var n,u},function(){for(var r=[],e=0;e2&&arguments[2]!==void 0?arguments[2]:ho.Original;const s=Ps().get(r,e);return t==="array"&&Array.isArray(s)===!1?[s]:t==="object"&&Array.isArray(s)?s[0]:s}function lc(r){return new Promise(e=>{e(function(t){const{multistatus:s}=t;if(s==="")return{multistatus:{response:[]}};if(!s)throw new Error("Invalid response: No root multistatus found");const a={multistatus:Array.isArray(s)?s[0]:s};return Ps().set(a,"multistatus.response",fc(a,"multistatus.response",ho.Array)),Ps().set(a,"multistatus.response",Ps().get(a,"multistatus.response").map(n=>function(u){const i=Object.assign({},u);return i.status?Ps().set(i,"status",fc(i,"status",ho.Object)):(Ps().set(i,"propstat",fc(i,"propstat",ho.Object)),Ps().set(i,"propstat.prop",fc(i,"propstat.prop",ho.Object))),i}(n))),a}(new Ff.XMLParser({removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1}}).parse(r)))})}function Gh(r,e){let t=arguments.length>2&&arguments[2]!==void 0&&arguments[2];const{getlastmodified:s=null,getcontentlength:a="0",resourcetype:n=null,getcontenttype:u=null,getetag:i=null}=r,l=n&&typeof n=="object"&&n.collection!==void 0?"directory":"file",o={filename:e,basename:Ch().basename(e),lastmod:s,size:parseInt(a,10),type:l,etag:typeof i=="string"?i.replace(/"/g,""):null};return l==="file"&&(o.mime=u&&typeof u=="string"?u.split(";")[0]:""),t&&(r.displayname!==void 0&&(r.displayname=String(r.displayname)),o.props=r),o}function _p(r,e){let t=arguments.length>2&&arguments[2]!==void 0&&arguments[2],s=null;try{r.multistatus.response[0].propstat&&(s=r.multistatus.response[0])}catch(c){}if(!s)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:a,status:n}}=s,[u,i,l]=n.split(" ",3),o=parseInt(i,10);if(o>=400){const c=new Error("Invalid response: ".concat(o," ").concat(l));throw c.status=o,c}return Gh(a,ec(e),t)}function Xp(r){switch(String(r)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(r),10)}}function om(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}const Jf=function(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};const{details:s=!1}=t,a=Ze({url:Ee(r.remoteURL,Ce(e)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},r,t);return om(Xe(a,r),function(n){return Qe(r,n),om(n.text(),function(u){return om(lc(u),function(i){const l=_p(i,e,s);return Tn(n,l,s)})})})});function Zp(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}const dy=Qp(function(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const s=function(n){if(!n||n==="/")return[];let u=n;const i=[];do i.push(u),u=Ch().dirname(u);while(u&&u!=="/");return i}(ec(e));s.sort((n,u)=>n.length>u.length?1:u.length>n.length?-1:0);let a=!1;return function(n,u,i){if(typeof n[$d]=="function"){let w=function(y){try{for(;!(l=m.next()).done;)if((y=u(l.value))&&y.then){if(!Kd(y))return void y.then(w,c||(c=St.bind(null,o=new mo,2)));y=y.v}o?St(o,1,y):o=y}catch(k){St(o||(o=new mo),2,k)}};var l,o,c,m=n[$d]();if(w(),m.return){var h=function(y){try{l.done||m.return()}catch(k){}return y};if(o&&o.then)return o.then(h,function(y){throw h(y)});h()}return o}if(!("length"in n))throw new TypeError("Object is not iterable");for(var p=[],d=0;d2&&arguments[2]!==void 0?arguments[2]:{};if(t.recursive===!0)return dy(r,e,t);const s=Ze({url:Ee(r.remoteURL,(a=Ce(e),a.endsWith("/")?a:a+"/")),method:"MKCOL"},r,t);var a;return Zp(Xe(s,r),function(n){Qe(r,n)})});var gy=de(388),Hd=de.n(gy);const wy=function(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};const s={};if(typeof t.range=="object"&&typeof t.range.start=="number"){let i="bytes=".concat(t.range.start,"-");typeof t.range.end=="number"&&(i="".concat(i).concat(t.range.end)),s.Range=i}const a=Ze({url:Ee(r.remoteURL,Ce(e)),method:"GET",headers:s},r,t);return u=function(i){if(Qe(r,i),s.Range&&i.status!==206){const l=new Error("Invalid response code for partial request: ".concat(i.status));throw l.status=i.status,l}return t.callback&&setTimeout(()=>{t.callback(i)},0),i.body},(n=Xe(a,r))&&n.then||(n=Promise.resolve(n)),u?n.then(u):n;var n,u}),yy=()=>{},vy=function(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};const s=Ze({url:Ee(r.remoteURL,Ce(e)),method:"DELETE"},r,t);return n=function(u){Qe(r,u)},(a=Xe(s,r))&&a.then||(a=Promise.resolve(a)),n?a.then(n):a;var a,n}),Sy=function(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};return function(s,a){try{var n=(u=Jf(r,e,t),i=function(){return!0},l?i?i(u):u:(u&&u.then||(u=Promise.resolve(u)),i?u.then(i):u))}catch(o){return a(o)}var u,i,l;return n&&n.then?n.then(void 0,a):n}(0,function(s){if(s.status===404)return!1;throw s})});function um(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}const Ay=function(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};const s=Ze({url:Ee(r.remoteURL,Ce(e),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:t.deep?"infinity":"1"}},r,t);return um(Xe(s,r),function(a){return Qe(r,a),um(a.text(),function(n){if(!n)throw new Error("Failed parsing directory contents: Empty response");return um(lc(n),function(u){const i=Ed(e);let l=function(o,c,m){let h=arguments.length>3&&arguments[3]!==void 0&&arguments[3],p=arguments.length>4&&arguments[4]!==void 0&&arguments[4];const d=Ch().join(c,"/"),{multistatus:{response:w}}=o,y=w.map(k=>{const g=function(N){try{return N.replace(/^https?:\/\/[^\/]+/,"")}catch(S){throw new Nt(S,"Failed normalising HREF")}}(k.href),{propstat:{prop:b}}=k;return Gh(b,d==="/"?decodeURIComponent(ec(g)):ec(Ch().relative(decodeURIComponent(d),decodeURIComponent(g))),h)});return p?y:y.filter(k=>k.basename&&(k.type==="file"||k.filename!==m.replace(/\/$/,"")))}(u,Ed(r.remoteBasePath||r.remotePath),i,t.details,t.includeSelf);return t.glob&&(l=function(o,c){return o.filter(m=>ft(m.filename,c,{matchBase:!0}))}(l,t.glob)),Tn(a,l,t.details)})})})});function qf(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};const s=Ze({url:Ee(r.remoteURL,Ce(e)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[Ey]},r,t);return Oh(Xe(s,r),function(a){return Qe(r,a),Oh(a.text(),function(n){return Tn(a,n,t.details)})})});function Oh(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}const ky=qf(function(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const s=Ze({url:Ee(r.remoteURL,Ce(e)),method:"GET"},r,t);return Oh(Xe(s,r),function(a){let n;return Qe(r,a),function(u,i){var l=u();return l&&l.then?l.then(i):i()}(function(){return Oh(a.arrayBuffer(),function(u){n=u})},function(){return Tn(a,n,t.details)})})}),Cy=qf(function(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{format:s="binary"}=t;if(s!=="binary"&&s!=="text")throw new Nt({info:{code:Js.InvalidOutputFormat}},"Invalid output format: ".concat(s));return s==="text"?Ny(r,e,t):ky(r,e,t)}),Ey=r=>r;function xy(r){return new Ff.XMLBuilder({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(Yp({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:r}}},"d"))}function Yp(r,e){const t=it({},r);for(const s in t)t.hasOwnProperty(s)&&(t[s]&&typeof t[s]=="object"&&s.indexOf(":")===-1?(t["".concat(e,":").concat(s)]=Yp(t[s],e),delete t[s]):/^@_/.test(s)===!1&&(t["".concat(e,":").concat(s)]=t[s],delete t[s]));return t}function nf(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}function eg(r){return function(){for(var e=[],t=0;t3&&arguments[3]!==void 0?arguments[3]:{};const a=Ze({url:Ee(r.remoteURL,Ce(e)),method:"UNLOCK",headers:{"Lock-Token":t}},r,s);return nf(Xe(a,r),function(n){if(Qe(r,n),n.status!==204&&n.status!==200)throw Mf(n)})}),Vy=eg(function(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{refreshToken:s,timeout:a=By}=t,n={Accept:"text/plain,application/xml",Timeout:a};s&&(n.If=s);const u=Ze({url:Ee(r.remoteURL,Ce(e)),method:"LOCK",headers:n,data:xy(r.contactHref)},r,t);return nf(Xe(u,r),function(i){return Qe(r,i),nf(i.text(),function(l){const o=(h=l,new Ff.XMLParser({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(h)),c=Ps().get(o,"prop.lockdiscovery.activelock.locktoken.href"),m=Ps().get(o,"prop.lockdiscovery.activelock.timeout");var h;if(!c)throw Mf(i,"No lock token received: ");return{token:c,serverTimeout:m}})})}),By="Infinite, Second-4100000000";function lm(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}const Py=function(r){return function(){for(var e=[],t=0;t1&&arguments[1]!==void 0?arguments[1]:{};const t=e.path||"/",s=Ze({url:Ee(r.remoteURL,t),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},r,e);return lm(Xe(s,r),function(a){return Qe(r,a),lm(a.text(),function(n){return lm(lc(n),function(u){const i=function(l){try{const[o]=l.multistatus.response,{propstat:{prop:{"quota-used-bytes":c,"quota-available-bytes":m}}}=o;return c!==void 0&&m!==void 0?{used:parseInt(String(c),10),available:Xp(m)}:null}catch(o){}return null}(u);return Tn(a,i,e.details)})})})});function cm(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}const Oy=function(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};const{details:s=!1}=t,a=Ze({url:Ee(r.remoteURL,Ce(e)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":r.headers["Content-Type"]||"application/xml; charset=utf-8"}},r,t);return cm(Xe(a,r),function(n){return Qe(r,n),cm(n.text(),function(u){return cm(lc(u),function(i){const l=function(o,c,m){const h={truncated:!1,results:[]};return h.truncated=o.multistatus.response.some(p=>{var d,w;return((w=(p.status||((d=p.propstat)==null?void 0:d.status)).split(" ",3))==null?void 0:w[1])==="507"&&p.href.replace(/\/$/,"").endsWith(Ce(c).replace(/\/$/,""))}),o.multistatus.response.forEach(p=>{if(p.propstat===void 0)return;const d=p.href.split("/").map(decodeURIComponent).join("/");h.results.push(Gh(p.propstat.prop,d,m))}),h}(i,e,s);return Tn(n,l,s)})})})}),Dy=function(r){return function(){for(var e=[],t=0;t3&&arguments[3]!==void 0?arguments[3]:{};const a=Ze({url:Ee(r.remoteURL,Ce(e)),method:"MOVE",headers:{Destination:Ee(r.remoteURL,Ce(t)),Overwrite:s.overwrite===!1?"F":"T"}},r,s);return u=function(i){Qe(r,i)},(n=Xe(a,r))&&n.then||(n=Promise.resolve(n)),u?n.then(u):n;var n,u});var Ty=de(172);const Ry=function(r){return function(){for(var e=[],t=0;t3&&arguments[3]!==void 0?arguments[3]:{};const{contentLength:a=!0,overwrite:n=!0}=s,u={"Content-Type":"application/octet-stream"};a===!1||(u["Content-Length"]=typeof a=="number"?"".concat(a):"".concat(function(c){if(Kp(c))return c.byteLength;if(Hp(c))return c.length;if(typeof c=="string")return(0,Ty.d)(c);throw new Nt({info:{code:Js.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}(t))),n||(u["If-None-Match"]="*");const i=Ze({url:Ee(r.remoteURL,Ce(e)),method:"PUT",headers:u,data:t},r,s);return o=function(c){try{Qe(r,c)}catch(m){const h=m;if(h.status!==412||n)throw h;return!1}return!0},(l=Xe(i,r))&&l.then||(l=Promise.resolve(l)),o?l.then(o):l;var l,o}),tg=function(r){return function(){for(var e=[],t=0;t2&&arguments[2]!==void 0?arguments[2]:{};const s=Ze({url:Ee(r.remoteURL,Ce(e)),method:"OPTIONS"},r,t);return n=function(u){var i,l;try{Qe(r,u)}catch(o){throw o}return{compliance:((i=u.headers.get("DAV"))!=null?i:"").split(",").map(o=>o.trim()),server:(l=u.headers.get("Server"))!=null?l:""}},(a=Xe(s,r))&&a.then||(a=Promise.resolve(a)),n?a.then(n):a;var a,n});function Gl(r,e,t){return r&&r.then||(r=Promise.resolve(r)),e?r.then(e):r}const Ly=Wf(function(r,e,t,s,a){let n=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{};if(t>s||t<0)throw new Nt({info:{code:Js.InvalidUpdateRange}},"Invalid update range ".concat(t," for partial update"));const u={"Content-Type":"application/octet-stream","Content-Length":""+(s-t+1),"Content-Range":"bytes ".concat(t,"-").concat(s,"/*")},i=Ze({url:Ee(r.remoteURL,Ce(e)),method:"PUT",headers:u,data:a},r,n);return Gl(Xe(i,r),function(l){Qe(r,l)})});function Md(r,e){var t=r();return t&&t.then?t.then(e):e(t)}const Uy=Wf(function(r,e,t,s,a){let n=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{};if(t>s||t<0)throw new Nt({info:{code:Js.InvalidUpdateRange}},"Invalid update range ".concat(t," for partial update"));const u={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(s-t+1),"X-Update-Range":"bytes=".concat(t,"-").concat(s)},i=Ze({url:Ee(r.remoteURL,Ce(e)),method:"PATCH",headers:u,data:a},r,n);return Gl(Xe(i,r),function(l){Qe(r,l)})});function Wf(r){return function(){for(var e=[],t=0;t5&&arguments[5]!==void 0?arguments[5]:{};return Gl(tg(r,e,n),function(u){let i=!1;return Md(function(){if(u.compliance.includes("sabredav-partialupdate"))return Gl(Uy(r,e,t,s,a,n),function(l){return i=!0,l})},function(l){let o=!1;return i?l:Md(function(){if(u.server.includes("Apache")&&u.compliance.includes(""))return Gl(Ly(r,e,t,s,a,n),function(c){return o=!0,c})},function(c){if(o)return c;throw new Nt({info:{code:Js.NotSupported}},"Not supported")})})})}),$y="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function Ky(r){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{authType:t=null,remoteBasePath:s,contactHref:a=$y,ha1:n,headers:u={},httpAgent:i,httpsAgent:l,password:o,token:c,username:m,withCredentials:h}=e;let p=t;p||(p=m||o?bt.Password:bt.None);const d={authType:p,remoteBasePath:s,contactHref:a,ha1:n,headers:Object.assign({},u),httpAgent:i,httpsAgent:l,password:o,remotePath:Iw(r),remoteURL:r,token:c,username:m,withCredentials:h};return Up(d,m,o,c,n),{copyFile:(w,y,k)=>my(d,w,y,k),createDirectory:(w,y)=>af(d,w,y),createReadStream:(w,y)=>function(k,g){let b=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const N=new(Hd()).PassThrough;return wy(k,g,b).then(S=>{S.pipe(N)}).catch(S=>{N.emit("error",S)}),N}(d,w,y),createWriteStream:(w,y,k)=>function(g,b){let N=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},S=arguments.length>3&&arguments[3]!==void 0?arguments[3]:yy;const E=new(Hd()).PassThrough,x={};N.overwrite===!1&&(x["If-None-Match"]="*");const C=Ze({url:Ee(g.remoteURL,Ce(b)),method:"PUT",headers:x,data:E,maxRedirects:0},g,N);return Xe(C,g).then(P=>Qe(g,P)).then(P=>{setTimeout(()=>{S(P)},0)}).catch(P=>{E.emit("error",P)}),E}(d,w,y,k),customRequest:(w,y)=>vy(d,w,y),deleteFile:(w,y)=>by(d,w,y),exists:(w,y)=>Sy(d,w,y),getDirectoryContents:(w,y)=>Ay(d,w,y),getFileContents:(w,y)=>Cy(d,w,y),getFileDownloadLink:w=>function(y,k){let g=Ee(y.remoteURL,Ce(k));const b=/^https:/i.test(g)?"https":"http";switch(y.authType){case bt.None:break;case bt.Password:{const N=Id(y.headers.Authorization.replace(/^Basic /i,"").trim());g=g.replace(/^https?:\/\//,"".concat(b,"://").concat(N,"@"));break}default:throw new Nt({info:{code:Js.LinkUnsupportedAuthType}},"Unsupported auth type for file link: ".concat(y.authType))}return g}(d,w),getFileUploadLink:w=>function(y,k){let g="".concat(Ee(y.remoteURL,Ce(k)),"?Content-Type=application/octet-stream");const b=/^https:/i.test(g)?"https":"http";switch(y.authType){case bt.None:break;case bt.Password:{const N=Id(y.headers.Authorization.replace(/^Basic /i,"").trim());g=g.replace(/^https?:\/\//,"".concat(b,"://").concat(N,"@"));break}default:throw new Nt({info:{code:Js.LinkUnsupportedAuthType}},"Unsupported auth type for file link: ".concat(y.authType))}return g}(d,w),getHeaders:()=>Object.assign({},d.headers),getQuota:w=>Py(d,w),lock:(w,y)=>Vy(d,w,y),moveFile:(w,y,k)=>Dy(d,w,y,k),putFileContents:(w,y,k)=>Ry(d,w,y,k),partialUpdateFileContents:(w,y,k,g,b)=>jy(d,w,y,k,g,b),getDAVCompliance:w=>tg(d,w),search:(w,y)=>Oy(d,w,y),setHeaders:w=>{d.headers=Object.assign({},w)},stat:(w,y)=>Jf(d,w,y),unlock:(w,y,k)=>Iy(d,w,y,k)}}zt.hT,zt.O4,zt.Kd,zt.YK;var Hy=zt.UU,My=zt.Gu,Fy=zt.ky,Jy=zt.h4;zt.ch,zt.hq,zt.i5;function sg(){var r;return(r=Lf("files_sharing","isPublic",null))!=null?r:document.querySelector('input#isPublic[type="hidden"][name="isPublic"][value="1"]')!==null}function qy(){var r,e,t;return(t=(e=Lf("files_sharing","sharingToken",null))!=null?e:(r=document.querySelector('input#sharingToken[type="hidden"]'))==null?void 0:r.value)!=null?t:null}const wo=Gm().setApp("@nextcloud/files").detectUser().build();var rg=(r=>(r[r.NONE=0]="NONE",r[r.CREATE=4]="CREATE",r[r.READ=1]="READ",r[r.UPDATE=2]="UPDATE",r[r.DELETE=8]="DELETE",r[r.SHARE=16]="SHARE",r[r.ALL=31]="ALL",r))(rg||{}),ag=(r=>(r.Folder="folder",r.File="file",r))(ag||{});const ng=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:creationdate","d:displayname","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],ig={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},hm=function(r,e={nc:"http://nextcloud.org/ns"}){typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...ng],window._nc_dav_namespaces=it({},ig));const t=it(it({},window._nc_dav_namespaces),e);if(window._nc_dav_properties.find(a=>a===r))return wo.warn("".concat(r," already registered"),{prop:r}),!1;if(r.startsWith("<")||r.split(":").length!==2)return wo.error("".concat(r," is not valid. See example: 'oc:fileid'"),{prop:r}),!1;const s=r.split(":")[0];return t[s]?(window._nc_dav_properties.push(r),window._nc_dav_namespaces=t,!0):(wo.error("".concat(r," namespace unknown"),{prop:r,namespaces:t}),!1)},Wy=function(){return typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...ng]),window._nc_dav_properties.map(r=>"<".concat(r," />")).join(" ")},Gy=function(){return typeof window._nc_dav_namespaces>"u"&&(window._nc_dav_namespaces=it({},ig)),Object.keys(window._nc_dav_namespaces).map(r=>{var e;return"xmlns:".concat(r,'="').concat((e=window._nc_dav_namespaces)==null?void 0:e[r],'"')}).join(" ")},zy=function(){return'\n \n \n ").concat(Wy(),"\n \n ")};function _y(){var r;return sg()?"/files/".concat(qy()):"/files/".concat((r=Uf())==null?void 0:r.uid)}_y();function Xy(){const r=_g("dav");return sg()?r.replace("remote.php","public.php"):r}const Zy=Xy(),Qy=function(r=Zy,e={}){const t=Hy(r,{headers:e});function s(a){t.setHeaders(os(it({},e),{"X-Requested-With":"XMLHttpRequest",requesttoken:a!=null?a:""}))}return Xg(s),s(Zg()),My().patch("fetch",(a,n)=>{const u=n.headers;return u!=null&&u.method&&(n.method=u.method,delete u.method),fetch(a,n)}),t};var mm={},Gf=(r=>(r.DEFAULT="default",r.HIDDEN="hidden",r))(Gf||{});class Yy{constructor(e){Ke(this,"_action");this.validateAction(e),this._action=e}get id(){return this._action.id}get displayName(){return this._action.displayName}get title(){return this._action.title}get iconSvgInline(){return this._action.iconSvgInline}get enabled(){return this._action.enabled}get exec(){return this._action.exec}get execBatch(){return this._action.execBatch}get order(){return this._action.order}get parent(){return this._action.parent}get default(){return this._action.default}get destructive(){return this._action.destructive}get inline(){return this._action.inline}get renderInline(){return this._action.renderInline}validateAction(e){if(!e.id||typeof e.id!="string")throw new Error("Invalid id");if(!e.displayName||typeof e.displayName!="function")throw new Error("Invalid displayName function");if("title"in e&&typeof e.title!="function")throw new Error("Invalid title function");if(!e.iconSvgInline||typeof e.iconSvgInline!="function")throw new Error("Invalid iconSvgInline function");if(!e.exec||typeof e.exec!="function")throw new Error("Invalid exec function");if("enabled"in e&&typeof e.enabled!="function")throw new Error("Invalid enabled function");if("execBatch"in e&&typeof e.execBatch!="function")throw new Error("Invalid execBatch function");if("order"in e&&typeof e.order!="number")throw new Error("Invalid order");if(e.destructive!==void 0&&typeof e.destructive!="boolean")throw new Error("Invalid destructive flag");if("parent"in e&&typeof e.parent!="string")throw new Error("Invalid parent");if(e.default&&!Object.values(Gf).includes(e.default))throw new Error("Invalid default");if("inline"in e&&typeof e.inline!="function")throw new Error("Invalid inline function");if("renderInline"in e&&typeof e.renderInline!="function")throw new Error("Invalid renderInline function")}}const ev=function(r){if(typeof window._nc_fileactions>"u"&&(window._nc_fileactions=[],wo.debug("FileActions initialized")),window._nc_fileactions.find(e=>e.id===r.id)){wo.error("FileAction ".concat(r.id," already registered"),{action:r});return}window._nc_fileactions.push(r)},tv=function(){return typeof window._nc_fileactions>"u"&&(window._nc_fileactions=[],wo.debug("FileActions initialized")),window._nc_fileactions};var sv={};(function(r){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",t=e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",s="["+e+"]["+t+"]*",a=new RegExp("^"+s+"$"),n=function(i,l){const o=[];let c=l.exec(i);for(;c;){const m=[];m.startIndex=l.lastIndex-c[0].length;const h=c.length;for(let p=0;p"u")};r.isExist=function(i){return typeof i<"u"},r.isEmptyObject=function(i){return Object.keys(i).length===0},r.merge=function(i,l,o){if(l){const c=Object.keys(l),m=c.length;for(let h=0;hconsole.error("SEMVER",...r):()=>{};var av=rv;const nv="2.0.0",og=256,iv=Number.MAX_SAFE_INTEGER||9007199254740991,ov=16,uv=og-6,lv=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var cv={MAX_LENGTH:og,MAX_SAFE_COMPONENT_LENGTH:ov,MAX_SAFE_BUILD_LENGTH:uv,MAX_SAFE_INTEGER:iv,RELEASE_TYPES:lv,SEMVER_SPEC_VERSION:nv,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},Fd={exports:{}};(function(r,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:s,MAX_LENGTH:a}=cv,n=av;e=r.exports={};const u=e.re=[],i=e.safeRe=[],l=e.src=[],o=e.t={};let c=0;const m="[a-zA-Z0-9-]",h=[["\\s",1],["\\d",a],[m,s]],p=w=>{for(const[y,k]of h)w=w.split("".concat(y,"*")).join("".concat(y,"{0,").concat(k,"}")).split("".concat(y,"+")).join("".concat(y,"{1,").concat(k,"}"));return w},d=(w,y,k)=>{const g=p(y),b=c++;n(w,b,y),o[w]=b,l[b]=y,u[b]=new RegExp(y,k?"g":void 0),i[b]=new RegExp(g,k?"g":void 0)};d("NUMERICIDENTIFIER","0|[1-9]\\d*"),d("NUMERICIDENTIFIERLOOSE","\\d+"),d("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-]".concat(m,"*")),d("MAINVERSION","(".concat(l[o.NUMERICIDENTIFIER],")\\.(").concat(l[o.NUMERICIDENTIFIER],")\\.(").concat(l[o.NUMERICIDENTIFIER],")")),d("MAINVERSIONLOOSE","(".concat(l[o.NUMERICIDENTIFIERLOOSE],")\\.(").concat(l[o.NUMERICIDENTIFIERLOOSE],")\\.(").concat(l[o.NUMERICIDENTIFIERLOOSE],")")),d("PRERELEASEIDENTIFIER","(?:".concat(l[o.NUMERICIDENTIFIER],"|").concat(l[o.NONNUMERICIDENTIFIER],")")),d("PRERELEASEIDENTIFIERLOOSE","(?:".concat(l[o.NUMERICIDENTIFIERLOOSE],"|").concat(l[o.NONNUMERICIDENTIFIER],")")),d("PRERELEASE","(?:-(".concat(l[o.PRERELEASEIDENTIFIER],"(?:\\.").concat(l[o.PRERELEASEIDENTIFIER],")*))")),d("PRERELEASELOOSE","(?:-?(".concat(l[o.PRERELEASEIDENTIFIERLOOSE],"(?:\\.").concat(l[o.PRERELEASEIDENTIFIERLOOSE],")*))")),d("BUILDIDENTIFIER","".concat(m,"+")),d("BUILD","(?:\\+(".concat(l[o.BUILDIDENTIFIER],"(?:\\.").concat(l[o.BUILDIDENTIFIER],")*))")),d("FULLPLAIN","v?".concat(l[o.MAINVERSION]).concat(l[o.PRERELEASE],"?").concat(l[o.BUILD],"?")),d("FULL","^".concat(l[o.FULLPLAIN],"$")),d("LOOSEPLAIN","[v=\\s]*".concat(l[o.MAINVERSIONLOOSE]).concat(l[o.PRERELEASELOOSE],"?").concat(l[o.BUILD],"?")),d("LOOSE","^".concat(l[o.LOOSEPLAIN],"$")),d("GTLT","((?:<|>)?=?)"),d("XRANGEIDENTIFIERLOOSE","".concat(l[o.NUMERICIDENTIFIERLOOSE],"|x|X|\\*")),d("XRANGEIDENTIFIER","".concat(l[o.NUMERICIDENTIFIER],"|x|X|\\*")),d("XRANGEPLAIN","[v=\\s]*(".concat(l[o.XRANGEIDENTIFIER],")(?:\\.(").concat(l[o.XRANGEIDENTIFIER],")(?:\\.(").concat(l[o.XRANGEIDENTIFIER],")(?:").concat(l[o.PRERELEASE],")?").concat(l[o.BUILD],"?)?)?")),d("XRANGEPLAINLOOSE","[v=\\s]*(".concat(l[o.XRANGEIDENTIFIERLOOSE],")(?:\\.(").concat(l[o.XRANGEIDENTIFIERLOOSE],")(?:\\.(").concat(l[o.XRANGEIDENTIFIERLOOSE],")(?:").concat(l[o.PRERELEASELOOSE],")?").concat(l[o.BUILD],"?)?)?")),d("XRANGE","^".concat(l[o.GTLT],"\\s*").concat(l[o.XRANGEPLAIN],"$")),d("XRANGELOOSE","^".concat(l[o.GTLT],"\\s*").concat(l[o.XRANGEPLAINLOOSE],"$")),d("COERCEPLAIN","(^|[^\\d])(\\d{1,".concat(t,"})(?:\\.(\\d{1,").concat(t,"}))?(?:\\.(\\d{1,").concat(t,"}))?")),d("COERCE","".concat(l[o.COERCEPLAIN],"(?:$|[^\\d])")),d("COERCEFULL",l[o.COERCEPLAIN]+"(?:".concat(l[o.PRERELEASE],")?(?:").concat(l[o.BUILD],")?(?:$|[^\\d])")),d("COERCERTL",l[o.COERCE],!0),d("COERCERTLFULL",l[o.COERCEFULL],!0),d("LONETILDE","(?:~>?)"),d("TILDETRIM","(\\s*)".concat(l[o.LONETILDE],"\\s+"),!0),e.tildeTrimReplace="$1~",d("TILDE","^".concat(l[o.LONETILDE]).concat(l[o.XRANGEPLAIN],"$")),d("TILDELOOSE","^".concat(l[o.LONETILDE]).concat(l[o.XRANGEPLAINLOOSE],"$")),d("LONECARET","(?:\\^)"),d("CARETTRIM","(\\s*)".concat(l[o.LONECARET],"\\s+"),!0),e.caretTrimReplace="$1^",d("CARET","^".concat(l[o.LONECARET]).concat(l[o.XRANGEPLAIN],"$")),d("CARETLOOSE","^".concat(l[o.LONECARET]).concat(l[o.XRANGEPLAINLOOSE],"$")),d("COMPARATORLOOSE","^".concat(l[o.GTLT],"\\s*(").concat(l[o.LOOSEPLAIN],")$|^$")),d("COMPARATOR","^".concat(l[o.GTLT],"\\s*(").concat(l[o.FULLPLAIN],")$|^$")),d("COMPARATORTRIM","(\\s*)".concat(l[o.GTLT],"\\s*(").concat(l[o.LOOSEPLAIN],"|").concat(l[o.XRANGEPLAIN],")"),!0),e.comparatorTrimReplace="$1$2$3",d("HYPHENRANGE","^\\s*(".concat(l[o.XRANGEPLAIN],")\\s+-\\s+(").concat(l[o.XRANGEPLAIN],")\\s*$")),d("HYPHENRANGELOOSE","^\\s*(".concat(l[o.XRANGEPLAINLOOSE],")\\s+-\\s+(").concat(l[o.XRANGEPLAINLOOSE],")\\s*$")),d("STAR","(<|>)?=?\\s*\\*"),d("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),d("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(Fd,Fd.exports);var zf={},zh={};(function(r){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",t=e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",s="["+e+"]["+t+"]*",a=new RegExp("^"+s+"$"),n=function(i,l){const o=[];let c=l.exec(i);for(;c;){const m=[];m.startIndex=l.lastIndex-c[0].length;const h=c.length;for(let p=0;p"u")};r.isExist=function(i){return typeof i<"u"},r.isEmptyObject=function(i){return Object.keys(i).length===0},r.merge=function(i,l,o){if(l){const c=Object.keys(l),m=c.length;for(let h=0;h"&&r[n]!==" "&&r[n]!==" "&&r[n]!=="\n"&&r[n]!=="\r";n++)l+=r[n];if(l=l.trim(),l[l.length-1]==="/"&&(l=l.substring(0,l.length-1),n--),!vv(l)){let m;return l.trim().length===0?m="Invalid space after '<'.":m="Tag '"+l+"' is an invalid name.",Pe("InvalidTag",m,dt(r,n))}const o=dv(r,n);if(o===!1)return Pe("InvalidAttr","Attributes for '"+l+"' have open quote.",dt(r,n));let c=o.value;if(n=o.index,c[c.length-1]==="/"){const m=n-c.length;c=c.substring(0,c.length-1);const h=Gd(c,e);if(h===!0)s=!0;else return Pe(h.err.code,h.err.msg,dt(r,m+h.err.line))}else if(i)if(o.tagClosed){if(c.trim().length>0)return Pe("InvalidTag","Closing tag '"+l+"' can't have attributes or invalid starting.",dt(r,u));if(t.length===0)return Pe("InvalidTag","Closing tag '"+l+"' has not been opened.",dt(r,u));{const m=t.pop();if(l!==m.tagName){let h=dt(r,m.tagStartPos);return Pe("InvalidTag","Expected closing tag '"+m.tagName+"' (opened in line "+h.line+", col "+h.col+") instead of closing tag '"+l+"'.",dt(r,u))}t.length==0&&(a=!0)}}else return Pe("InvalidTag","Closing tag '"+l+"' doesn't have proper closing.",dt(r,n));else{const m=Gd(c,e);if(m!==!0)return Pe(m.err.code,m.err.msg,dt(r,n-c.length+m.err.line));if(a===!0)return Pe("InvalidXml","Multiple possible root nodes found.",dt(r,n));e.unpairedTags.indexOf(l)!==-1||t.push({tagName:l,tagStartPos:u}),s=!0}for(n++;n0)return Pe("InvalidXml","Invalid '"+JSON.stringify(t.map(n=>n.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}else return Pe("InvalidXml","Start tag expected.",1);return!0};function Jd(r){return r===" "||r===" "||r==="\n"||r==="\r"}function qd(r,e){const t=e;for(;e5&&s==="xml")return Pe("InvalidXml","XML declaration allowed only at the start of the document.",dt(r,e));if(r[e]=="?"&&r[e+1]==">"){e++;break}else continue}return e}function Wd(r,e){if(r.length>e+5&&r[e+1]==="-"&&r[e+2]==="-"){for(e+=3;e"){e+=2;break}}else if(r.length>e+8&&r[e+1]==="D"&&r[e+2]==="O"&&r[e+3]==="C"&&r[e+4]==="T"&&r[e+5]==="Y"&&r[e+6]==="P"&&r[e+7]==="E"){let t=1;for(e+=8;e"&&(t--,t===0))break}else if(r.length>e+9&&r[e+1]==="["&&r[e+2]==="C"&&r[e+3]==="D"&&r[e+4]==="A"&&r[e+5]==="T"&&r[e+6]==="A"&&r[e+7]==="["){for(e+=8;e"){e+=2;break}}return e}const mv='"',fv="'";function dv(r,e){let t="",s="",a=!1;for(;e"&&s===""){a=!0;break}t+=r[e]}return s!==""?!1:{value:t,index:e,tagClosed:a}}const pv=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function Gd(r,e){const t=_f.getAllMatches(r,pv),s={};for(let a=0;a!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(r,e,t){return r}},bv=function(r){return Object.assign({},ug,r)};of.buildOptions=bv,of.defaultOptions=ug;class Sv{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){e==="__proto__"&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){e.tagname==="__proto__"&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}var Av=Sv;const Nv=zh;function kv(r,e){const t={};if(r[e+3]==="O"&&r[e+4]==="C"&&r[e+5]==="T"&&r[e+6]==="Y"&&r[e+7]==="P"&&r[e+8]==="E"){e=e+9;let s=1,a=!1,n=!1,u="";for(;e"){if(n?r[e-1]==="-"&&r[e-2]==="-"&&(n=!1,s--):s--,s===0)break}else r[e]==="["?a=!0:u+=r[e];if(s!==0)throw new Error("Unclosed DOCTYPE")}else throw new Error("Invalid Tag instead of DOCTYPE");return{entities:t,i:e}}function Cv(r,e){let t="";for(;e0&&a&&t[2]!=="."||!e.leadingZeros&&n.length>0&&!a&&t[1]!==".")return r;{const l=Number(t),o=""+l;return o.search(/[eE]/)!==-1||i?e.eNotation?l:r:t.indexOf(".")!==-1?o==="0"&&u===""||o===u||a&&o==="-"+u?l:r:n?u===o||a+u===o?l:r:t===o||t===a+o?l:r}}else return r}}function Uv(r){return r&&r.indexOf(".")!==-1&&(r=r.replace(/0+$/,""),r==="."?r="0":r[0]==="."?r="0"+r:r[r.length-1]==="."&&(r=r.substr(0,r.length-1))),r}var jv=Lv;function $v(r){return typeof r=="function"?r:Array.isArray(r)?e=>{for(const t of r)if(typeof t=="string"&&e===t||t instanceof RegExp&&t.test(e))return!0}:()=>!1}var lg=$v;const cg=zh,Ro=Av,Kv=Ov,Hv=jv,Mv=lg;let Fv=class{constructor(r){this.options=r,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=Jv,this.parseXml=_v,this.parseTextData=qv,this.resolveNameSpace=Wv,this.buildAttributesMap=zv,this.isItStopNode=Yv,this.replaceEntitiesValue=Zv,this.readStopNodeData=tb,this.saveTextToParentTag=Qv,this.addChild=Xv,this.ignoreAttributesFn=Mv(this.options.ignoreAttributes)}};function Jv(r){const e=Object.keys(r);for(let t=0;t0)){u||(r=this.replaceEntitiesValue(r));const i=this.options.tagValueProcessor(e,r,t,a,n);return i==null?r:typeof i!=typeof r||i!==r?i:this.options.trimValues?lf(r,this.options.parseTagValue,this.options.numberParseOptions):r.trim()===r?lf(r,this.options.parseTagValue,this.options.numberParseOptions):r}}function Wv(r){if(this.options.removeNSPrefix){const e=r.split(":"),t=r.charAt(0)==="/"?"/":"";if(e[0]==="xmlns")return"";e.length===2&&(r=t+e[1])}return r}const Gv=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function zv(r,e,t){if(this.options.ignoreAttributes!==!0&&typeof r=="string"){const s=cg.getAllMatches(r,Gv),a=s.length,n={};for(let u=0;u",n,"Closing Tag is not closed.");let i=r.substring(n+2,u).trim();if(this.options.removeNSPrefix){const c=i.indexOf(":");c!==-1&&(i=i.substr(c+1))}this.options.transformTagName&&(i=this.options.transformTagName(i)),t&&(s=this.saveTextToParentTag(s,t,a));const l=a.substring(a.lastIndexOf(".")+1);if(i&&this.options.unpairedTags.indexOf(i)!==-1)throw new Error("Unpaired tag can not be used as closing tag: "));let o=0;l&&this.options.unpairedTags.indexOf(l)!==-1?(o=a.lastIndexOf(".",a.lastIndexOf(".")-1),this.tagsNodeStack.pop()):o=a.lastIndexOf("."),a=a.substring(0,o),t=this.tagsNodeStack.pop(),s="",n=u}else if(r[n+1]==="?"){let u=uf(r,n,!1,"?>");if(!u)throw new Error("Pi Tag is not closed.");if(s=this.saveTextToParentTag(s,t,a),!(this.options.ignoreDeclaration&&u.tagName==="?xml"||this.options.ignorePiTags)){const i=new Ro(u.tagName);i.add(this.options.textNodeName,""),u.tagName!==u.tagExp&&u.attrExpPresent&&(i[":@"]=this.buildAttributesMap(u.tagExp,a,u.tagName)),this.addChild(t,i,a)}n=u.closeIndex+1}else if(r.substr(n+1,3)==="!--"){const u=wn(r,"-->",n+4,"Comment is not closed.");if(this.options.commentPropName){const i=r.substring(n+4,u-2);s=this.saveTextToParentTag(s,t,a),t.add(this.options.commentPropName,[{[this.options.textNodeName]:i}])}n=u}else if(r.substr(n+1,2)==="!D"){const u=Kv(r,n);this.docTypeEntities=u.entities,n=u.i}else if(r.substr(n+1,2)==="!["){const u=wn(r,"]]>",n,"CDATA is not closed.")-2,i=r.substring(n+9,u);s=this.saveTextToParentTag(s,t,a);let l=this.parseTextData(i,t.tagname,a,!0,!1,!0,!0);l==null&&(l=""),this.options.cdataPropName?t.add(this.options.cdataPropName,[{[this.options.textNodeName]:i}]):t.add(this.options.textNodeName,l),n=u+2}else{let u=uf(r,n,this.options.removeNSPrefix),i=u.tagName;const l=u.rawTagName;let o=u.tagExp,c=u.attrExpPresent,m=u.closeIndex;this.options.transformTagName&&(i=this.options.transformTagName(i)),t&&s&&t.tagname!=="!xml"&&(s=this.saveTextToParentTag(s,t,a,!1));const h=t;if(h&&this.options.unpairedTags.indexOf(h.tagname)!==-1&&(t=this.tagsNodeStack.pop(),a=a.substring(0,a.lastIndexOf("."))),i!==e.tagname&&(a+=a?"."+i:i),this.isItStopNode(this.options.stopNodes,a,i)){let p="";if(o.length>0&&o.lastIndexOf("/")===o.length-1)i[i.length-1]==="/"?(i=i.substr(0,i.length-1),a=a.substr(0,a.length-1),o=i):o=o.substr(0,o.length-1),n=u.closeIndex;else if(this.options.unpairedTags.indexOf(i)!==-1)n=u.closeIndex;else{const w=this.readStopNodeData(r,l,m+1);if(!w)throw new Error("Unexpected end of ".concat(l));n=w.i,p=w.tagContent}const d=new Ro(i);i!==o&&c&&(d[":@"]=this.buildAttributesMap(o,a,i)),p&&(p=this.parseTextData(p,i,a,!0,c,!0,!0)),a=a.substr(0,a.lastIndexOf(".")),d.add(this.options.textNodeName,p),this.addChild(t,d,a)}else{if(o.length>0&&o.lastIndexOf("/")===o.length-1){i[i.length-1]==="/"?(i=i.substr(0,i.length-1),a=a.substr(0,a.length-1),o=i):o=o.substr(0,o.length-1),this.options.transformTagName&&(i=this.options.transformTagName(i));const p=new Ro(i);i!==o&&c&&(p[":@"]=this.buildAttributesMap(o,a,i)),this.addChild(t,p,a),a=a.substr(0,a.lastIndexOf("."))}else{const p=new Ro(i);this.tagsNodeStack.push(t),i!==o&&c&&(p[":@"]=this.buildAttributesMap(o,a,i)),this.addChild(t,p,a),t=p}s="",n=m}}else s+=r[n];return e.child};function Xv(r,e,t){const s=this.options.updateTag(e.tagname,t,e[":@"]);s===!1||(typeof s=="string"&&(e.tagname=s),r.addChild(e))}const Zv=function(r){if(this.options.processEntities){for(let e in this.docTypeEntities){const t=this.docTypeEntities[e];r=r.replace(t.regx,t.val)}for(let e in this.lastEntities){const t=this.lastEntities[e];r=r.replace(t.regex,t.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){const t=this.htmlEntities[e];r=r.replace(t.regex,t.val)}r=r.replace(this.ampEntity.regex,this.ampEntity.val)}return r};function Qv(r,e,t,s){return r&&(s===void 0&&(s=Object.keys(e.child).length===0),r=this.parseTextData(r,e.tagname,t,!1,e[":@"]?Object.keys(e[":@"]).length!==0:!1,s),r!==void 0&&r!==""&&e.add(this.options.textNodeName,r),r=""),r}function Yv(r,e,t){const s="*."+t;for(const a in r){const n=r[a];if(s===n||e===n)return!0}return!1}function eb(r,e,t=">"){let s,a="";for(let n=e;n",t,"".concat(e," is not closed"));if(r.substring(t+2,n).trim()===e&&(a--,a===0))return{tagContent:r.substring(s,t),i:n};t=n}else if(r[t+1]==="?")t=wn(r,"?>",t+1,"StopNode is not closed.");else if(r.substr(t+1,3)==="!--")t=wn(r,"-->",t+3,"StopNode is not closed.");else if(r.substr(t+1,2)==="![")t=wn(r,"]]>",t,"StopNode is not closed.")-2;else{const n=uf(r,t,">");n&&((n&&n.tagName)===e&&n.tagExp[n.tagExp.length-1]!=="/"&&a++,t=n.closeIndex)}}function lf(r,e,t){if(e&&typeof r=="string"){const s=r.trim();return s==="true"?!0:s==="false"?!1:Hv(r,t)}else return cg.isExist(r)?r:""}var sb=Fv,hg={};function rb(r,e){return mg(r,e)}function mg(r,e,t){let s;const a={};for(let n=0;n0&&(a[e.textNodeName]=s):s!==void 0&&(a[e.textNodeName]=s),a}function ab(r){const e=Object.keys(r);for(let t=0;t0&&(t=fb),fg(r,e,"",t)}function fg(r,e,t,s){let a="",n=!1;for(let u=0;u"),n=!1;continue}else if(l===e.commentPropName){a+=s+""),n=!0;continue}else if(l[0]==="?"){const d=zd(i[":@"],e),w=l==="?xml"?"":s;let y=i[l][0][e.textNodeName];y=y.length!==0?" "+y:"",a+=w+"<".concat(l).concat(y).concat(d,"?>"),n=!0;continue}let c=s;c!==""&&(c+=e.indentBy);const m=zd(i[":@"],e),h=s+"<".concat(l).concat(m),p=fg(i[l],e,o,c);e.unpairedTags.indexOf(l)!==-1?e.suppressUnpairedNode?a+=h+">":a+=h+"/>":(!p||p.length===0)&&e.suppressEmptyNode?a+=h+"/>":p&&p.endsWith(">")?a+=h+">".concat(p).concat(s,""):(a+=h+">",p&&s!==""&&(p.includes("/>")||p.includes("")),n=!0}return a}function pb(r){const e=Object.keys(r);for(let t=0;t0&&e.processEntities)for(let t=0;t","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function zr(r){this.options=Object.assign({},bb,r),this.options.ignoreAttributes===!0||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=vb(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=Nb),this.processTextOrObjNode=Sb,this.options.format?(this.indentate=Ab,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}zr.prototype.build=function(r){return this.options.preserveOrder?yb(r,this.options):(Array.isArray(r)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(r={[this.options.arrayNodeName]:r}),this.j2x(r,0,[]).val)},zr.prototype.j2x=function(r,e,t){let s="",a="";const n=t.join(".");for(let u in r)if(Object.prototype.hasOwnProperty.call(r,u))if(typeof r[u]>"u")this.isAttribute(u)&&(a+="");else if(r[u]===null)this.isAttribute(u)?a+="":u[0]==="?"?a+=this.indentate(e)+"<"+u+"?"+this.tagEndChar:a+=this.indentate(e)+"<"+u+"/"+this.tagEndChar;else if(r[u]instanceof Date)a+=this.buildTextValNode(r[u],u,"",e);else if(typeof r[u]!="object"){const i=this.isAttribute(u);if(i&&!this.ignoreAttributesFn(i,n))s+=this.buildAttrPairStr(i,""+r[u]);else if(!i)if(u===this.options.textNodeName){let l=this.options.tagValueProcessor(u,""+r[u]);a+=this.replaceEntitiesValue(l)}else a+=this.buildTextValNode(r[u],u,"",e)}else if(Array.isArray(r[u])){const i=r[u].length;let l="",o="";for(let c=0;c"u"))if(m===null)u[0]==="?"?a+=this.indentate(e)+"<"+u+"?"+this.tagEndChar:a+=this.indentate(e)+"<"+u+"/"+this.tagEndChar;else if(typeof m=="object")if(this.options.oneListGroup){const h=this.j2x(m,e+1,t.concat(u));l+=h.val,this.options.attributesGroupName&&m.hasOwnProperty(this.options.attributesGroupName)&&(o+=h.attrStr)}else l+=this.processTextOrObjNode(m,u,e,t);else if(this.options.oneListGroup){let h=this.options.tagValueProcessor(u,m);h=this.replaceEntitiesValue(h),l+=h}else l+=this.buildTextValNode(m,u,"",e)}this.options.oneListGroup&&(l=this.buildObjectNode(l,u,o,e)),a+=l}else if(this.options.attributesGroupName&&u===this.options.attributesGroupName){const i=Object.keys(r[u]),l=i.length;for(let o=0;o"+r+a:this.options.commentPropName!==!1&&e===this.options.commentPropName&&n.length===0?this.indentate(s)+"")+this.newLine:this.indentate(s)+"<"+e+t+n+this.tagEndChar+r+this.indentate(s)+a}},zr.prototype.closeTag=function(r){let e="";return this.options.unpairedTags.indexOf(r)!==-1?this.options.suppressUnpairedNode||(e="/"):this.options.suppressEmptyNode?e="/":e=">")+this.newLine;if(this.options.commentPropName!==!1&&e===this.options.commentPropName)return this.indentate(s)+"")+this.newLine;if(e[0]==="?")return this.indentate(s)+"<"+e+t+"?"+this.tagEndChar;{let a=this.options.tagValueProcessor(e,r);return a=this.replaceEntitiesValue(a),a===""?this.indentate(s)+"<"+e+t+this.closeTag(e)+this.tagEndChar:this.indentate(s)+"<"+e+t+">"+a+"0&&this.options.processEntities)for(let e=0;er===null?Gm().setApp("end_to_end_encryption").build():Gm().setApp("end_to_end_encryption").setUid(r.uid).build(),_e=Vb(Uf());class Ae{constructor(e={}){if("view"in e)this.fromUint8Array(e.view);else if("buffer"in e)this.fromArrayBuffer(e.buffer);else if("string"in e)this.fromString(e.string);else if("hexstring"in e)this.fromHexString(e.hexstring);else if("length"in e&&e.length>0){if(this.length=e.length,e.stub)for(let t=0;t=this.view.length||e<0)&&(e=0),(t>=this.view.length||t<0)&&(t=this.view.length-e);for(let a=e;a>1),this.view=new Uint8Array(this.buffer);const s=new Map;s.set("0",0),s.set("1",1),s.set("2",2),s.set("3",3),s.set("4",4),s.set("5",5),s.set("6",6),s.set("7",7),s.set("8",8),s.set("9",9),s.set("A",10),s.set("a",10),s.set("B",11),s.set("b",11),s.set("C",12),s.set("c",12),s.set("D",13),s.set("d",13),s.set("E",14),s.set("e",14),s.set("F",15),s.set("f",15);let a=0,n=0;for(let u=0;u=this.view.length||e<0)&&(e=0),(t>=this.view.length||t<0)&&(t=this.view.length-e);for(let a=e;athis.length-1)throw new Error("Wrong start position: ".concat(e));return new Ae({buffer:this._buffer.slice(e,e+t)})}slice(e=0,t=this.length){if(!e&&!this.length)return new Ae;if(e<0||e>this.length-1)throw new Error("Wrong start position: ".concat(e));return new Ae({buffer:this._buffer.slice(e,t)})}realloc(e){const t=new ArrayBuffer(e),s=new Uint8Array(t);e>this._view.length?s.set(this._view):s.set(new Uint8Array(this._buffer,0,e)),this._buffer=t,this._view=new Uint8Array(this._buffer)}append(e){const t=this.length,s=e.length,a=e._view.subarray();this.realloc(t+s),this._view.set(a,t)}insert(e,t=0,s=this.length-t){return t>this.length-1?!1:(s>this.length-t&&(s=this.length-t),s>e.length&&(s=e.length),s==e.length?this._view.set(e._view,t):this._view.set(e._view.subarray(0,s),t),!0)}isEqual(e){if(this.length!=e.length)return!1;for(let t=0;tu)return-1;const o=[];for(let c=0;c=l.position-l.length&&(m=!0):c-h<=l.position-l.length&&(m=!0),m&&(l.position=c,l.id=o,l.length=h)}}return l}findAllIn(e,t,s){let{start:a,length:n}=this.prepareFindParameters(t,s);const u=[];let i={id:-1,position:a};do{const l=i.position;if(i=this.findFirstIn(e,i.position,n),i.id==-1)break;n-=i.position-l,u.push({id:i.id,position:i.position})}while(!0);return u}findAllPatternIn(e,t,s){const{start:a,length:n}=this.prepareFindParameters(t,s),u=[],i=e.length;if(i>n)return-1;const l=Array.from(e.view);for(let o=0;o<=n-i;o++){let c=!0;const m=a+o;for(let h=0;h0;){if(l.right=this.findFirstIn(e,i?n-u+o:n+u-o,o,i),l.right.id==-1){u=o,i?n-=u:n=l.left.position,l.value=new Ae({buffer:this._buffer.slice(n,n+u)});break}if(l.right.position!=(i?l.left.position-e[l.right.id].length:l.left.position+e[l.right.id].length)){i?(n=l.right.position+e[l.right.id].length,u=l.left.position-l.right.position-e[l.right.id].length):(n=l.left.position,u=l.right.position-l.left.position-e[l.right.id].length),l.value=new Ae({buffer:this._buffer.slice(n,n+u)});break}l.left=l.right,o-=e[l.right.id].length}if(i){const c=l.right;l.right=l.left,l.left=c}return l}findAllNotIn(e,t,s){let{start:a,length:n}=this.prepareFindParameters(t,s);const u=[];let i={left:{id:-1,position:a},right:{id:-1,position:a},value:new Ae};do{const l=i.right.position;i=this.findFirstNotIn(e,i.right.position,n),n-=i.right.position-l,u.push({left:{id:i.left.id,position:i.left.position},right:{id:i.right.id,position:i.right.position},value:i.value})}while(i.right.id!=-1);return u}findFirstSequence(e,t,s,a){let{start:n,length:u,backward:i}=this.prepareFindParameters(t,s,a);const l=this.skipNotPatterns(e,n,u,i);if(l==-1)return{position:-1,value:new Ae};const o=this.skipPatterns(e,l,u-(i?n-l:l-n),i);i?(n=o,u=l-o):(n=l,u=o-l);const c=new Ae({buffer:this._buffer.slice(n,n+u)});return{position:o,value:c}}findAllSequences(e,t,s){let{start:a,length:n}=this.prepareFindParameters(t,s);const u=[];let i={position:a,value:new Ae};do{const l=i.position;i=this.findFirstSequence(e,i.position,n),i.position!=-1&&(n-=i.position-l,u.push({position:i.position,value:i.value}))}while(i.position!=-1);return u}findPairedPatterns(e,t,s,a){const n=[];if(e.isEqual(t))return n;const{start:u,length:i}=this.prepareFindParameters(s,a);let l=0;const o=this.findAllPatternIn(e,u,i);if(!Array.isArray(o)||o.length==0)return n;const c=this.findAllPatternIn(t,u,i);if(!Array.isArray(c)||c.length==0)return n;for(;lc[0])break;for(;o[l]=o.length)););n.push({left:o[l-1],right:c[0]}),o.splice(l-1,1),c.splice(0,1),l=0}return n.sort((m,h)=>m.left-h.left),n}findPairedArrays(e,t,s,a){const{start:n,length:u}=this.prepareFindParameters(s,a),i=[];let l=0;const o=this.findAllIn(e,n,u);if(o.length==0)return i;const c=this.findAllIn(t,n,u);if(c.length==0)return i;for(;lc[0].position)break;for(;o[l].position=o.length)););i.push({left:o[l-1],right:c[0]}),o.splice(l-1,1),c.splice(0,1),l=0}return i.sort((m,h)=>m.left.position-h.left.position),i}replacePattern(e,t,s,a,n=null){let u=[],i;const l={status:-1,searchPatternPositions:[],replacePatternPositions:[]},{start:o,length:c}=this.prepareFindParameters(s,a);if(n==null){if(u=this.findAllIn([e],o,c),u.length==0)return l}else u=n;l.searchPatternPositions.push(...Array.from(u,d=>d.position));const m=e.length-t.length,h=new ArrayBuffer(this.view.length-u.length*m),p=new Uint8Array(h);for(p.set(new Uint8Array(this.buffer,0,o)),i=0;i=n+u)return l}}return l}skipNotPatterns(e,t,s,a){const{start:n,length:u,backward:i}=this.prepareFindParameters(t,s,a);let l=-1;for(let o=0;othis.length&&(e=this.length),s?(t===null&&(t=e),t>e&&(t=e)):(t===null&&(t=this.length-e),t>this.length-e&&(t=this.length-e)),{start:e,length:t,backward:s}}}const Bb=16777216;class ta{constructor(e={}){this._stream=new Ae,this._length=0,this._start=0,this.backward=!1,this.appendBlock=0,this.prevLength=0,this.prevStart=0,"view"in e?this.stream=new Ae({view:e.view}):"buffer"in e?this.stream=new Ae({buffer:e.buffer}):"string"in e?this.stream=new Ae({string:e.string}):"hexstring"in e?this.stream=new Ae({hexstring:e.hexstring}):"stream"in e?this.stream=e.stream.slice():this.stream=new Ae,"backward"in e&&e.backward&&(this.backward=e.backward,this._start=this.stream.length),"length"in e&&e.length>0&&(this._length=e.length),"start"in e&&e.start&&e.start>0&&(this._start=e.start),"appendBlock"in e&&e.appendBlock&&e.appendBlock>0&&(this.appendBlock=e.appendBlock)}set stream(e){this._stream=e,this.prevLength=this._length,this._length=e.length,this.prevStart=this._start,this._start=0}get stream(){return this._stream}set length(e){this.prevLength=this._length,this._length=e}get length(){return this.appendBlock?this.start:this._length}set start(e){e>this.stream.length||(this.prevStart=this._start,this.prevLength=this._length,this._length-=this.backward?this._start-e:e-this._start,this._start=e)}get start(){return this._start}get buffer(){return this._stream.buffer.slice(0,this._length)}resetPosition(){this._start=this.prevStart,this._length=this.prevLength}findPattern(e,t=null){(t==null||t>this.length)&&(t=this.length);const s=this.stream.findPattern(e,this.start,this.length,this.backward);if(s==-1)return s;if(this.backward){if(sthis.start+e.length+t)return-1;return this.start=s,s}findFirstIn(e,t=null){(t==null||t>this.length)&&(t=this.length);const s=this.stream.findFirstIn(e,this.start,this.length,this.backward);if(s.id==-1)return s;if(this.backward){if(s.positionthis.start+e[s.id].length+t)return{id:-1,position:this.backward?0:this.start+this.length};return this.start=s.position,s}findAllIn(e){const t=this.backward?this.start-this.length:this.start;return this.stream.findAllIn(e,t,this.length)}findFirstNotIn(e,t=null){(t==null||t>this._length)&&(t=this._length);const s=this._stream.findFirstNotIn(e,this._start,this._length,this.backward);if(s.left.id==-1&&s.right.id==-1)return s;if(this.backward){if(s.right.id!=-1&&s.right.positionthis._start+e[s.left.id].length+t)return{left:{id:-1,position:this._start},right:{id:-1,position:0},value:new Ae};return this.backward?s.left.id==-1?this.start=0:this.start=s.left.position:s.right.id==-1?this.start=this._start+this._length:this.start=s.right.position,s}findAllNotIn(e){const t=this.backward?this._start-this._length:this._start;return this._stream.findAllNotIn(e,t,this._length)}findFirstSequence(e,t=null,s=null){(t==null||t>this._length)&&(t=this._length),(s==null||s>t)&&(s=t);const a=this._stream.findFirstSequence(e,this._start,t,this.backward);if(a.value.length==0)return a;if(this.backward){if(a.positionthis._start+a.value.length+s)return{position:-1,value:new Ae};return this.start=a.position,a}findAllSequences(e){const t=this.backward?this.start-this.length:this.start;return this.stream.findAllSequences(e,t,this.length)}findPairedPatterns(e,t,s=null){(s==null||s>this.length)&&(s=this.length);const a=this.backward?this.start-this.length:this.start,n=this.stream.findPairedPatterns(e,t,a,this.length);if(n.length){if(this.backward){if(n[0].rightthis.start+e.length+s)return[]}return n}findPairedArrays(e,t,s=null){(s==null||s>this.length)&&(s=this.length);const a=this.backward?this.start-this.length:this.start,n=this.stream.findPairedArrays(e,t,a,this.length);if(n.length){if(this.backward){if(n[0].right.positionthis.start+e[n[0].left.id].length+s)return[]}return n}replacePattern(e,t){const s=this.backward?this.start-this.length:this.start;return this.stream.replacePattern(e,t,s,this.length)}skipPatterns(e){const t=this.stream.skipPatterns(e,this.start,this.length,this.backward);return this.start=t,t}skipNotPatterns(e){const t=this.stream.skipNotPatterns(e,this.start,this.length,this.backward);return t==-1?-1:(this.start=t,t)}append(e){this.beforeAppend(e.length),this._stream.view.set(e.view,this._start),this._length+=e.length*2,this.start=this._start+e.length,this.prevLength-=e.length*2}appendView(e){this.beforeAppend(e.length),this._stream.view.set(e,this._start),this._length+=e.length*2,this.start=this._start+e.length,this.prevLength-=e.length*2}appendChar(e){this.beforeAppend(1),this._stream.view[this._start]=e,this._length+=2,this.start=this._start+1,this.prevLength-=2}appendUint16(e){this.beforeAppend(2);const t=new Uint16Array([e]),s=new Uint8Array(t.buffer);this.stream.view[this._start]=s[1],this._stream.view[this._start+1]=s[0],this._length+=4,this.start=this._start+2,this.prevLength-=4}appendUint24(e){this.beforeAppend(3);const t=new Uint32Array([e]),s=new Uint8Array(t.buffer);this._stream.view[this._start]=s[2],this._stream.view[this._start+1]=s[1],this._stream.view[this._start+2]=s[0],this._length+=6,this.start=this._start+3,this.prevLength-=6}appendUint32(e){this.beforeAppend(4);const t=new Uint32Array([e]),s=new Uint8Array(t.buffer);this._stream.view[this._start]=s[3],this._stream.view[this._start+1]=s[2],this._stream.view[this._start+2]=s[1],this._stream.view[this._start+3]=s[0],this._length+=8,this.start=this._start+4,this.prevLength-=8}appendInt16(e){this.beforeAppend(2);const t=new Int16Array([e]),s=new Uint8Array(t.buffer);this._stream.view[this._start]=s[1],this._stream.view[this._start+1]=s[0],this._length+=4,this.start=this._start+2,this.prevLength-=4}appendInt32(e){this.beforeAppend(4);const t=new Int32Array([e]),s=new Uint8Array(t.buffer);this._stream.view[this._start]=s[3],this._stream.view[this._start+1]=s[2],this._stream.view[this._start+2]=s[1],this._stream.view[this._start+3]=s[0],this._length+=8,this.start=this._start+4,this.prevLength-=8}getBlock(e,t=!0){if(this._length<=0)return new Uint8Array(0);this._lengththis._stream.length&&(e>this.appendBlock&&(this.appendBlock=e+ta.APPEND_BLOCK),this._stream.realloc(this._stream.length+this.appendBlock))}}ta.APPEND_BLOCK=1e3;function Pb(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function pg(r,...e){if(!Pb(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function _d(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function Ob(r,e){pg(r);const t=e.outputLen;if(r.lengthnew DataView(r.buffer,r.byteOffset,r.byteLength),us=(r,e)=>r<<32-e|r>>>e,dm=(r,e)=>r<>>32-e>>>0;function Db(r){if(typeof r!="string")throw new Error("utf8ToBytes expected string, got "+typeof r);return new Uint8Array(new TextEncoder().encode(r))}function gg(r){return typeof r=="string"&&(r=Db(r)),pg(r),r}class Tb{clone(){return this._cloneInto()}}function _h(r){const e=s=>r().update(gg(s)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Rb(r,e,t,s){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,s);const a=BigInt(32),n=BigInt(4294967295),u=Number(t>>a&n),i=Number(t&n),l=s?4:0,o=s?0:4;r.setUint32(e+l,u,s),r.setUint32(e+o,i,s)}const wg=(r,e,t)=>r&e^~r&t,yg=(r,e,t)=>r&e^r&t^e&t;class Xf extends Tb{constructor(e,t,s,a){super(),this.blockLen=e,this.outputLen=t,this.padOffset=s,this.isLE=a,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=fm(this.buffer)}update(e){_d(this);const{view:t,buffer:s,blockLen:a}=this;e=gg(e);const n=e.length;for(let u=0;ua-u&&(this.process(s,0),u=0);for(let m=u;mc.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;mnew Lb),jb=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Xs=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Zs=new Uint32Array(64);let $b=class extends Xf{constructor(){super(64,32,8,!1),this.A=Xs[0]|0,this.B=Xs[1]|0,this.C=Xs[2]|0,this.D=Xs[3]|0,this.E=Xs[4]|0,this.F=Xs[5]|0,this.G=Xs[6]|0,this.H=Xs[7]|0}get(){const{A:r,B:e,C:t,D:s,E:a,F:n,G:u,H:i}=this;return[r,e,t,s,a,n,u,i]}set(r,e,t,s,a,n,u,i){this.A=r|0,this.B=e|0,this.C=t|0,this.D=s|0,this.E=a|0,this.F=n|0,this.G=u|0,this.H=i|0}process(r,e){for(let c=0;c<16;c++,e+=4)Zs[c]=r.getUint32(e,!1);for(let c=16;c<64;c++){const m=Zs[c-15],h=Zs[c-2],p=us(m,7)^us(m,18)^m>>>3,d=us(h,17)^us(h,19)^h>>>10;Zs[c]=d+Zs[c-7]+p+Zs[c-16]|0}let{A:t,B:s,C:a,D:n,E:u,F:i,G:l,H:o}=this;for(let c=0;c<64;c++){const m=us(u,6)^us(u,11)^us(u,25),h=o+m+wg(u,i,l)+jb[c]+Zs[c]|0,p=(us(t,2)^us(t,13)^us(t,22))+yg(t,s,a)|0;o=l,l=i,i=u,u=n+h|0,n=a,a=s,s=t,t=h+p|0}t=t+this.A|0,s=s+this.B|0,a=a+this.C|0,n=n+this.D|0,u=u+this.E|0,i=i+this.F|0,l=l+this.G|0,o=o+this.H|0,this.set(t,s,a,n,u,i,l,o)}roundClean(){Zs.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};const Kb=_h(()=>new $b),dc=BigInt(2**32-1),cf=BigInt(32);function vg(r,e=!1){return e?{h:Number(r&dc),l:Number(r>>cf&dc)}:{h:Number(r>>cf&dc)|0,l:Number(r&dc)|0}}function Hb(r,e=!1){let t=new Uint32Array(r.length),s=new Uint32Array(r.length);for(let a=0;aBigInt(r>>>0)<>>0),Fb=(r,e,t)=>r>>>t,Jb=(r,e,t)=>r<<32-t|e>>>t,qb=(r,e,t)=>r>>>t|e<<32-t,Wb=(r,e,t)=>r<<32-t|e>>>t,Gb=(r,e,t)=>r<<64-t|e>>>t-32,zb=(r,e,t)=>r>>>t-32|e<<64-t,_b=(r,e)=>e,Xb=(r,e)=>r,Zb=(r,e,t)=>r<>>32-t,Qb=(r,e,t)=>e<>>32-t,Yb=(r,e,t)=>e<>>64-t,e0=(r,e,t)=>r<>>64-t;function t0(r,e,t,s){const a=(e>>>0)+(s>>>0);return{h:r+t+(a/2**32|0)|0,l:a|0}}const s0=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),r0=(r,e,t,s)=>e+t+s+(r/2**32|0)|0,a0=(r,e,t,s)=>(r>>>0)+(e>>>0)+(t>>>0)+(s>>>0),n0=(r,e,t,s,a)=>e+t+s+a+(r/2**32|0)|0,i0=(r,e,t,s,a)=>(r>>>0)+(e>>>0)+(t>>>0)+(s>>>0)+(a>>>0),o0=(r,e,t,s,a,n)=>e+t+s+a+n+(r/2**32|0)|0,te={fromBig:vg,split:Hb,toBig:Mb,shrSH:Fb,shrSL:Jb,rotrSH:qb,rotrSL:Wb,rotrBH:Gb,rotrBL:zb,rotr32H:_b,rotr32L:Xb,rotlSH:Zb,rotlSL:Qb,rotlBH:Yb,rotlBL:e0,add:t0,add3L:s0,add3H:r0,add4L:a0,add4H:n0,add5H:o0,add5L:i0},[u0,l0]=te.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),Qs=new Uint32Array(80),Ys=new Uint32Array(80);let bg=class extends Xf{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:r,Al:e,Bh:t,Bl:s,Ch:a,Cl:n,Dh:u,Dl:i,Eh:l,El:o,Fh:c,Fl:m,Gh:h,Gl:p,Hh:d,Hl:w}=this;return[r,e,t,s,a,n,u,i,l,o,c,m,h,p,d,w]}set(r,e,t,s,a,n,u,i,l,o,c,m,h,p,d,w){this.Ah=r|0,this.Al=e|0,this.Bh=t|0,this.Bl=s|0,this.Ch=a|0,this.Cl=n|0,this.Dh=u|0,this.Dl=i|0,this.Eh=l|0,this.El=o|0,this.Fh=c|0,this.Fl=m|0,this.Gh=h|0,this.Gl=p|0,this.Hh=d|0,this.Hl=w|0}process(r,e){for(let g=0;g<16;g++,e+=4)Qs[g]=r.getUint32(e),Ys[g]=r.getUint32(e+=4);for(let g=16;g<80;g++){const b=Qs[g-15]|0,N=Ys[g-15]|0,S=te.rotrSH(b,N,1)^te.rotrSH(b,N,8)^te.shrSH(b,N,7),E=te.rotrSL(b,N,1)^te.rotrSL(b,N,8)^te.shrSL(b,N,7),x=Qs[g-2]|0,C=Ys[g-2]|0,P=te.rotrSH(x,C,19)^te.rotrBH(x,C,61)^te.shrSH(x,C,6),K=te.rotrSL(x,C,19)^te.rotrBL(x,C,61)^te.shrSL(x,C,6),L=te.add4L(E,K,Ys[g-7],Ys[g-16]),j=te.add4H(L,S,P,Qs[g-7],Qs[g-16]);Qs[g]=j|0,Ys[g]=L|0}let{Ah:t,Al:s,Bh:a,Bl:n,Ch:u,Cl:i,Dh:l,Dl:o,Eh:c,El:m,Fh:h,Fl:p,Gh:d,Gl:w,Hh:y,Hl:k}=this;for(let g=0;g<80;g++){const b=te.rotrSH(c,m,14)^te.rotrSH(c,m,18)^te.rotrBH(c,m,41),N=te.rotrSL(c,m,14)^te.rotrSL(c,m,18)^te.rotrBL(c,m,41),S=c&h^~c&d,E=m&p^~m&w,x=te.add5L(k,N,E,l0[g],Ys[g]),C=te.add5H(x,y,b,S,u0[g],Qs[g]),P=x|0,K=te.rotrSH(t,s,28)^te.rotrBH(t,s,34)^te.rotrBH(t,s,39),L=te.rotrSL(t,s,28)^te.rotrBL(t,s,34)^te.rotrBL(t,s,39),j=t&a^t&u^a&u,U=s&n^s&i^n&i;y=d|0,k=w|0,d=h|0,w=p|0,h=c|0,p=m|0,{h:c,l:m}=te.add(l|0,o|0,C|0,P|0),l=u|0,o=i|0,u=a|0,i=n|0,a=t|0,n=s|0;const M=te.add3L(P,L,U);t=te.add3H(M,C,K,j),s=M|0}({h:t,l:s}=te.add(this.Ah|0,this.Al|0,t|0,s|0)),{h:a,l:n}=te.add(this.Bh|0,this.Bl|0,a|0,n|0),{h:u,l:i}=te.add(this.Ch|0,this.Cl|0,u|0,i|0),{h:l,l:o}=te.add(this.Dh|0,this.Dl|0,l|0,o|0),{h:c,l:m}=te.add(this.Eh|0,this.El|0,c|0,m|0),{h,l:p}=te.add(this.Fh|0,this.Fl|0,h|0,p|0),{h:d,l:w}=te.add(this.Gh|0,this.Gl|0,d|0,w|0),{h:y,l:k}=te.add(this.Hh|0,this.Hl|0,y|0,k|0),this.set(t,s,a,n,u,i,l,o,c,m,h,p,d,w,y,k)}roundClean(){Qs.fill(0),Ys.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},c0=class extends bg{constructor(){super(),this.Ah=-876896931,this.Al=-1056596264,this.Bh=1654270250,this.Bl=914150663,this.Ch=-1856437926,this.Cl=812702999,this.Dh=355462360,this.Dl=-150054599,this.Eh=1731405415,this.El=-4191439,this.Fh=-1900787065,this.Fl=1750603025,this.Gh=-619958771,this.Gl=1694076839,this.Hh=1203062813,this.Hl=-1090891868,this.outputLen=48}};const h0=_h(()=>new bg),m0=_h(()=>new c0),Ue=new ArrayBuffer(0),v="";class he extends TypeError{constructor(){super(...arguments),this.name=he.NAME}static isType(e,t){if(typeof t=="string"){if(t==="Array"&&Array.isArray(e)||t==="ArrayBuffer"&&e instanceof ArrayBuffer||t==="ArrayBufferView"&&ArrayBuffer.isView(e)||typeof e===t)return!0}else if(e instanceof t)return!0;return!1}static assert(e,t,...s){for(const n of s)if(this.isType(e,n))return;const a=s.map(n=>n instanceof Function&&"name"in n?n.name:"".concat(n));throw new he("Parameter '".concat(t,"' is not of type ").concat(a.length>1?"(".concat(a.join(" or "),")"):a[0]))}}he.NAME="ArgumentError";class ne extends TypeError{static assert(...e){let t=null,s,a;typeof e[0]=="string"?(t=e[0],s=e[1],a=e.slice(2)):(s=e[0],a=e.slice(1)),he.assert(s,"parameters","object");for(const n of a)if(s[n]==null)throw new ne(n,t)}static assertEmpty(e,t,s){if(e==null)throw new ne(t,s)}constructor(e,t=null,s){super(),this.name=ne.NAME,this.field=e,t&&(this.target=t),s?this.message=s:this.message="Absent mandatory parameter '".concat(e,"' ").concat(t?" in '".concat(t,"'"):v)}}ne.NAME="ParameterError";class O extends Error{static assertSchema(e,t){if(!e.verified)throw new Error("Object's schema was not verified against input data for ".concat(t))}static assert(e,t){if(e.offset===-1)throw new O("Error during parsing of ASN.1 data. Data is not correct for '".concat(t,"'."))}constructor(e){super(e),this.name="AsnError"}}class D{static blockName(){return this.CLASS_NAME}static fromBER(e){const t=Le(e);O.assert(t,this.name);try{return new this({schema:t.result})}catch(s){throw new O("Cannot create '".concat(this.CLASS_NAME,"' from ASN.1 object"))}}static defaultValues(e){throw new Error("Invalid member name for ".concat(this.CLASS_NAME," class: ").concat(e))}static schema(e={}){throw new Error("Method '".concat(this.CLASS_NAME,".schema' should be overridden"))}get className(){return this.constructor.CLASS_NAME}toString(e="hex"){let t;try{t=this.toSchema()}catch(s){t=this.toSchema(!0)}return ce.ToString(t.toBER(),e)}}D.CLASS_NAME="PkiObject";function Hr(r){let e=!1,t=v;const s=r.trim();for(let a=0;anew _r({schema:s}))),this.valueBeforeDecode=t.result.RDN.valueBeforeDecodeView.slice().buffer}toSchema(){if(this.valueBeforeDecode.byteLength===0)return new A({value:[new Je({value:Array.from(this.typesAndValues,t=>t.toSchema())})]});const e=Le(this.valueBeforeDecode);if(O.assert(e,"RelativeDistinguishedNames"),!(e.result instanceof A))throw new Error("ASN.1 result should be SEQUENCE");return e.result}toJSON(){return{typesAndValues:Array.from(this.typesAndValues,e=>e.toJSON())}}isEqual(e){if(e instanceof me){if(this.typesAndValues.length!==e.typesAndValues.length)return!1;for(const[t,s]of this.typesAndValues.entries())if(s.isEqual(e.typesAndValues[t])===!1)return!1;return!0}return e instanceof ArrayBuffer?Zl(this.valueBeforeDecode,e):!1}}me.CLASS_NAME="RelativeDistinguishedNames";const Zo="type",Qo="value";function f0(r={},e=!1){const t=f(r,"names",{});return new A({optional:e,value:[new I({optional:!0,idBlock:{tagClass:2,tagNumber:1},name:t.country_name||v,value:[new Ne({value:[new Hc,new Ts]})]}),new I({optional:!0,idBlock:{tagClass:2,tagNumber:2},name:t.administration_domain_name||v,value:[new Ne({value:[new Hc,new Ts]})]}),new _({optional:!0,idBlock:{tagClass:3,tagNumber:0},name:t.network_address||v,isHexOnly:!0}),new _({optional:!0,idBlock:{tagClass:3,tagNumber:1},name:t.terminal_identifier||v,isHexOnly:!0}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:2},name:t.private_domain_name||v,value:[new Ne({value:[new Hc,new Ts]})]}),new _({optional:!0,idBlock:{tagClass:3,tagNumber:3},name:t.organization_name||v,isHexOnly:!0}),new _({optional:!0,name:t.numeric_user_identifier||v,idBlock:{tagClass:3,tagNumber:4},isHexOnly:!0}),new I({optional:!0,name:t.personal_name||v,idBlock:{tagClass:3,tagNumber:5},value:[new _({idBlock:{tagClass:3,tagNumber:0},isHexOnly:!0}),new _({optional:!0,idBlock:{tagClass:3,tagNumber:1},isHexOnly:!0}),new _({optional:!0,idBlock:{tagClass:3,tagNumber:2},isHexOnly:!0}),new _({optional:!0,idBlock:{tagClass:3,tagNumber:3},isHexOnly:!0})]}),new I({optional:!0,name:t.organizational_unit_names||v,idBlock:{tagClass:3,tagNumber:6},value:[new Z({value:new Ts})]})]})}function d0(r=!1){return new A({optional:r,value:[new Ts,new Ts]})}function p0(r=!1){return new Je({optional:r,value:[new _({optional:!0,idBlock:{tagClass:3,tagNumber:0},isHexOnly:!0}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new X]})]})}class ue extends D{constructor(e={}){super(),this.type=f(e,Zo,ue.defaultValues(Zo)),this.value=f(e,Qo,ue.defaultValues(Qo)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Zo:return 9;case Qo:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Zo:return t===ue.defaultValues(e);case Qo:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new Ne({value:[new I({idBlock:{tagClass:3,tagNumber:0},name:t.blockName||v,value:[new J,new I({idBlock:{tagClass:3,tagNumber:0},value:[new X]})]}),new _({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:1}}),new _({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:2}}),new I({idBlock:{tagClass:3,tagNumber:3},name:t.blockName||v,value:[f0(t.builtInStandardAttributes||{},!1),d0(!0),p0(!0)]}),new I({idBlock:{tagClass:3,tagNumber:4},name:t.blockName||v,value:[me.schema(t.directoryName||{})]}),new I({idBlock:{tagClass:3,tagNumber:5},name:t.blockName||v,value:[new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Ne({value:[new Ym,new Ts,new Qm,new kh,new Zm]})]}),new I({idBlock:{tagClass:3,tagNumber:1},value:[new Ne({value:[new Ym,new Ts,new Qm,new kh,new Zm]})]})]}),new _({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:6}}),new _({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:7}}),new _({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:8}})]})}fromSchema(e){T(e,["blockName","otherName","rfc822Name","dNSName","x400Address","directoryName","ediPartyName","uniformResourceIdentifier","iPAddress","registeredID"]);const t=R(e,e,ue.schema({names:{blockName:"blockName",otherName:"otherName",rfc822Name:"rfc822Name",dNSName:"dNSName",x400Address:"x400Address",directoryName:{names:{blockName:"directoryName"}},ediPartyName:"ediPartyName",uniformResourceIdentifier:"uniformResourceIdentifier",iPAddress:"iPAddress",registeredID:"registeredID"}}));switch(O.assertSchema(t,this.className),this.type=t.result.blockName.idBlock.tagNumber,this.type){case 0:this.value=t.result.blockName;break;case 1:case 2:case 6:{const s=t.result.blockName;s.idBlock.tagClass=1,s.idBlock.tagNumber=22;const a=s.toBER(!1),n=Le(a);O.assert(n,"GeneralName value"),this.value=n.result.valueBlock.value}break;case 3:this.value=t.result.blockName;break;case 4:this.value=new me({schema:t.result.directoryName});break;case 5:this.value=t.result.ediPartyName;break;case 7:this.value=new $({valueHex:t.result.blockName.valueBlock.valueHex});break;case 8:{const s=t.result.blockName;s.idBlock.tagClass=1,s.idBlock.tagNumber=6;const a=s.toBER(!1),n=Le(a);O.assert(n,"GeneralName registeredID"),this.value=n.result.valueBlock.toString()}break}}toSchema(){switch(this.type){case 0:case 3:case 5:return new I({idBlock:{tagClass:3,tagNumber:this.type},value:[this.value]});case 1:case 2:case 6:{const e=new Op({value:this.value});return e.idBlock.tagClass=3,e.idBlock.tagNumber=this.type,e}case 4:return new I({idBlock:{tagClass:3,tagNumber:4},value:[this.value.toSchema()]});case 7:{const e=this.value;return e.idBlock.tagClass=3,e.idBlock.tagNumber=this.type,e}case 8:{const e=new J({value:this.value});return e.idBlock.tagClass=3,e.idBlock.tagNumber=this.type,e}default:return ue.schema()}}toJSON(){const e={type:this.type,value:v};if(typeof this.value=="string")e.value=this.value;else try{e.value=this.value.toJSON()}catch(t){}return e}}ue.CLASS_NAME="GeneralName";const Yo="accessMethod",eu="accessLocation",g0=[Yo,eu];class Nn extends D{constructor(e={}){super(),this.accessMethod=f(e,Yo,Nn.defaultValues(Yo)),this.accessLocation=f(e,eu,Nn.defaultValues(eu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Yo:return v;case eu:return new ue;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.accessMethod||v}),ue.schema(t.accessLocation||{})]})}fromSchema(e){T(e,g0);const t=R(e,e,Nn.schema({names:{accessMethod:Yo,accessLocation:{names:{blockName:eu}}}}));O.assertSchema(t,this.className),this.accessMethod=t.result.accessMethod.valueBlock.toString(),this.accessLocation=new ue({schema:t.result.accessLocation})}toSchema(){return new A({value:[new J({value:this.accessMethod}),this.accessLocation.toSchema()]})}toJSON(){return{accessMethod:this.accessMethod,accessLocation:this.accessLocation.toJSON()}}}Nn.CLASS_NAME="AccessDescription";const rr="seconds",ar="millis",nr="micros";class Dt extends D{constructor(e={}){super(),rr in e&&(this.seconds=f(e,rr,Dt.defaultValues(rr))),ar in e&&(this.millis=f(e,ar,Dt.defaultValues(ar))),nr in e&&(this.micros=f(e,nr,Dt.defaultValues(nr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case rr:case ar:case nr:return 0;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case rr:case ar:case nr:return t===Dt.defaultValues(e);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,optional:!0,value:[new B({optional:!0,name:t.seconds||v}),new _({name:t.millis||v,optional:!0,idBlock:{tagClass:3,tagNumber:0}}),new _({name:t.micros||v,optional:!0,idBlock:{tagClass:3,tagNumber:1}})]})}fromSchema(e){T(e,[rr,ar,nr]);const t=R(e,e,Dt.schema({names:{seconds:rr,millis:ar,micros:nr}}));if(O.assertSchema(t,this.className),"seconds"in t.result&&(this.seconds=t.result.seconds.valueBlock.valueDec),"millis"in t.result){const s=new B({valueHex:t.result.millis.valueBlock.valueHex});this.millis=s.valueBlock.valueDec}if("micros"in t.result){const s=new B({valueHex:t.result.micros.valueBlock.valueHex});this.micros=s.valueBlock.valueDec}}toSchema(){const e=[];if(this.seconds!==void 0&&e.push(new B({value:this.seconds})),this.millis!==void 0){const t=new B({value:this.millis});e.push(new _({idBlock:{tagClass:3,tagNumber:0},valueHex:t.valueBlock.valueHexView}))}if(this.micros!==void 0){const t=new B({value:this.micros});e.push(new _({idBlock:{tagClass:3,tagNumber:1},valueHex:t.valueBlock.valueHexView}))}return new A({value:e})}toJSON(){const e={};return this.seconds!==void 0&&(e.seconds=this.seconds),this.millis!==void 0&&(e.millis=this.millis),this.micros!==void 0&&(e.micros=this.micros),e}}Dt.CLASS_NAME="Accuracy";const gc="algorithmId",jo="algorithmParams",Sg="algorithm",hf="params",w0=[Sg,hf];class V extends D{constructor(e={}){super(),this.algorithmId=f(e,gc,V.defaultValues(gc)),jo in e&&(this.algorithmParams=f(e,jo,V.defaultValues(jo))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case gc:return v;case jo:return new X;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case gc:return t===v;case jo:return t instanceof X;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,optional:t.optional||!1,value:[new J({name:t.algorithmIdentifier||v}),new X({name:t.algorithmParams||v,optional:!0})]})}fromSchema(e){T(e,w0);const t=R(e,e,V.schema({names:{algorithmIdentifier:Sg,algorithmParams:hf}}));O.assertSchema(t,this.className),this.algorithmId=t.result.algorithm.valueBlock.toString(),hf in t.result&&(this.algorithmParams=t.result.params)}toSchema(){const e=[];return e.push(new J({value:this.algorithmId})),this.algorithmParams&&!(this.algorithmParams instanceof X)&&e.push(this.algorithmParams),new A({value:e})}toJSON(){const e={algorithmId:this.algorithmId};return this.algorithmParams&&!(this.algorithmParams instanceof X)&&(e.algorithmParams=this.algorithmParams.toJSON()),e}isEqual(e){return!(e instanceof V)||this.algorithmId!==e.algorithmId?!1:this.algorithmParams?e.algorithmParams?JSON.stringify(this.algorithmParams)===JSON.stringify(e.algorithmParams):!1:!e.algorithmParams}}V.CLASS_NAME="AlgorithmIdentifier";const qn="altNames",y0=[qn];class Co extends D{constructor(e={}){super(),this.altNames=f(e,qn,Co.defaultValues(qn)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case qn:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.altNames||v,value:ue.schema()})]})}fromSchema(e){T(e,y0);const t=R(e,e,Co.schema({names:{altNames:qn}}));O.assertSchema(t,this.className),qn in t.result&&(this.altNames=Array.from(t.result.altNames,s=>new ue({schema:s})))}toSchema(){return new A({value:Array.from(this.altNames,e=>e.toSchema())})}toJSON(){return{altNames:Array.from(this.altNames,e=>e.toJSON())}}}Co.CLASS_NAME="AltName";const Wn="type",Gn="values",v0=[Wn,Gn];class ge extends D{constructor(e={}){super(),this.type=f(e,Wn,ge.defaultValues(Wn)),this.values=f(e,Gn,ge.defaultValues(Gn)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Wn:return v;case Gn:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Wn:return t===v;case Gn:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.type||v}),new Je({name:t.setName||v,value:[new Z({name:t.values||v,value:new X})]})]})}fromSchema(e){T(e,v0);const t=R(e,e,ge.schema({names:{type:Wn,values:Gn}}));O.assertSchema(t,this.className),this.type=t.result.type.valueBlock.toString(),this.values=t.result.values}toSchema(){return new A({value:[new J({value:this.type}),new Je({value:this.values})]})}toJSON(){return{type:this.type,values:Array.from(this.values,e=>e.toJSON())}}}ge.CLASS_NAME="Attribute";const tu="notBeforeTime",su="notAfterTime",b0=[tu,su];class as extends D{constructor(e={}){super(),this.notBeforeTime=f(e,tu,as.defaultValues(tu)),this.notAfterTime=f(e,su,as.defaultValues(su)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case tu:case su:return new Date(0,0,0);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new ke({name:t.notBeforeTime||v}),new ke({name:t.notAfterTime||v})]})}fromSchema(e){T(e,b0);const t=R(e,e,as.schema({names:{notBeforeTime:tu,notAfterTime:su}}));O.assertSchema(t,this.className),this.notBeforeTime=t.result.notBeforeTime.toDate(),this.notAfterTime=t.result.notAfterTime.toDate()}toSchema(){return new A({value:[new ke({valueDate:this.notBeforeTime}),new ke({valueDate:this.notAfterTime})]})}toJSON(){return{notBeforeTime:this.notBeforeTime,notAfterTime:this.notAfterTime}}}as.CLASS_NAME="AttCertValidityPeriod";const $o="names",Zd="generalNames";class qe extends D{constructor(e={}){super(),this.names=f(e,$o,qe.defaultValues($o)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case"names":return[];default:return super.defaultValues(e)}}static schema(e={},t=!1){const s=f(e,$o,{});return new A({optional:t,name:s.blockName||v,value:[new Z({name:s.generalNames||v,value:ue.schema()})]})}fromSchema(e){T(e,[$o,Zd]);const t=R(e,e,qe.schema({names:{blockName:$o,generalNames:Zd}}));O.assertSchema(t,this.className),this.names=Array.from(t.result.generalNames,s=>new ue({schema:s}))}toSchema(){return new A({value:Array.from(this.names,e=>e.toSchema())})}toJSON(){return{names:Array.from(this.names,e=>e.toJSON())}}}qe.CLASS_NAME="GeneralNames";const S0="2.5.29.9",A0="2.5.29.14",N0="2.5.29.15",k0="2.5.29.16",Ag="2.5.29.17",Ng="2.5.29.18",Zf="2.5.29.19",C0="2.5.29.20",E0="2.5.29.27",x0="2.5.29.21",I0="2.5.29.24",kg="2.5.29.28",Cg="2.5.29.29",Eg="2.5.29.30",xg="2.5.29.31",Qf="2.5.29.46",Ig="2.5.29.32",$t="2.5.29.32.0",V0="1.3.6.1.4.1.311.21.10",Vg="2.5.29.33",Yf="2.5.29.35",Bg="2.5.29.36",B0="2.5.29.37",P0="2.5.29.54",ed="1.3.6.1.5.5.7.1.1",O0="1.3.6.1.5.5.7.1.11",D0="1.3.6.1.4.1.11129.2.4.2",T0="1.3.6.1.4.1.311.21.7",R0="1.3.6.1.4.1.311.21.1",L0="1.3.6.1.5.5.7.1.3",td="1.2.840.113549.1.7.1",Pg="1.2.840.113549.1.7.2",Og="1.2.840.113549.1.7.3",Dg="1.2.840.113549.1.7.6",U0="1.2.840.113549.1.9.16.1.4",Qd="1.2.840.113549.1.9.22.1",j0="1.2.840.113549.1.9.22.2",Yd="1.2.840.113549.1.9.22.3",ep="1.2.840.113549.1.9.23.1",$0="1.3.6.1.5.5.7",K0="".concat($0,".48"),qc="".concat(K0,".1.1"),da="keyIdentifier",pa="authorityCertIssuer",ga="authorityCertSerialNumber",H0=[da,pa,ga];class Xr extends D{constructor(e={}){super(),da in e&&(this.keyIdentifier=f(e,da,Xr.defaultValues(da))),pa in e&&(this.authorityCertIssuer=f(e,pa,Xr.defaultValues(pa))),ga in e&&(this.authorityCertSerialNumber=f(e,ga,Xr.defaultValues(ga))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case da:return new $;case pa:return[];case ga:return new B;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new _({name:t.keyIdentifier||v,optional:!0,idBlock:{tagClass:3,tagNumber:0}}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new Z({name:t.authorityCertIssuer||v,value:ue.schema()})]}),new _({name:t.authorityCertSerialNumber||v,optional:!0,idBlock:{tagClass:3,tagNumber:2}})]})}fromSchema(e){T(e,H0);const t=R(e,e,Xr.schema({names:{keyIdentifier:da,authorityCertIssuer:pa,authorityCertSerialNumber:ga}}));O.assertSchema(t,this.className),da in t.result&&(this.keyIdentifier=new $({valueHex:t.result.keyIdentifier.valueBlock.valueHex})),pa in t.result&&(this.authorityCertIssuer=Array.from(t.result.authorityCertIssuer,s=>new ue({schema:s}))),ga in t.result&&(this.authorityCertSerialNumber=new B({valueHex:t.result.authorityCertSerialNumber.valueBlock.valueHex}))}toSchema(){const e=[];return this.keyIdentifier&&e.push(new _({idBlock:{tagClass:3,tagNumber:0},valueHex:this.keyIdentifier.valueBlock.valueHexView})),this.authorityCertIssuer&&e.push(new I({idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.authorityCertIssuer,t=>t.toSchema())})),this.authorityCertSerialNumber&&e.push(new _({idBlock:{tagClass:3,tagNumber:2},valueHex:this.authorityCertSerialNumber.valueBlock.valueHexView})),new A({value:e})}toJSON(){const e={};return this.keyIdentifier&&(e.keyIdentifier=this.keyIdentifier.toJSON()),this.authorityCertIssuer&&(e.authorityCertIssuer=Array.from(this.authorityCertIssuer,t=>t.toJSON())),this.authorityCertSerialNumber&&(e.authorityCertSerialNumber=this.authorityCertSerialNumber.toJSON()),e}}Xr.CLASS_NAME="AuthorityKeyIdentifier";const ca="pathLenConstraint",ha="cA";class kn extends D{constructor(e={}){super(),this.cA=f(e,ha,!1),ca in e&&(this.pathLenConstraint=f(e,ca,0)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ha:return!1;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new ia({optional:!0,name:t.cA||v}),new B({optional:!0,name:t.pathLenConstraint||v})]})}fromSchema(e){T(e,[ha,ca]);const t=R(e,e,kn.schema({names:{cA:ha,pathLenConstraint:ca}}));O.assertSchema(t,this.className),ha in t.result&&(this.cA=t.result.cA.valueBlock.value),ca in t.result&&(t.result.pathLenConstraint.valueBlock.isHexOnly?this.pathLenConstraint=t.result.pathLenConstraint:this.pathLenConstraint=t.result.pathLenConstraint.valueBlock.valueDec)}toSchema(){const e=[];return this.cA!==kn.defaultValues(ha)&&e.push(new ia({value:this.cA})),ca in this&&(this.pathLenConstraint instanceof B?e.push(this.pathLenConstraint):e.push(new B({value:this.pathLenConstraint}))),new A({value:e})}toJSON(){const e={};return this.cA!==kn.defaultValues(ha)&&(e.cA=this.cA),ca in this&&(this.pathLenConstraint instanceof B?e.pathLenConstraint=this.pathLenConstraint.toJSON():e.pathLenConstraint=this.pathLenConstraint),e}}kn.CLASS_NAME="BasicConstraints";const gm="certificateIndex",wm="keyIndex";class tc extends D{constructor(e={}){super(),this.certificateIndex=f(e,gm,tc.defaultValues(gm)),this.keyIndex=f(e,wm,tc.defaultValues(wm)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case gm:case wm:return 0;default:return super.defaultValues(e)}}static schema(){return new B}fromSchema(e){if(e.constructor.blockName()!==B.blockName())throw new Error("Object's schema was not verified against input data for CAVersion");let t=e.valueBlock.valueHex.slice(0);const s=new Uint8Array(t);switch(!0){case t.byteLength<4:{const m=new ArrayBuffer(4);new Uint8Array(m).set(s,4-t.byteLength),t=m.slice(0)}break;case t.byteLength>4:{const m=new ArrayBuffer(4);new Uint8Array(m).set(s.slice(0,4)),t=m.slice(0)}break}const a=t.slice(0,2),n=new Uint8Array(a);let u=n[0];n[0]=n[1],n[1]=u;const i=new Uint16Array(a);this.keyIndex=i[0];const l=t.slice(2),o=new Uint8Array(l);u=o[0],o[0]=o[1],o[1]=u;const c=new Uint16Array(l);this.certificateIndex=c[0]}toSchema(){const e=new ArrayBuffer(2),t=new Uint16Array(e);t[0]=this.certificateIndex;const s=new Uint8Array(e);let a=s[0];s[0]=s[1],s[1]=a;const n=new ArrayBuffer(2),u=new Uint16Array(n);u[0]=this.keyIndex;const i=new Uint8Array(n);return a=i[0],i[0]=i[1],i[1]=a,new B({valueHex:go(n,e)})}toJSON(){return{certificateIndex:this.certificateIndex,keyIndex:this.keyIndex}}}tc.CLASS_NAME="CAVersion";const ru="policyQualifierId",au="qualifier",M0=[ru,au];class Cn extends D{constructor(e={}){super(),this.policyQualifierId=f(e,ru,Cn.defaultValues(ru)),this.qualifier=f(e,au,Cn.defaultValues(au)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ru:return v;case au:return new X;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.policyQualifierId||v}),new X({name:t.qualifier||v})]})}fromSchema(e){T(e,M0);const t=R(e,e,Cn.schema({names:{policyQualifierId:ru,qualifier:au}}));O.assertSchema(t,this.className),this.policyQualifierId=t.result.policyQualifierId.valueBlock.toString(),this.qualifier=t.result.qualifier}toSchema(){return new A({value:[new J({value:this.policyQualifierId}),this.qualifier]})}toJSON(){return{policyQualifierId:this.policyQualifierId,qualifier:this.qualifier.toJSON()}}}Cn.CLASS_NAME="PolicyQualifierInfo";const nu="policyIdentifier",wa="policyQualifiers",F0=[nu,wa];class En extends D{constructor(e={}){super(),this.policyIdentifier=f(e,nu,En.defaultValues(nu)),wa in e&&(this.policyQualifiers=f(e,wa,En.defaultValues(wa))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case nu:return v;case wa:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.policyIdentifier||v}),new A({optional:!0,value:[new Z({name:t.policyQualifiers||v,value:Cn.schema()})]})]})}fromSchema(e){T(e,F0);const t=R(e,e,En.schema({names:{policyIdentifier:nu,policyQualifiers:wa}}));O.assertSchema(t,this.className),this.policyIdentifier=t.result.policyIdentifier.valueBlock.toString(),wa in t.result&&(this.policyQualifiers=Array.from(t.result.policyQualifiers,s=>new Cn({schema:s})))}toSchema(){const e=[];return e.push(new J({value:this.policyIdentifier})),this.policyQualifiers&&e.push(new A({value:Array.from(this.policyQualifiers,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={policyIdentifier:this.policyIdentifier};return this.policyQualifiers&&(e.policyQualifiers=Array.from(this.policyQualifiers,t=>t.toJSON())),e}}En.CLASS_NAME="PolicyInformation";const iu="certificatePolicies",J0=[iu];class Eo extends D{constructor(e={}){super(),this.certificatePolicies=f(e,iu,Eo.defaultValues(iu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case iu:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.certificatePolicies||v,value:En.schema()})]})}fromSchema(e){T(e,J0);const t=R(e,e,Eo.schema({names:{certificatePolicies:iu}}));O.assertSchema(t,this.className),this.certificatePolicies=Array.from(t.result.certificatePolicies,s=>new En({schema:s}))}toSchema(){return new A({value:Array.from(this.certificatePolicies,e=>e.toSchema())})}toJSON(){return{certificatePolicies:Array.from(this.certificatePolicies,e=>e.toJSON())}}}Eo.CLASS_NAME="CertificatePolicies";const ou="templateID",vs="templateMajorVersion",bs="templateMinorVersion",q0=[ou,vs,bs];class fo extends D{constructor(e={}){super(),this.templateID=f(e,ou,fo.defaultValues(ou)),vs in e&&(this.templateMajorVersion=f(e,vs,fo.defaultValues(vs))),bs in e&&(this.templateMinorVersion=f(e,bs,fo.defaultValues(bs))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ou:return v;case vs:case bs:return 0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.templateID||v}),new B({name:t.templateMajorVersion||v,optional:!0}),new B({name:t.templateMinorVersion||v,optional:!0})]})}fromSchema(e){T(e,q0);const t=R(e,e,fo.schema({names:{templateID:ou,templateMajorVersion:vs,templateMinorVersion:bs}}));O.assertSchema(t,this.className),this.templateID=t.result.templateID.valueBlock.toString(),vs in t.result&&(this.templateMajorVersion=t.result.templateMajorVersion.valueBlock.valueDec),bs in t.result&&(this.templateMinorVersion=t.result.templateMinorVersion.valueBlock.valueDec)}toSchema(){const e=[];return e.push(new J({value:this.templateID})),vs in this&&e.push(new B({value:this.templateMajorVersion})),bs in this&&e.push(new B({value:this.templateMinorVersion})),new A({value:e})}toJSON(){const e={templateID:this.templateID};return vs in this&&(e.templateMajorVersion=this.templateMajorVersion),bs in this&&(e.templateMinorVersion=this.templateMinorVersion),e}}const ya="distributionPoint",Tg="distributionPointNames",va="reasons",ba="cRLIssuer",Rg="cRLIssuerNames",W0=[ya,Tg,va,ba,Rg];class Zr extends D{constructor(e={}){super(),ya in e&&(this.distributionPoint=f(e,ya,Zr.defaultValues(ya))),va in e&&(this.reasons=f(e,va,Zr.defaultValues(va))),ba in e&&(this.cRLIssuer=f(e,ba,Zr.defaultValues(ba))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ya:return[];case va:return new re;case ba:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Ne({value:[new I({name:t.distributionPoint||v,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Z({name:t.distributionPointNames||v,value:ue.schema()})]}),new I({name:t.distributionPoint||v,optional:!0,idBlock:{tagClass:3,tagNumber:1},value:me.schema().valueBlock.value})]})]}),new _({name:t.reasons||v,optional:!0,idBlock:{tagClass:3,tagNumber:1}}),new I({name:t.cRLIssuer||v,optional:!0,idBlock:{tagClass:3,tagNumber:2},value:[new Z({name:t.cRLIssuerNames||v,value:ue.schema()})]})]})}fromSchema(e){T(e,W0);const t=R(e,e,Zr.schema({names:{distributionPoint:ya,distributionPointNames:Tg,reasons:va,cRLIssuer:ba,cRLIssuerNames:Rg}}));O.assertSchema(t,this.className),ya in t.result&&(t.result.distributionPoint.idBlock.tagNumber===0&&(this.distributionPoint=Array.from(t.result.distributionPointNames,s=>new ue({schema:s}))),t.result.distributionPoint.idBlock.tagNumber===1&&(this.distributionPoint=new me({schema:new A({value:t.result.distributionPoint.valueBlock.value})}))),va in t.result&&(this.reasons=new re({valueHex:t.result.reasons.valueBlock.valueHex})),ba in t.result&&(this.cRLIssuer=Array.from(t.result.cRLIssuerNames,s=>new ue({schema:s})))}toSchema(){const e=[];if(this.distributionPoint){let t;this.distributionPoint instanceof Array?t=new I({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.distributionPoint,s=>s.toSchema())}):t=new I({idBlock:{tagClass:3,tagNumber:1},value:[this.distributionPoint.toSchema()]}),e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[t]}))}return this.reasons&&e.push(new _({idBlock:{tagClass:3,tagNumber:1},valueHex:this.reasons.valueBlock.valueHexView})),this.cRLIssuer&&e.push(new I({idBlock:{tagClass:3,tagNumber:2},value:Array.from(this.cRLIssuer,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={};return this.distributionPoint&&(this.distributionPoint instanceof Array?e.distributionPoint=Array.from(this.distributionPoint,t=>t.toJSON()):e.distributionPoint=this.distributionPoint.toJSON()),this.reasons&&(e.reasons=this.reasons.toJSON()),this.cRLIssuer&&(e.cRLIssuer=Array.from(this.cRLIssuer,t=>t.toJSON())),e}}Zr.CLASS_NAME="DistributionPoint";const uu="distributionPoints",G0=[uu];class xo extends D{constructor(e={}){super(),this.distributionPoints=f(e,uu,xo.defaultValues(uu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case uu:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.distributionPoints||v,value:Zr.schema()})]})}fromSchema(e){T(e,G0);const t=R(e,e,xo.schema({names:{distributionPoints:uu}}));O.assertSchema(t,this.className),this.distributionPoints=Array.from(t.result.distributionPoints,s=>new Zr({schema:s}))}toSchema(){return new A({value:Array.from(this.distributionPoints,e=>e.toSchema())})}toJSON(){return{distributionPoints:Array.from(this.distributionPoints,e=>e.toJSON())}}}xo.CLASS_NAME="CRLDistributionPoints";const lu="keyPurposes",z0=[lu];class sc extends D{constructor(e={}){super(),this.keyPurposes=f(e,lu,sc.defaultValues(lu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case lu:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.keyPurposes||v,value:new J})]})}fromSchema(e){T(e,z0);const t=R(e,e,sc.schema({names:{keyPurposes:lu}}));O.assertSchema(t,this.className),this.keyPurposes=Array.from(t.result.keyPurposes,s=>s.valueBlock.toString())}toSchema(){return new A({value:Array.from(this.keyPurposes,e=>new J({value:e}))})}toJSON(){return{keyPurposes:Array.from(this.keyPurposes)}}}sc.CLASS_NAME="ExtKeyUsage";const Ko="accessDescriptions";class Io extends D{constructor(e={}){super(),this.accessDescriptions=f(e,Ko,Io.defaultValues(Ko)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ko:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.accessDescriptions||v,value:Nn.schema()})]})}fromSchema(e){T(e,[Ko]);const t=R(e,e,Io.schema({names:{accessDescriptions:Ko}}));O.assertSchema(t,this.className),this.accessDescriptions=Array.from(t.result.accessDescriptions,s=>new Nn({schema:s}))}toSchema(){return new A({value:Array.from(this.accessDescriptions,e=>e.toSchema())})}toJSON(){return{accessDescriptions:Array.from(this.accessDescriptions,e=>e.toJSON())}}}Io.CLASS_NAME="InfoAccess";const Sa="distributionPoint",Lg="distributionPointNames",ir="onlyContainsUserCerts",or="onlyContainsCACerts",ur="onlySomeReasons",lr="indirectCRL",cr="onlyContainsAttributeCerts",_0=[Sa,Lg,ir,or,ur,lr,cr];class Ye extends D{constructor(e={}){super(),Sa in e&&(this.distributionPoint=f(e,Sa,Ye.defaultValues(Sa))),this.onlyContainsUserCerts=f(e,ir,Ye.defaultValues(ir)),this.onlyContainsCACerts=f(e,or,Ye.defaultValues(or)),ur in e&&(this.onlySomeReasons=f(e,ur,Ye.defaultValues(ur))),this.indirectCRL=f(e,lr,Ye.defaultValues(lr)),this.onlyContainsAttributeCerts=f(e,cr,Ye.defaultValues(cr)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Sa:return[];case ir:return!1;case or:return!1;case ur:return 0;case lr:return!1;case cr:return!1;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Ne({value:[new I({name:t.distributionPoint||v,idBlock:{tagClass:3,tagNumber:0},value:[new Z({name:t.distributionPointNames||v,value:ue.schema()})]}),new I({name:t.distributionPoint||v,idBlock:{tagClass:3,tagNumber:1},value:me.schema().valueBlock.value})]})]}),new _({name:t.onlyContainsUserCerts||v,optional:!0,idBlock:{tagClass:3,tagNumber:1}}),new _({name:t.onlyContainsCACerts||v,optional:!0,idBlock:{tagClass:3,tagNumber:2}}),new _({name:t.onlySomeReasons||v,optional:!0,idBlock:{tagClass:3,tagNumber:3}}),new _({name:t.indirectCRL||v,optional:!0,idBlock:{tagClass:3,tagNumber:4}}),new _({name:t.onlyContainsAttributeCerts||v,optional:!0,idBlock:{tagClass:3,tagNumber:5}})]})}fromSchema(e){T(e,_0);const t=R(e,e,Ye.schema({names:{distributionPoint:Sa,distributionPointNames:Lg,onlyContainsUserCerts:ir,onlyContainsCACerts:or,onlySomeReasons:ur,indirectCRL:lr,onlyContainsAttributeCerts:cr}}));if(O.assertSchema(t,this.className),Sa in t.result)switch(!0){case t.result.distributionPoint.idBlock.tagNumber===0:this.distributionPoint=Array.from(t.result.distributionPointNames,s=>new ue({schema:s}));break;case t.result.distributionPoint.idBlock.tagNumber===1:this.distributionPoint=new me({schema:new A({value:t.result.distributionPoint.valueBlock.value})});break;default:throw new Error("Unknown tagNumber for distributionPoint: {$asn1.result.distributionPoint.idBlock.tagNumber}")}if(ir in t.result){const s=new Uint8Array(t.result.onlyContainsUserCerts.valueBlock.valueHex);this.onlyContainsUserCerts=s[0]!==0}if(or in t.result){const s=new Uint8Array(t.result.onlyContainsCACerts.valueBlock.valueHex);this.onlyContainsCACerts=s[0]!==0}if(ur in t.result){const s=new Uint8Array(t.result.onlySomeReasons.valueBlock.valueHex);this.onlySomeReasons=s[0]}if(lr in t.result){const s=new Uint8Array(t.result.indirectCRL.valueBlock.valueHex);this.indirectCRL=s[0]!==0}if(cr in t.result){const s=new Uint8Array(t.result.onlyContainsAttributeCerts.valueBlock.valueHex);this.onlyContainsAttributeCerts=s[0]!==0}}toSchema(){const e=[];if(this.distributionPoint){let t;this.distributionPoint instanceof Array?t=new I({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.distributionPoint,s=>s.toSchema())}):(t=this.distributionPoint.toSchema(),t.idBlock.tagClass=3,t.idBlock.tagNumber=1),e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[t]}))}if(this.onlyContainsUserCerts!==Ye.defaultValues(ir)&&e.push(new _({idBlock:{tagClass:3,tagNumber:1},valueHex:new Uint8Array([255]).buffer})),this.onlyContainsCACerts!==Ye.defaultValues(or)&&e.push(new _({idBlock:{tagClass:3,tagNumber:2},valueHex:new Uint8Array([255]).buffer})),this.onlySomeReasons!==void 0){const t=new ArrayBuffer(1),s=new Uint8Array(t);s[0]=this.onlySomeReasons,e.push(new _({idBlock:{tagClass:3,tagNumber:3},valueHex:t}))}return this.indirectCRL!==Ye.defaultValues(lr)&&e.push(new _({idBlock:{tagClass:3,tagNumber:4},valueHex:new Uint8Array([255]).buffer})),this.onlyContainsAttributeCerts!==Ye.defaultValues(cr)&&e.push(new _({idBlock:{tagClass:3,tagNumber:5},valueHex:new Uint8Array([255]).buffer})),new A({value:e})}toJSON(){const e={};return this.distributionPoint&&(this.distributionPoint instanceof Array?e.distributionPoint=Array.from(this.distributionPoint,t=>t.toJSON()):e.distributionPoint=this.distributionPoint.toJSON()),this.onlyContainsUserCerts!==Ye.defaultValues(ir)&&(e.onlyContainsUserCerts=this.onlyContainsUserCerts),this.onlyContainsCACerts!==Ye.defaultValues(or)&&(e.onlyContainsCACerts=this.onlyContainsCACerts),ur in this&&(e.onlySomeReasons=this.onlySomeReasons),this.indirectCRL!==Ye.defaultValues(lr)&&(e.indirectCRL=this.indirectCRL),this.onlyContainsAttributeCerts!==Ye.defaultValues(cr)&&(e.onlyContainsAttributeCerts=this.onlyContainsAttributeCerts),e}}Ye.CLASS_NAME="IssuingDistributionPoint";const cu="base",zn="minimum",hr="maximum",X0=[cu,zn,hr];class fs extends D{constructor(e={}){super(),this.base=f(e,cu,fs.defaultValues(cu)),this.minimum=f(e,zn,fs.defaultValues(zn)),hr in e&&(this.maximum=f(e,hr,fs.defaultValues(hr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case cu:return new ue;case zn:return 0;case hr:return 0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[ue.schema(t.base||{}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new B({name:t.minimum||v})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new B({name:t.maximum||v})]})]})}fromSchema(e){T(e,X0);const t=R(e,e,fs.schema({names:{base:{names:{blockName:cu}},minimum:zn,maximum:hr}}));O.assertSchema(t,this.className),this.base=new ue({schema:t.result.base}),zn in t.result&&(t.result.minimum.valueBlock.isHexOnly?this.minimum=t.result.minimum:this.minimum=t.result.minimum.valueBlock.valueDec),hr in t.result&&(t.result.maximum.valueBlock.isHexOnly?this.maximum=t.result.maximum:this.maximum=t.result.maximum.valueBlock.valueDec)}toSchema(){const e=[];if(e.push(this.base.toSchema()),this.minimum!==0){let t=0;this.minimum instanceof B?t=this.minimum:t=new B({value:this.minimum}),e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[t]}))}if(hr in this){let t=0;this.maximum instanceof B?t=this.maximum:t=new B({value:this.maximum}),e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[t]}))}return new A({value:e})}toJSON(){const e={base:this.base.toJSON()};return this.minimum!==0&&(typeof this.minimum=="number"?e.minimum=this.minimum:e.minimum=this.minimum.toJSON()),this.maximum!==void 0&&(typeof this.maximum=="number"?e.maximum=this.maximum:e.maximum=this.maximum.toJSON()),e}}fs.CLASS_NAME="GeneralSubtree";const Aa="permittedSubtrees",Na="excludedSubtrees",Z0=[Aa,Na];class yo extends D{constructor(e={}){super(),Aa in e&&(this.permittedSubtrees=f(e,Aa,yo.defaultValues(Aa))),Na in e&&(this.excludedSubtrees=f(e,Na,yo.defaultValues(Na))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Aa:case Na:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Z({name:t.permittedSubtrees||v,value:fs.schema()})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new Z({name:t.excludedSubtrees||v,value:fs.schema()})]})]})}fromSchema(e){T(e,Z0);const t=R(e,e,yo.schema({names:{permittedSubtrees:Aa,excludedSubtrees:Na}}));O.assertSchema(t,this.className),Aa in t.result&&(this.permittedSubtrees=Array.from(t.result.permittedSubtrees,s=>new fs({schema:s}))),Na in t.result&&(this.excludedSubtrees=Array.from(t.result.excludedSubtrees,s=>new fs({schema:s})))}toSchema(){const e=[];return this.permittedSubtrees&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.permittedSubtrees,t=>t.toSchema())})),this.excludedSubtrees&&e.push(new I({idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.excludedSubtrees,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={};return this.permittedSubtrees&&(e.permittedSubtrees=Array.from(this.permittedSubtrees,t=>t.toJSON())),this.excludedSubtrees&&(e.excludedSubtrees=Array.from(this.excludedSubtrees,t=>t.toJSON())),e}}yo.CLASS_NAME="NameConstraints";const Ss="requireExplicitPolicy",As="inhibitPolicyMapping",Q0=[Ss,As];class vo extends D{constructor(e={}){super(),Ss in e&&(this.requireExplicitPolicy=f(e,Ss,vo.defaultValues(Ss))),As in e&&(this.inhibitPolicyMapping=f(e,As,vo.defaultValues(As))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ss:return 0;case As:return 0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new _({name:t.requireExplicitPolicy||v,optional:!0,idBlock:{tagClass:3,tagNumber:0}}),new _({name:t.inhibitPolicyMapping||v,optional:!0,idBlock:{tagClass:3,tagNumber:1}})]})}fromSchema(e){T(e,Q0);const t=R(e,e,vo.schema({names:{requireExplicitPolicy:Ss,inhibitPolicyMapping:As}}));if(O.assertSchema(t,this.className),Ss in t.result){const s=t.result.requireExplicitPolicy;s.idBlock.tagClass=1,s.idBlock.tagNumber=2;const a=s.toBER(!1),n=Le(a);O.assert(n,"Integer"),this.requireExplicitPolicy=n.result.valueBlock.valueDec}if(As in t.result){const s=t.result.inhibitPolicyMapping;s.idBlock.tagClass=1,s.idBlock.tagNumber=2;const a=s.toBER(!1),n=Le(a);O.assert(n,"Integer"),this.inhibitPolicyMapping=n.result.valueBlock.valueDec}}toSchema(){const e=[];if(Ss in this){const t=new B({value:this.requireExplicitPolicy});t.idBlock.tagClass=3,t.idBlock.tagNumber=0,e.push(t)}if(As in this){const t=new B({value:this.inhibitPolicyMapping});t.idBlock.tagClass=3,t.idBlock.tagNumber=1,e.push(t)}return new A({value:e})}toJSON(){const e={};return Ss in this&&(e.requireExplicitPolicy=this.requireExplicitPolicy),As in this&&(e.inhibitPolicyMapping=this.inhibitPolicyMapping),e}}vo.CLASS_NAME="PolicyConstraints";const hu="issuerDomainPolicy",mu="subjectDomainPolicy",Y0=[hu,mu];class xn extends D{constructor(e={}){super(),this.issuerDomainPolicy=f(e,hu,xn.defaultValues(hu)),this.subjectDomainPolicy=f(e,mu,xn.defaultValues(mu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case hu:return v;case mu:return v;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.issuerDomainPolicy||v}),new J({name:t.subjectDomainPolicy||v})]})}fromSchema(e){T(e,Y0);const t=R(e,e,xn.schema({names:{issuerDomainPolicy:hu,subjectDomainPolicy:mu}}));O.assertSchema(t,this.className),this.issuerDomainPolicy=t.result.issuerDomainPolicy.valueBlock.toString(),this.subjectDomainPolicy=t.result.subjectDomainPolicy.valueBlock.toString()}toSchema(){return new A({value:[new J({value:this.issuerDomainPolicy}),new J({value:this.subjectDomainPolicy})]})}toJSON(){return{issuerDomainPolicy:this.issuerDomainPolicy,subjectDomainPolicy:this.subjectDomainPolicy}}}xn.CLASS_NAME="PolicyMapping";const fu="mappings",e1=[fu];class rc extends D{constructor(e={}){super(),this.mappings=f(e,fu,rc.defaultValues(fu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case fu:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.mappings||v,value:xn.schema()})]})}fromSchema(e){T(e,e1);const t=R(e,e,rc.schema({names:{mappings:fu}}));O.assertSchema(t,this.className),this.mappings=Array.from(t.result.mappings,s=>new xn({schema:s}))}toSchema(){return new A({value:Array.from(this.mappings,e=>e.toSchema())})}toJSON(){return{mappings:Array.from(this.mappings,e=>e.toJSON())}}}rc.CLASS_NAME="PolicyMappings";const mr="notBefore",fr="notAfter",t1=[mr,fr];class bo extends D{constructor(e={}){super(),mr in e&&(this.notBefore=f(e,mr,bo.defaultValues(mr))),fr in e&&(this.notAfter=f(e,fr,bo.defaultValues(fr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case mr:return new Date;case fr:return new Date;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new _({name:t.notBefore||v,optional:!0,idBlock:{tagClass:3,tagNumber:0}}),new _({name:t.notAfter||v,optional:!0,idBlock:{tagClass:3,tagNumber:1}})]})}fromSchema(e){T(e,t1);const t=R(e,e,bo.schema({names:{notBefore:mr,notAfter:fr}}));if(O.assertSchema(t,this.className),mr in t.result){const s=new ke;s.fromBuffer(t.result.notBefore.valueBlock.valueHex),this.notBefore=s.toDate()}if(fr in t.result){const s=new ke({valueHex:t.result.notAfter.valueBlock.valueHex});s.fromBuffer(t.result.notAfter.valueBlock.valueHex),this.notAfter=s.toDate()}}toSchema(){const e=[];return mr in this&&e.push(new _({idBlock:{tagClass:3,tagNumber:0},valueHex:new ke({valueDate:this.notBefore}).valueBlock.valueHexView})),fr in this&&e.push(new _({idBlock:{tagClass:3,tagNumber:1},valueHex:new ke({valueDate:this.notAfter}).valueBlock.valueHexView})),new A({value:e})}toJSON(){const e={};return this.notBefore&&(e.notBefore=this.notBefore),this.notAfter&&(e.notAfter=this.notAfter),e}}bo.CLASS_NAME="PrivateKeyUsagePeriod";const _n="id",Ns="type",Xn="values",s1=[_n,Ns],r1=[Xn];class In extends D{constructor(e={}){super(),this.id=f(e,_n,In.defaultValues(_n)),Ns in e&&(this.type=f(e,Ns,In.defaultValues(Ns))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case _n:return v;case Ns:return new Fe;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case _n:return t===v;case Ns:return t instanceof Fe;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.id||v}),new X({name:t.type||v,optional:!0})]})}fromSchema(e){T(e,s1);const t=R(e,e,In.schema({names:{id:_n,type:Ns}}));O.assertSchema(t,this.className),this.id=t.result.id.valueBlock.toString(),Ns in t.result&&(this.type=t.result.type)}toSchema(){const e=[new J({value:this.id})];return Ns in this&&e.push(this.type),new A({value:e})}toJSON(){const e={id:this.id};return this.type&&(e.type=this.type.toJSON()),e}}In.CLASS_NAME="QCStatement";class ac extends D{constructor(e={}){super(),this.values=f(e,Xn,ac.defaultValues(Xn)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Xn:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Xn:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.values||v,value:In.schema(t.value||{})})]})}fromSchema(e){T(e,r1);const t=R(e,e,ac.schema({names:{values:Xn}}));O.assertSchema(t,this.className),this.values=Array.from(t.result.values,s=>new In({schema:s}))}toSchema(){return new A({value:Array.from(this.values,e=>e.toSchema())})}toJSON(){return{values:Array.from(this.values,e=>e.toJSON())}}}ac.CLASS_NAME="QCStatements";var ma;class sa{static register(e,t,s){this.namedCurves[e.toLowerCase()]=this.namedCurves[t]={name:e,id:t,size:s}}static find(e){return this.namedCurves[e.toLowerCase()]||null}}ma=sa,sa.namedCurves={},ma.register("P-256","1.2.840.10045.3.1.7",32),ma.register("P-384","1.3.132.0.34",48),ma.register("P-521","1.3.132.0.35",66),ma.register("brainpoolP256r1","1.3.36.3.3.2.8.1.1.7",32),ma.register("brainpoolP384r1","1.3.36.3.3.2.8.1.1.11",48),ma.register("brainpoolP512r1","1.3.36.3.3.2.8.1.1.13",64);const wc="x",yc="y",vc="namedCurve";class At extends D{constructor(e={}){super(),this.x=f(e,wc,At.defaultValues(wc)),this.y=f(e,yc,At.defaultValues(yc)),this.namedCurve=f(e,vc,At.defaultValues(vc)),e.json&&this.fromJSON(e.json),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case wc:case yc:return Ue;case vc:return v;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case wc:case yc:return t instanceof ArrayBuffer&&Zl(t,At.defaultValues(e));case vc:return typeof t=="string"&&t===At.defaultValues(e);default:return super.defaultValues(e)}}static schema(){return new Nh}fromSchema(e){const t=pe.toUint8Array(e);if(t[0]!==4)throw new Error("Object's schema was not verified against input data for ECPublicKey");const s=sa.find(this.namedCurve);if(!s)throw new Error("Incorrect curve OID: ".concat(this.namedCurve));const a=s.size;if(t.byteLength!==a*2+1)throw new Error("Object's schema was not verified against input data for ECPublicKey");this.namedCurve=s.name,this.x=t.slice(1,a+1).buffer,this.y=t.slice(1+a,a*2+1).buffer}toSchema(){return new Nh({data:go(new Uint8Array([4]).buffer,this.x,this.y)})}toJSON(){const e=sa.find(this.namedCurve);return{crv:e?e.name:this.namedCurve,x:_m(Ah(this.x),!0,!0,!1),y:_m(Ah(this.y),!0,!0,!1)}}fromJSON(e){ne.assert("json",e,"crv","x","y");let t=0;const s=sa.find(e.crv);s&&(this.namedCurve=s.id,t=s.size);const a=ko(Ql(e.x,!0));if(a.byteLengthnew Rs({schema:s})))}toSchema(){const e=[];return e.push(new B({value:this.version})),e.push(this.modulus.convertToDER()),e.push(this.publicExponent),e.push(this.privateExponent.convertToDER()),e.push(this.prime1.convertToDER()),e.push(this.prime2.convertToDER()),e.push(this.exponent1.convertToDER()),e.push(this.exponent2.convertToDER()),e.push(this.coefficient.convertToDER()),this.otherPrimeInfos&&e.push(new A({value:Array.from(this.otherPrimeInfos,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={n:ce.ToBase64Url(this.modulus.valueBlock.valueHexView),e:ce.ToBase64Url(this.publicExponent.valueBlock.valueHexView),d:ce.ToBase64Url(this.privateExponent.valueBlock.valueHexView),p:ce.ToBase64Url(this.prime1.valueBlock.valueHexView),q:ce.ToBase64Url(this.prime2.valueBlock.valueHexView),dp:ce.ToBase64Url(this.exponent1.valueBlock.valueHexView),dq:ce.ToBase64Url(this.exponent2.valueBlock.valueHexView),qi:ce.ToBase64Url(this.coefficient.valueBlock.valueHexView)};return this.otherPrimeInfos&&(e.oth=Array.from(this.otherPrimeInfos,t=>t.toJSON())),e}fromJSON(e){ne.assert("json",e,"n","e","d","p","q","dp","dq","qi"),this.modulus=new B({valueHex:ce.FromBase64Url(e.n)}),this.publicExponent=new B({valueHex:ce.FromBase64Url(e.e)}),this.privateExponent=new B({valueHex:ce.FromBase64Url(e.d)}),this.prime1=new B({valueHex:ce.FromBase64Url(e.p)}),this.prime2=new B({valueHex:ce.FromBase64Url(e.q)}),this.exponent1=new B({valueHex:ce.FromBase64Url(e.dp)}),this.exponent2=new B({valueHex:ce.FromBase64Url(e.dq)}),this.coefficient=new B({valueHex:ce.FromBase64Url(e.qi)}),e.oth&&(this.otherPrimeInfos=Array.from(e.oth,t=>new Rs({json:t})))}}gt.CLASS_NAME="RSAPrivateKey";const Bu="version",Pu="privateKeyAlgorithm",Ou="privateKey",Ca="attributes",bc="parsedKey",l1=[Bu,Pu,Ou,Ca];class Ft extends D{constructor(e={}){super(),this.version=f(e,Bu,Ft.defaultValues(Bu)),this.privateKeyAlgorithm=f(e,Pu,Ft.defaultValues(Pu)),this.privateKey=f(e,Ou,Ft.defaultValues(Ou)),Ca in e&&(this.attributes=f(e,Ca,Ft.defaultValues(Ca))),bc in e&&(this.parsedKey=f(e,bc,Ft.defaultValues(bc))),e.json&&this.fromJSON(e.json),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Bu:return 0;case Pu:return new V;case Ou:return new $;case Ca:return[];case bc:return{};default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),V.schema(t.privateKeyAlgorithm||{}),new $({name:t.privateKey||v}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Z({name:t.attributes||v,value:ge.schema()})]})]})}fromSchema(e){T(e,l1);const t=R(e,e,Ft.schema({names:{version:Bu,privateKeyAlgorithm:{names:{blockName:Pu}},privateKey:Ou,attributes:Ca}}));switch(O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.privateKeyAlgorithm=new V({schema:t.result.privateKeyAlgorithm}),this.privateKey=t.result.privateKey,Ca in t.result&&(this.attributes=Array.from(t.result.attributes,s=>new ge({schema:s}))),this.privateKeyAlgorithm.algorithmId){case"1.2.840.113549.1.1.1":{const s=Le(this.privateKey.valueBlock.valueHexView);s.offset!==-1&&(this.parsedKey=new gt({schema:s.result}))}break;case"1.2.840.10045.2.1":if("algorithmParams"in this.privateKeyAlgorithm&&this.privateKeyAlgorithm.algorithmParams instanceof J){const s=Le(this.privateKey.valueBlock.valueHexView);s.offset!==-1&&(this.parsedKey=new Ht({namedCurve:this.privateKeyAlgorithm.algorithmParams.valueBlock.toString(),schema:s.result}))}break}}toSchema(){const e=[new B({value:this.version}),this.privateKeyAlgorithm.toSchema(),this.privateKey];return this.attributes&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.attributes,t=>t.toSchema())})),new A({value:e})}toJSON(){if(!this.parsedKey){const s={version:this.version,privateKeyAlgorithm:this.privateKeyAlgorithm.toJSON(),privateKey:this.privateKey.toJSON()};return this.attributes&&(s.attributes=Array.from(this.attributes,a=>a.toJSON())),s}const e={};switch(this.privateKeyAlgorithm.algorithmId){case"1.2.840.10045.2.1":e.kty="EC";break;case"1.2.840.113549.1.1.1":e.kty="RSA";break}const t=this.parsedKey.toJSON();return Object.assign(e,t),e}fromJSON(e){if("kty"in e){switch(e.kty.toUpperCase()){case"EC":this.parsedKey=new Ht({json:e}),this.privateKeyAlgorithm=new V({algorithmId:"1.2.840.10045.2.1",algorithmParams:new J({value:this.parsedKey.namedCurve})});break;case"RSA":this.parsedKey=new gt({json:e}),this.privateKeyAlgorithm=new V({algorithmId:"1.2.840.113549.1.1.1",algorithmParams:new Fe});break;default:throw new Error('Invalid value for "kty" parameter: '.concat(e.kty))}this.privateKey=new $({valueHex:this.parsedKey.toSchema().toBER(!1)})}}}Ft.CLASS_NAME="PrivateKeyInfo";const Yn="contentType",ei="contentEncryptionAlgorithm",Ea="encryptedContent",c1=[Yn,ei,Ea],tp=1024;class Oe extends D{constructor(e={}){if(super(),this.contentType=f(e,Yn,Oe.defaultValues(Yn)),this.contentEncryptionAlgorithm=f(e,ei,Oe.defaultValues(ei)),Ea in e&&e.encryptedContent&&(this.encryptedContent=e.encryptedContent,this.encryptedContent.idBlock.tagClass===1&&this.encryptedContent.idBlock.tagNumber===4&&this.encryptedContent.idBlock.isConstructed===!1&&!e.disableSplit)){const t=new $({idBlock:{isConstructed:!0},isConstructed:!0});let s=0;const a=this.encryptedContent.valueBlock.valueHexView.slice().buffer;let n=a.byteLength;for(;n>0;){const u=new Uint8Array(a,s,s+tp>a.byteLength?a.byteLength-s:tp),i=new ArrayBuffer(u.length),l=new Uint8Array(i);for(let o=0;ob!==l[N])&&(o=String.fromCharCode(...l));const c=new Uint8Array(o.length*2+2),m=new DataView(c.buffer);for(let b=0;bp[N%p.length]),w=new Uint8Array(u*Math.ceil(c.length/u)).map((b,N)=>c[N%c.length]);let y=new Uint8Array(d.length+w.length);y.set(d),y.set(w,d.length);const k=Math.ceil((e>>3)/n),g=[];for(let b=0;bN[P%N.length]),E=Math.ceil(p.length/u)+Math.ceil(c.length/u),x=[];for(let C=0;C=0;L--)K>>=8,K+=S[L]+(P[L]||0),P[L]=K&255;x.push(...P)}y=new Uint8Array(x),g.push(...N)}return new Uint8Array(g.slice(0,e>>3)).buffer}function Ug(r){const e=typeof r=="string"?{name:r}:r;return"hash"in e?os(it({},e),{hash:Ug(e.hash)}):e}class nc extends d1{async importKey(e,t,s,a,n){var u,i,l,o,c,m;let h={};const p=Ug(s);switch(e.toLowerCase()){case"raw":return this.subtle.importKey("raw",t,s,a,n);case"spki":{const d=Le(pe.toArrayBuffer(t));O.assert(d,"keyData");const w=new Ct;try{w.fromSchema(d.result)}catch(y){throw new he("Incorrect keyData")}switch(p.name.toUpperCase()){case"RSA-PSS":{if(!p.hash)throw new ne("hash","algorithm.hash","Incorrect hash algorithm: Hash algorithm is missed");switch(p.hash.name.toUpperCase()){case"SHA-1":h.alg="PS1";break;case"SHA-256":h.alg="PS256";break;case"SHA-384":h.alg="PS384";break;case"SHA-512":h.alg="PS512";break;default:throw new Error("Incorrect hash algorithm: ".concat(p.hash.name.toUpperCase()))}}case"RSASSA-PKCS1-V1_5":{if(n=["verify"],h.kty="RSA",h.ext=a,h.key_ops=n,w.algorithm.algorithmId!=="1.2.840.113549.1.1.1")throw new Error("Incorrect public key algorithm: ".concat(w.algorithm.algorithmId));if(!h.alg){if(!p.hash)throw new ne("hash","algorithm.hash","Incorrect hash algorithm: Hash algorithm is missed");switch(p.hash.name.toUpperCase()){case"SHA-1":h.alg="RS1";break;case"SHA-256":h.alg="RS256";break;case"SHA-384":h.alg="RS384";break;case"SHA-512":h.alg="RS512";break;default:throw new Error("Incorrect hash algorithm: ".concat(p.hash.name.toUpperCase()))}}const y=w.toJSON();Object.assign(h,y)}break;case"ECDSA":n=["verify"];case"ECDH":{if(h={kty:"EC",ext:a,key_ops:n},w.algorithm.algorithmId!=="1.2.840.10045.2.1")throw new Error("Incorrect public key algorithm: ".concat(w.algorithm.algorithmId));const y=w.toJSON();Object.assign(h,y)}break;case"RSA-OAEP":{if(h.kty="RSA",h.ext=a,h.key_ops=n,this.name.toLowerCase()==="safari")h.alg="RSA-OAEP";else{if(!p.hash)throw new ne("hash","algorithm.hash","Incorrect hash algorithm: Hash algorithm is missed");switch(p.hash.name.toUpperCase()){case"SHA-1":h.alg="RSA-OAEP";break;case"SHA-256":h.alg="RSA-OAEP-256";break;case"SHA-384":h.alg="RSA-OAEP-384";break;case"SHA-512":h.alg="RSA-OAEP-512";break;default:throw new Error("Incorrect hash algorithm: ".concat(p.hash.name.toUpperCase()))}}const y=w.toJSON();Object.assign(h,y)}break;case"RSAES-PKCS1-V1_5":{h.kty="RSA",h.ext=a,h.key_ops=n,h.alg="PS1";const y=w.toJSON();Object.assign(h,y)}break;default:throw new Error("Incorrect algorithm name: ".concat(p.name.toUpperCase()))}}break;case"pkcs8":{const d=new Ft,w=Le(pe.toArrayBuffer(t));O.assert(w,"keyData");try{d.fromSchema(w.result)}catch(y){throw new Error("Incorrect keyData")}if(!d.parsedKey)throw new Error("Incorrect keyData");switch(p.name.toUpperCase()){case"RSA-PSS":switch((u=p.hash)===null||u===void 0?void 0:u.name.toUpperCase()){case"SHA-1":h.alg="PS1";break;case"SHA-256":h.alg="PS256";break;case"SHA-384":h.alg="PS384";break;case"SHA-512":h.alg="PS512";break;default:throw new Error("Incorrect hash algorithm: ".concat((i=p.hash)===null||i===void 0?void 0:i.name.toUpperCase()))}case"RSASSA-PKCS1-V1_5":{if(n=["sign"],h.kty="RSA",h.ext=a,h.key_ops=n,d.privateKeyAlgorithm.algorithmId!=="1.2.840.113549.1.1.1")throw new Error("Incorrect private key algorithm: ".concat(d.privateKeyAlgorithm.algorithmId));if(!("alg"in h))switch((l=p.hash)===null||l===void 0?void 0:l.name.toUpperCase()){case"SHA-1":h.alg="RS1";break;case"SHA-256":h.alg="RS256";break;case"SHA-384":h.alg="RS384";break;case"SHA-512":h.alg="RS512";break;default:throw new Error("Incorrect hash algorithm: ".concat((o=p.hash)===null||o===void 0?void 0:o.name.toUpperCase()))}const y=d.toJSON();Object.assign(h,y)}break;case"ECDSA":n=["sign"];case"ECDH":{if(h={kty:"EC",ext:a,key_ops:n},d.privateKeyAlgorithm.algorithmId!=="1.2.840.10045.2.1")throw new Error("Incorrect algorithm: ".concat(d.privateKeyAlgorithm.algorithmId));const y=d.toJSON();Object.assign(h,y)}break;case"RSA-OAEP":{if(h.kty="RSA",h.ext=a,h.key_ops=n,this.name.toLowerCase()==="safari")h.alg="RSA-OAEP";else switch((c=p.hash)===null||c===void 0?void 0:c.name.toUpperCase()){case"SHA-1":h.alg="RSA-OAEP";break;case"SHA-256":h.alg="RSA-OAEP-256";break;case"SHA-384":h.alg="RSA-OAEP-384";break;case"SHA-512":h.alg="RSA-OAEP-512";break;default:throw new Error("Incorrect hash algorithm: ".concat((m=p.hash)===null||m===void 0?void 0:m.name.toUpperCase()))}const y=d.toJSON();Object.assign(h,y)}break;case"RSAES-PKCS1-V1_5":{n=["decrypt"],h.kty="RSA",h.ext=a,h.key_ops=n,h.alg="PS1";const y=d.toJSON();Object.assign(h,y)}break;default:throw new Error("Incorrect algorithm name: ".concat(p.name.toUpperCase()))}}break;case"jwk":h=t;break;default:throw new Error("Incorrect format: ".concat(e))}if(this.name.toLowerCase()==="safari")try{return this.subtle.importKey("jwk",ko(JSON.stringify(h)),s,a,n)}catch(d){return this.subtle.importKey("jwk",h,s,a,n)}return this.subtle.importKey("jwk",h,s,a,n)}async exportKey(e,t){let s=await this.subtle.exportKey("jwk",t);switch(this.name.toLowerCase()==="safari"&&s instanceof ArrayBuffer&&(s=JSON.parse(Ah(s))),e.toLowerCase()){case"raw":return this.subtle.exportKey("raw",t);case"spki":{const a=new Ct;try{a.fromJSON(s)}catch(n){throw new Error("Incorrect key data")}return a.toSchema().toBER(!1)}case"pkcs8":{const a=new Ft;try{a.fromJSON(s)}catch(n){throw new Error("Incorrect key data")}return a.toSchema().toBER(!1)}case"jwk":return s;default:throw new Error("Incorrect format: ".concat(e))}}async convert(e,t,s,a,n,u){if(e.toLowerCase()===t.toLowerCase())return s;const i=await this.importKey(e,s,a,n,u);return this.exportKey(t,i)}getAlgorithmByOID(e,t=!1,s){switch(e){case"1.2.840.113549.1.1.1":return{name:"RSAES-PKCS1-v1_5"};case"1.2.840.113549.1.1.5":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-1"}};case"1.2.840.113549.1.1.11":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"1.2.840.113549.1.1.12":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-384"}};case"1.2.840.113549.1.1.13":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-512"}};case"1.2.840.113549.1.1.10":return{name:"RSA-PSS"};case"1.2.840.113549.1.1.7":return{name:"RSA-OAEP"};case"1.2.840.10045.2.1":case"1.2.840.10045.4.1":return{name:"ECDSA",hash:{name:"SHA-1"}};case"1.2.840.10045.4.3.2":return{name:"ECDSA",hash:{name:"SHA-256"}};case"1.2.840.10045.4.3.3":return{name:"ECDSA",hash:{name:"SHA-384"}};case"1.2.840.10045.4.3.4":return{name:"ECDSA",hash:{name:"SHA-512"}};case"1.3.133.16.840.63.0.2":return{name:"ECDH",kdf:"SHA-1"};case"1.3.132.1.11.1":return{name:"ECDH",kdf:"SHA-256"};case"1.3.132.1.11.2":return{name:"ECDH",kdf:"SHA-384"};case"1.3.132.1.11.3":return{name:"ECDH",kdf:"SHA-512"};case"2.16.840.1.101.3.4.1.2":return{name:"AES-CBC",length:128};case"2.16.840.1.101.3.4.1.22":return{name:"AES-CBC",length:192};case"2.16.840.1.101.3.4.1.42":return{name:"AES-CBC",length:256};case"2.16.840.1.101.3.4.1.6":return{name:"AES-GCM",length:128};case"2.16.840.1.101.3.4.1.26":return{name:"AES-GCM",length:192};case"2.16.840.1.101.3.4.1.46":return{name:"AES-GCM",length:256};case"2.16.840.1.101.3.4.1.4":return{name:"AES-CFB",length:128};case"2.16.840.1.101.3.4.1.24":return{name:"AES-CFB",length:192};case"2.16.840.1.101.3.4.1.44":return{name:"AES-CFB",length:256};case"2.16.840.1.101.3.4.1.5":return{name:"AES-KW",length:128};case"2.16.840.1.101.3.4.1.25":return{name:"AES-KW",length:192};case"2.16.840.1.101.3.4.1.45":return{name:"AES-KW",length:256};case"1.2.840.113549.2.7":return{name:"HMAC",hash:{name:"SHA-1"}};case"1.2.840.113549.2.9":return{name:"HMAC",hash:{name:"SHA-256"}};case"1.2.840.113549.2.10":return{name:"HMAC",hash:{name:"SHA-384"}};case"1.2.840.113549.2.11":return{name:"HMAC",hash:{name:"SHA-512"}};case"1.2.840.113549.1.9.16.3.5":return{name:"DH"};case"1.3.14.3.2.26":return{name:"SHA-1"};case"2.16.840.1.101.3.4.2.1":return{name:"SHA-256"};case"2.16.840.1.101.3.4.2.2":return{name:"SHA-384"};case"2.16.840.1.101.3.4.2.3":return{name:"SHA-512"};case"1.2.840.113549.1.5.12":return{name:"PBKDF2"};case"1.2.840.10045.3.1.7":return{name:"P-256"};case"1.3.132.0.34":return{name:"P-384"};case"1.3.132.0.35":return{name:"P-521"}}if(t)throw new Error("Unsupported algorithm identifier ".concat(s?"for ".concat(s," "):v,": ").concat(e));return{}}getOIDByAlgorithm(e,t=!1,s){let a=v;switch(e.name.toUpperCase()){case"RSAES-PKCS1-V1_5":a="1.2.840.113549.1.1.1";break;case"RSASSA-PKCS1-V1_5":switch(e.hash.name.toUpperCase()){case"SHA-1":a="1.2.840.113549.1.1.5";break;case"SHA-256":a="1.2.840.113549.1.1.11";break;case"SHA-384":a="1.2.840.113549.1.1.12";break;case"SHA-512":a="1.2.840.113549.1.1.13";break}break;case"RSA-PSS":a="1.2.840.113549.1.1.10";break;case"RSA-OAEP":a="1.2.840.113549.1.1.7";break;case"ECDSA":switch(e.hash.name.toUpperCase()){case"SHA-1":a="1.2.840.10045.4.1";break;case"SHA-256":a="1.2.840.10045.4.3.2";break;case"SHA-384":a="1.2.840.10045.4.3.3";break;case"SHA-512":a="1.2.840.10045.4.3.4";break}break;case"ECDH":switch(e.kdf.toUpperCase()){case"SHA-1":a="1.3.133.16.840.63.0.2";break;case"SHA-256":a="1.3.132.1.11.1";break;case"SHA-384":a="1.3.132.1.11.2";break;case"SHA-512":a="1.3.132.1.11.3";break}break;case"AES-CTR":break;case"AES-CBC":switch(e.length){case 128:a="2.16.840.1.101.3.4.1.2";break;case 192:a="2.16.840.1.101.3.4.1.22";break;case 256:a="2.16.840.1.101.3.4.1.42";break}break;case"AES-CMAC":break;case"AES-GCM":switch(e.length){case 128:a="2.16.840.1.101.3.4.1.6";break;case 192:a="2.16.840.1.101.3.4.1.26";break;case 256:a="2.16.840.1.101.3.4.1.46";break}break;case"AES-CFB":switch(e.length){case 128:a="2.16.840.1.101.3.4.1.4";break;case 192:a="2.16.840.1.101.3.4.1.24";break;case 256:a="2.16.840.1.101.3.4.1.44";break}break;case"AES-KW":switch(e.length){case 128:a="2.16.840.1.101.3.4.1.5";break;case 192:a="2.16.840.1.101.3.4.1.25";break;case 256:a="2.16.840.1.101.3.4.1.45";break}break;case"HMAC":switch(e.hash.name.toUpperCase()){case"SHA-1":a="1.2.840.113549.2.7";break;case"SHA-256":a="1.2.840.113549.2.9";break;case"SHA-384":a="1.2.840.113549.2.10";break;case"SHA-512":a="1.2.840.113549.2.11";break}break;case"DH":a="1.2.840.113549.1.9.16.3.5";break;case"SHA-1":a="1.3.14.3.2.26";break;case"SHA-256":a="2.16.840.1.101.3.4.2.1";break;case"SHA-384":a="2.16.840.1.101.3.4.2.2";break;case"SHA-512":a="2.16.840.1.101.3.4.2.3";break;case"CONCAT":break;case"HKDF":break;case"PBKDF2":a="1.2.840.113549.1.5.12";break;case"P-256":a="1.2.840.10045.3.1.7";break;case"P-384":a="1.3.132.0.34";break;case"P-521":a="1.3.132.0.35";break}if(!a&&t)throw new Error("Unsupported algorithm ".concat(s?"for ".concat(s," "):v,": ").concat(e.name));return a}getAlgorithmParameters(e,t){let s={algorithm:{},usages:[]};switch(e.toUpperCase()){case"RSAES-PKCS1-V1_5":case"RSASSA-PKCS1-V1_5":switch(t.toLowerCase()){case"generatekey":s={algorithm:{name:"RSASSA-PKCS1-v1_5",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},usages:["sign","verify"]};break;case"verify":case"sign":case"importkey":s={algorithm:{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},usages:["verify"]};break;case"exportkey":default:return{algorithm:{name:"RSASSA-PKCS1-v1_5"},usages:[]}}break;case"RSA-PSS":switch(t.toLowerCase()){case"sign":case"verify":s={algorithm:{name:"RSA-PSS",hash:{name:"SHA-1"},saltLength:20},usages:["sign","verify"]};break;case"generatekey":s={algorithm:{name:"RSA-PSS",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-1"}},usages:["sign","verify"]};break;case"importkey":s={algorithm:{name:"RSA-PSS",hash:{name:"SHA-1"}},usages:["verify"]};break;case"exportkey":default:return{algorithm:{name:"RSA-PSS"},usages:[]}}break;case"RSA-OAEP":switch(t.toLowerCase()){case"encrypt":case"decrypt":s={algorithm:{name:"RSA-OAEP"},usages:["encrypt","decrypt"]};break;case"generatekey":s={algorithm:{name:"RSA-OAEP",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;case"importkey":s={algorithm:{name:"RSA-OAEP",hash:{name:"SHA-256"}},usages:["encrypt"]};break;case"exportkey":default:return{algorithm:{name:"RSA-OAEP"},usages:[]}}break;case"ECDSA":switch(t.toLowerCase()){case"generatekey":s={algorithm:{name:"ECDSA",namedCurve:"P-256"},usages:["sign","verify"]};break;case"importkey":s={algorithm:{name:"ECDSA",namedCurve:"P-256"},usages:["verify"]};break;case"verify":case"sign":s={algorithm:{name:"ECDSA",hash:{name:"SHA-256"}},usages:["sign"]};break;default:return{algorithm:{name:"ECDSA"},usages:[]}}break;case"ECDH":switch(t.toLowerCase()){case"exportkey":case"importkey":case"generatekey":s={algorithm:{name:"ECDH",namedCurve:"P-256"},usages:["deriveKey","deriveBits"]};break;case"derivekey":case"derivebits":s={algorithm:{name:"ECDH",namedCurve:"P-256",public:[]},usages:["encrypt","decrypt"]};break;default:return{algorithm:{name:"ECDH"},usages:[]}}break;case"AES-CTR":switch(t.toLowerCase()){case"importkey":case"exportkey":case"generatekey":s={algorithm:{name:"AES-CTR",length:256},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;case"decrypt":case"encrypt":s={algorithm:{name:"AES-CTR",counter:new Uint8Array(16),length:10},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;default:return{algorithm:{name:"AES-CTR"},usages:[]}}break;case"AES-CBC":switch(t.toLowerCase()){case"importkey":case"exportkey":case"generatekey":s={algorithm:{name:"AES-CBC",length:256},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;case"decrypt":case"encrypt":s={algorithm:{name:"AES-CBC",iv:this.getRandomValues(new Uint8Array(16))},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;default:return{algorithm:{name:"AES-CBC"},usages:[]}}break;case"AES-GCM":switch(t.toLowerCase()){case"importkey":case"exportkey":case"generatekey":s={algorithm:{name:"AES-GCM",length:256},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;case"decrypt":case"encrypt":s={algorithm:{name:"AES-GCM",iv:this.getRandomValues(new Uint8Array(16))},usages:["encrypt","decrypt","wrapKey","unwrapKey"]};break;default:return{algorithm:{name:"AES-GCM"},usages:[]}}break;case"AES-KW":switch(t.toLowerCase()){case"importkey":case"exportkey":case"generatekey":case"wrapkey":case"unwrapkey":s={algorithm:{name:"AES-KW",length:256},usages:["wrapKey","unwrapKey"]};break;default:return{algorithm:{name:"AES-KW"},usages:[]}}break;case"HMAC":switch(t.toLowerCase()){case"sign":case"verify":s={algorithm:{name:"HMAC"},usages:["sign","verify"]};break;case"importkey":case"exportkey":case"generatekey":s={algorithm:{name:"HMAC",length:32,hash:{name:"SHA-256"}},usages:["sign","verify"]};break;default:return{algorithm:{name:"HMAC"},usages:[]}}break;case"HKDF":switch(t.toLowerCase()){case"derivekey":s={algorithm:{name:"HKDF",hash:"SHA-256",salt:new Uint8Array([]),info:new Uint8Array([])},usages:["encrypt","decrypt"]};break;default:return{algorithm:{name:"HKDF"},usages:[]}}break;case"PBKDF2":switch(t.toLowerCase()){case"derivekey":s={algorithm:{name:"PBKDF2",hash:{name:"SHA-256"},salt:new Uint8Array([]),iterations:1e4},usages:["encrypt","decrypt"]};break;default:return{algorithm:{name:"PBKDF2"},usages:[]}}break}return s}getHashAlgorithm(e){let t=v;switch(e.algorithmId){case"1.2.840.10045.4.1":case"1.2.840.113549.1.1.5":t="SHA-1";break;case"1.2.840.10045.4.3.2":case"1.2.840.113549.1.1.11":t="SHA-256";break;case"1.2.840.10045.4.3.3":case"1.2.840.113549.1.1.12":t="SHA-384";break;case"1.2.840.10045.4.3.4":case"1.2.840.113549.1.1.13":t="SHA-512";break;case"1.2.840.113549.1.1.10":try{const s=new tt({schema:e.algorithmParams});if(s.hashAlgorithm){const a=this.getAlgorithmByOID(s.hashAlgorithm.algorithmId);if("name"in a)t=a.name;else return v}else t="SHA-1"}catch(s){}break}return t}async encryptEncryptedContentInfo(e){ne.assert(e,"password","contentEncryptionAlgorithm","hmacHashAlgorithm","iterationCount","contentToEncrypt","contentToEncrypt","contentType");const t=this.getOIDByAlgorithm(e.contentEncryptionAlgorithm,!0,"contentEncryptionAlgorithm"),s=this.getOIDByAlgorithm({name:"PBKDF2"},!0,"PBKDF2"),a=this.getOIDByAlgorithm({name:"HMAC",hash:{name:e.hmacHashAlgorithm}},!0,"hmacHashAlgorithm"),n=new ArrayBuffer(16),u=new Uint8Array(n);this.getRandomValues(u);const i=new ArrayBuffer(64),l=new Uint8Array(i);this.getRandomValues(l);const o=new Uint8Array(e.contentToEncrypt),c=new mt({salt:new $({valueHex:i}),iterationCount:e.iterationCount,prf:new V({algorithmId:a,algorithmParams:new Fe})}),m=new Uint8Array(e.password),h=await this.importKey("raw",m,"PBKDF2",!1,["deriveKey"]),p=await this.deriveKey({name:"PBKDF2",hash:{name:e.hmacHashAlgorithm},salt:l,iterations:e.iterationCount},h,e.contentEncryptionAlgorithm,!1,["encrypt"]),d=await this.encrypt({name:e.contentEncryptionAlgorithm.name,iv:u},p,o),w=new Bn({keyDerivationFunc:new V({algorithmId:s,algorithmParams:c.toSchema()}),encryptionScheme:new V({algorithmId:t,algorithmParams:new $({valueHex:n})})});return new Oe({contentType:e.contentType,contentEncryptionAlgorithm:new V({algorithmId:"1.2.840.113549.1.5.13",algorithmParams:w.toSchema()}),encryptedContent:new $({valueHex:d})})}async decryptEncryptedContentInfo(e){if(ne.assert(e,"password","encryptedContentInfo"),e.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId!=="1.2.840.113549.1.5.13")throw new Error('Unknown "contentEncryptionAlgorithm": '.concat(e.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId));let t;try{t=new Bn({schema:e.encryptedContentInfo.contentEncryptionAlgorithm.algorithmParams})}catch(d){throw new Error('Incorrectly encoded "pbes2Parameters"')}let s;try{s=new mt({schema:t.keyDerivationFunc.algorithmParams})}catch(d){throw new Error('Incorrectly encoded "pbkdf2Params"')}const a=this.getAlgorithmByOID(t.encryptionScheme.algorithmId,!0),n=t.encryptionScheme.algorithmParams.valueBlock.valueHex,u=new Uint8Array(n),i=s.salt.valueBlock.valueHex,l=new Uint8Array(i),o=s.iterationCount;let c="SHA-1";s.prf&&(c=this.getAlgorithmByOID(s.prf.algorithmId,!0).hash.name);const m=await this.importKey("raw",e.password,"PBKDF2",!1,["deriveKey"]),h=await this.deriveKey({name:"PBKDF2",hash:{name:c},salt:l,iterations:o},m,a,!1,["decrypt"]),p=e.encryptedContentInfo.getEncryptedContent();return this.decrypt({name:a.name,iv:u},h,p)}async stampDataWithPassword(e){if(!(e instanceof Object))throw new Error('Parameters must have type "Object"');ne.assert(e,"password","hashAlgorithm","iterationCount","salt","contentToStamp");let t;switch(e.hashAlgorithm.toLowerCase()){case"sha-1":t=160;break;case"sha-256":t=256;break;case"sha-384":t=384;break;case"sha-512":t=512;break;default:throw new Error('Incorrect "parameters.hashAlgorithm" parameter: '.concat(e.hashAlgorithm))}const s={name:"HMAC",length:t,hash:{name:e.hashAlgorithm}},a=await sp(e.hashAlgorithm,t,e.password,e.salt,e.iterationCount),n=await this.importKey("raw",new Uint8Array(a),s,!1,["sign"]);return this.sign(s,n,new Uint8Array(e.contentToStamp))}async verifyDataStampedWithPassword(e){ne.assert(e,"password","hashAlgorithm","salt","iterationCount","contentToVerify","signatureToVerify");let t=0;switch(e.hashAlgorithm.toLowerCase()){case"sha-1":t=160;break;case"sha-256":t=256;break;case"sha-384":t=384;break;case"sha-512":t=512;break;default:throw new Error('Incorrect "parameters.hashAlgorithm" parameter: '.concat(e.hashAlgorithm))}const s={name:"HMAC",length:t,hash:{name:e.hashAlgorithm}},a=await sp(e.hashAlgorithm,t,e.password,e.salt,e.iterationCount),n=await this.importKey("raw",new Uint8Array(a),s,!1,["verify"]);return this.verify(s,n,new Uint8Array(e.signatureToVerify),new Uint8Array(e.contentToVerify))}async getSignatureParameters(e,t="SHA-1"){this.getOIDByAlgorithm({name:t},!0,"hashAlgorithm");const s=new V,a=this.getAlgorithmParameters(e.algorithm.name,"sign");if(!Object.keys(a.algorithm).length)throw new Error("Parameter 'algorithm' is empty");const n=a.algorithm;switch("hash"in e.algorithm&&e.algorithm.hash&&e.algorithm.hash.name?n.hash.name=e.algorithm.hash.name:n.hash.name=t,e.algorithm.name.toUpperCase()){case"RSASSA-PKCS1-V1_5":case"ECDSA":s.algorithmId=this.getOIDByAlgorithm(n,!0);break;case"RSA-PSS":{switch(n.hash.name.toUpperCase()){case"SHA-256":n.saltLength=32;break;case"SHA-384":n.saltLength=48;break;case"SHA-512":n.saltLength=64;break}const u={};if(n.hash.name.toUpperCase()!=="SHA-1"){const l=this.getOIDByAlgorithm({name:n.hash.name},!0,"hashAlgorithm");u.hashAlgorithm=new V({algorithmId:l,algorithmParams:new Fe}),u.maskGenAlgorithm=new V({algorithmId:"1.2.840.113549.1.1.8",algorithmParams:u.hashAlgorithm.toSchema()})}n.saltLength!==20&&(u.saltLength=n.saltLength);const i=new tt(u);s.algorithmId="1.2.840.113549.1.1.10",s.algorithmParams=i.toSchema()}break;default:throw new Error("Unsupported signature algorithm: ".concat(e.algorithm.name))}return{signatureAlgorithm:s,parameters:a}}async signWithPrivateKey(e,t,s){const a=await this.sign(s.algorithm,t,e);return s.algorithm.name==="ECDSA"?g1(a):a}fillPublicKeyParameters(e,t){const s={},a=this.getHashAlgorithm(t);if(a===v)throw new Error("Unsupported signature algorithm: ".concat(t.algorithmId));let n;t.algorithmId==="1.2.840.113549.1.1.10"?n=t.algorithmId:n=e.algorithm.algorithmId;const u=this.getAlgorithmByOID(n,!0);if(s.algorithm=this.getAlgorithmParameters(u.name,"importKey"),"hash"in s.algorithm.algorithm&&(s.algorithm.algorithm.hash.name=a),u.name==="ECDSA"){const i=e.algorithm;if(!i.algorithmParams)throw new Error("Algorithm parameters for ECDSA public key are missed");const l=i.algorithmParams;if("idBlock"in i.algorithmParams&&!(l.idBlock.tagClass===1&&l.idBlock.tagNumber===6))throw new Error("Incorrect type for ECDSA public key parameters");const o=this.getAlgorithmByOID(l.valueBlock.toString(),!0);s.algorithm.algorithm.namedCurve=o.name}return s}async getPublicKey(e,t,s){s||(s=this.fillPublicKeyParameters(e,t));const a=e.toSchema().toBER(!1);return this.importKey("spki",a,s.algorithm.algorithm,!0,s.algorithm.usages)}async verifyWithPublicKey(e,t,s,a,n){let u;if(n){const o={};let c;a.algorithmId==="1.2.840.113549.1.1.10"?c=a.algorithmId:c=s.algorithm.algorithmId;const m=this.getAlgorithmByOID(c,!0);if(o.algorithm=this.getAlgorithmParameters(m.name,"importKey"),"hash"in o.algorithm.algorithm&&(o.algorithm.algorithm.hash.name=n),m.name==="ECDSA"){let h=!1;if("algorithmParams"in s.algorithm&&"idBlock"in s.algorithm.algorithmParams&&s.algorithm.algorithmParams.idBlock.tagClass===1&&s.algorithm.algorithmParams.idBlock.tagNumber===6&&(h=!0),h===!1)throw new Error("Incorrect type for ECDSA public key parameters");const p=this.getAlgorithmByOID(s.algorithm.algorithmParams.valueBlock.toString(),!0);o.algorithm.algorithm.namedCurve=p.name}u=await this.getPublicKey(s,null,o)}else{if(n=this.getHashAlgorithm(a),!n)throw new Error("Unsupported signature algorithm: ".concat(a.algorithmId));u=await this.getPublicKey(s,a)}const i=this.getAlgorithmParameters(u.algorithm.name,"verify");"hash"in i.algorithm&&(i.algorithm.hash.name=n);let l=t.valueBlock.valueHexView;if(u.algorithm.name==="ECDSA"){const o=sa.find(u.algorithm.namedCurve);if(!o)throw new Error("Unsupported named curve in use");const c=Le(l);O.assert(c,"Signature value"),l=w1(c.result,o.size)}if(u.algorithm.name==="RSA-PSS"){const o=new tt({schema:a.algorithmParams});"saltLength"in o?i.algorithm.saltLength=o.saltLength:i.algorithm.saltLength=20;let c="SHA-1";"hashAlgorithm"in o&&(c=this.getAlgorithmByOID(o.hashAlgorithm.algorithmId,!0).name),i.algorithm.hash.name=c}return this.verify(i.algorithm,u,l,e)}}let jg={name:"none",crypto:null};function rp(r){return!!(r&&typeof r=="object"&&"crypto"in r)}function ap(r,...e){let t=null;if(e.length<2)e.length?t=e[0]:t=typeof self<"u"&&self.crypto?new nc({name:"browser",crypto:self.crypto}):null;else{const s=e[0],a=e[1];rp(a)?t=a:rp(s)?t=s:"subtle"in s&&"getRandomValues"in s&&(t=new nc({crypto:s}))}if(typeof Ge<"u"&&"pid"in Ge&&typeof It<"u"&&typeof window>"u"){if(typeof It[Ge.pid]>"u")It[Ge.pid]={};else if(typeof It[Ge.pid]!="object")throw new Error("Name global.".concat(Ge.pid," already exists and it is not an object"));if(typeof It[Ge.pid].pkijs>"u")It[Ge.pid].pkijs={};else if(typeof It[Ge.pid].pkijs!="object")throw new Error("Name global.".concat(Ge.pid,".pkijs already exists and it is not an object"));It[Ge.pid].pkijs.engine={name:r,crypto:t}}else jg={name:r,crypto:t}}function p1(){if(typeof Ge<"u"&&"pid"in Ge&&typeof It<"u"&&typeof window>"u"){let r;try{r=It[Ge.pid].pkijs.engine}catch(e){throw new Error("Please call 'setEngine' before call to 'getEngine'")}return r}return jg}function Q(r=!1){const e=p1();if(!e.crypto&&r)throw new Error("Unable to create WebCrypto object");return e.crypto}function g1(r){if(r.byteLength%2!==0)return Ue;const e=r.byteLength/2,t=new ArrayBuffer(e);new Uint8Array(t).set(new Uint8Array(r,0,e));const s=new B({valueHex:t}),a=new ArrayBuffer(e);new Uint8Array(a).set(new Uint8Array(r,e,e));const n=new B({valueHex:a});return new A({value:[s.convertToDER(),n.convertToDER()]}).toBER(!1)}function w1(r,e){if(!(r instanceof A&&r.valueBlock.value.length===2&&r.valueBlock.value[0]instanceof B&&r.valueBlock.value[1]instanceof B))return Ue;const t=r.valueBlock.value[0].convertFromDER().valueBlock.valueHexView,s=r.valueBlock.value[1].convertFromDER().valueBlock.valueHexView,a=new Uint8Array(e*2);return a.set(t,e-t.byteLength),a.set(s,2*e-s.byteLength),a.buffer}async function y1(r,e,t,s,a){switch(r.toUpperCase()){case"SHA-1":case"SHA-256":case"SHA-384":case"SHA-512":break;default:throw new he("Unknown hash function: ".concat(r))}if(he.assert(e,"zBuffer","ArrayBuffer"),e.byteLength===0)throw new he("'zBuffer' has zero length, error");if(he.assert(s,"SharedInfo","ArrayBuffer"),t>255)throw new he("Please set 'Counter' argument to value less or equal to 255");const n=new ArrayBuffer(4),u=new Uint8Array(n);u[0]=0,u[1]=0,u[2]=0,u[3]=t;let i=Ue;i=go(i,e),i=go(i,n),i=go(i,s);const l=await a.digest({name:r},i);return{counter:t,result:l}}async function np(r,e,t,s,a=Q(!0)){let n=0,u=1;switch(r.toUpperCase()){case"SHA-1":n=160;break;case"SHA-256":n=256;break;case"SHA-384":n=384;break;case"SHA-512":n=512;break;default:throw new he("Unknown hash function: ".concat(r))}if(he.assert(e,"Zbuffer","ArrayBuffer"),e.byteLength===0)throw new he("'Zbuffer' has zero length, error");he.assert(s,"SharedInfo","ArrayBuffer");const i=t/n;Math.floor(i)>0&&(u=Math.floor(i),i-u>0&&u++);const l=[];for(let h=1;h<=u;h++)l.push(await y1(r,e,h,s,a));let o=Ue,c=1,m=!0;for(;m;){m=!1;for(const h of l)if(h.counter===c){o=go(o,h.result),m=!0;break}c++}if(t>>=3,o.byteLength>t){const h=new ArrayBuffer(t),p=new Uint8Array(h),d=new Uint8Array(o);for(let w=0;we.toJSON())}}}Xh.CLASS_NAME="SignedCertificateTimestampList";const Lu="attributes",v1=[Lu];class ic extends D{constructor(e={}){super(),this.attributes=f(e,Lu,ic.defaultValues(Lu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Lu:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.attributes||v,value:ge.schema()})]})}fromSchema(e){T(e,v1);const t=R(e,e,ic.schema({names:{attributes:Lu}}));O.assertSchema(t,this.className),this.attributes=Array.from(t.result.attributes,s=>new ge({schema:s}))}toSchema(){return new A({value:Array.from(this.attributes,e=>e.toSchema())})}toJSON(){return{attributes:Array.from(this.attributes,e=>e.toJSON())}}}ic.CLASS_NAME="SubjectDirectoryAttributes";class ve{static getItems(){return this.types||(this.types={},ve.register(Ag,"SubjectAltName",Co),ve.register(Ng,"IssuerAltName",Co),ve.register(Yf,"AuthorityKeyIdentifier",Xr),ve.register(Zf,"BasicConstraints",kn),ve.register(R0,"MicrosoftCaVersion",tc),ve.register(Ig,"CertificatePolicies",Eo),ve.register(V0,"CertificatePoliciesMicrosoft",Eo),ve.register(T0,"MicrosoftCertTemplateV2",fo),ve.register(xg,"CRLDistributionPoints",xo),ve.register(Qf,"FreshestCRL",xo),ve.register(B0,"ExtKeyUsage",sc),ve.register(Cg,"CertificateIssuer",qe),ve.register(ed,"AuthorityInfoAccess",Io),ve.register(O0,"SubjectInfoAccess",Io),ve.register(kg,"IssuingDistributionPoint",Ye),ve.register(Eg,"NameConstraints",yo),ve.register(Bg,"PolicyConstraints",vo),ve.register(Vg,"PolicyMappings",rc),ve.register(k0,"PrivateKeyUsagePeriod",bo),ve.register(L0,"QCStatements",ac),ve.register(D0,"SignedCertificateTimestampList",Xh),ve.register(S0,"SubjectDirectoryAttributes",ic)),this.types}static fromBER(e,t){const s=Le(t);if(s.offset===-1)return null;const a=this.find(e);if(a)try{return new a.type({schema:s.result})}catch(n){const u=new a.type;return u.parsingError="Incorrectly formatted value of extension ".concat(a.name," (").concat(e,")"),u}return s.result}static find(e){return this.getItems()[e]||null}static register(e,t,s){this.getItems()[e]={name:t,type:s}}}const Uu="extnID",vr="critical",ju="extnValue",Ac="parsedValue",b1=[Uu,vr,ju];class De extends D{get parsedValue(){if(this._parsedValue===void 0){const e=ve.fromBER(this.extnID,this.extnValue.valueBlock.valueHexView);this._parsedValue=e}return this._parsedValue||void 0}set parsedValue(e){this._parsedValue=e}constructor(e={}){super(),this.extnID=f(e,Uu,De.defaultValues(Uu)),this.critical=f(e,vr,De.defaultValues(vr)),ju in e?this.extnValue=new $({valueHex:e.extnValue}):this.extnValue=De.defaultValues(ju),Ac in e&&(this.parsedValue=f(e,Ac,De.defaultValues(Ac))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Uu:return v;case vr:return!1;case ju:return new $;case Ac:return{};default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.extnID||v}),new ia({name:t.critical||v,optional:!0}),new $({name:t.extnValue||v})]})}fromSchema(e){T(e,b1);const t=R(e,e,De.schema({names:{extnID:Uu,critical:vr,extnValue:ju}}));O.assertSchema(t,this.className),this.extnID=t.result.extnID.valueBlock.toString(),vr in t.result&&(this.critical=t.result.critical.valueBlock.value),this.extnValue=t.result.extnValue}toSchema(){const e=[];return e.push(new J({value:this.extnID})),this.critical!==De.defaultValues(vr)&&e.push(new ia({value:this.critical})),e.push(this.extnValue),new A({value:e})}toJSON(){const e={extnID:this.extnID,extnValue:this.extnValue.toJSON()};return this.critical!==De.defaultValues(vr)&&(e.critical=this.critical),this.parsedValue&&this.parsedValue.toJSON&&(e.parsedValue=this.parsedValue.toJSON()),e}}De.CLASS_NAME="Extension";const $u="extensions",S1=[$u];class je extends D{constructor(e={}){super(),this.extensions=f(e,$u,je.defaultValues($u)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case $u:return[];default:return super.defaultValues(e)}}static schema(e={},t=!1){const s=f(e,"names",{});return new A({optional:t,name:s.blockName||v,value:[new Z({name:s.extensions||v,value:De.schema(s.extension||{})})]})}fromSchema(e){T(e,S1);const t=R(e,e,je.schema({names:{extensions:$u}}));O.assertSchema(t,this.className),this.extensions=Array.from(t.result.extensions,s=>new De({schema:s}))}toSchema(){return new A({value:Array.from(this.extensions,e=>e.toSchema())})}toJSON(){return{extensions:this.extensions.map(e=>e.toJSON())}}}je.CLASS_NAME="Extensions";const Ku="issuer",Hu="serialNumber",xa="issuerUID",A1=[Ku,Hu,xa];class kt extends D{constructor(e={}){super(),this.issuer=f(e,Ku,kt.defaultValues(Ku)),this.serialNumber=f(e,Hu,kt.defaultValues(Hu)),xa in e&&(this.issuerUID=f(e,xa,kt.defaultValues(xa))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ku:return new qe;case Hu:return new B;case xa:return new re;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[qe.schema(t.issuer||{}),new B({name:t.serialNumber||v}),new re({optional:!0,name:t.issuerUID||v})]})}fromSchema(e){T(e,A1);const t=R(e,e,kt.schema({names:{issuer:{names:{blockName:Ku}},serialNumber:Hu,issuerUID:xa}}));O.assertSchema(t,this.className),this.issuer=new qe({schema:t.result.issuer}),this.serialNumber=t.result.serialNumber,xa in t.result&&(this.issuerUID=t.result.issuerUID)}toSchema(){const e=new A({value:[this.issuer.toSchema(),this.serialNumber]});return this.issuerUID&&e.valueBlock.value.push(this.issuerUID),e}toJSON(){const e={issuer:this.issuer.toJSON(),serialNumber:this.serialNumber.toJSON()};return this.issuerUID&&(e.issuerUID=this.issuerUID.toJSON()),e}}kt.CLASS_NAME="IssuerSerial";const Mu="version",Ia="baseCertificateID",Va="subjectName",Fu="issuer",Ju="signature",qu="serialNumber",Wu="attrCertValidityPeriod",Gu="attributes",Ba="issuerUniqueID",Pa="extensions",N1=[Mu,Ia,Va,Fu,Ju,qu,Wu,Gu,Ba,Pa];class ct extends D{constructor(e={}){super(),this.version=f(e,Mu,ct.defaultValues(Mu)),Ia in e&&(this.baseCertificateID=f(e,Ia,ct.defaultValues(Ia))),Va in e&&(this.subjectName=f(e,Va,ct.defaultValues(Va))),this.issuer=f(e,Fu,ct.defaultValues(Fu)),this.signature=f(e,Ju,ct.defaultValues(Ju)),this.serialNumber=f(e,qu,ct.defaultValues(qu)),this.attrCertValidityPeriod=f(e,Wu,ct.defaultValues(Wu)),this.attributes=f(e,Gu,ct.defaultValues(Gu)),Ba in e&&(this.issuerUniqueID=f(e,Ba,ct.defaultValues(Ba))),Pa in e&&(this.extensions=f(e,Pa,ct.defaultValues(Pa))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Mu:return 0;case Ia:return new kt;case Va:return new qe;case Fu:return new qe;case Ju:return new V;case qu:return new B;case Wu:return new as;case Gu:return[];case Ba:return new re;case Pa:return new je;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),new Ne({value:[new I({name:t.baseCertificateID||v,idBlock:{tagClass:3,tagNumber:0},value:kt.schema().valueBlock.value}),new I({name:t.subjectName||v,idBlock:{tagClass:3,tagNumber:1},value:qe.schema().valueBlock.value})]}),qe.schema({names:{blockName:t.issuer||v}}),V.schema(t.signature||{}),new B({name:t.serialNumber||v}),as.schema(t.attrCertValidityPeriod||{}),new A({name:t.attributes||v,value:[new Z({value:ge.schema()})]}),new re({optional:!0,name:t.issuerUniqueID||v}),je.schema(t.extensions||{},!0)]})}fromSchema(e){T(e,N1);const t=R(e,e,ct.schema({names:{version:Mu,baseCertificateID:Ia,subjectName:Va,issuer:Fu,signature:{names:{blockName:Ju}},serialNumber:qu,attrCertValidityPeriod:{names:{blockName:Wu}},attributes:Gu,issuerUniqueID:Ba,extensions:{names:{blockName:Pa}}}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,Ia in t.result&&(this.baseCertificateID=new kt({schema:new A({value:t.result.baseCertificateID.valueBlock.value})})),Va in t.result&&(this.subjectName=new qe({schema:new A({value:t.result.subjectName.valueBlock.value})})),this.issuer=t.result.issuer,this.signature=new V({schema:t.result.signature}),this.serialNumber=t.result.serialNumber,this.attrCertValidityPeriod=new as({schema:t.result.attrCertValidityPeriod}),this.attributes=Array.from(t.result.attributes.valueBlock.value,s=>new ge({schema:s})),Ba in t.result&&(this.issuerUniqueID=t.result.issuerUniqueID),Pa in t.result&&(this.extensions=new je({schema:t.result.extensions}))}toSchema(){const e=new A({value:[new B({value:this.version})]});return this.baseCertificateID&&e.valueBlock.value.push(new I({idBlock:{tagClass:3,tagNumber:0},value:this.baseCertificateID.toSchema().valueBlock.value})),this.subjectName&&e.valueBlock.value.push(new I({idBlock:{tagClass:3,tagNumber:1},value:this.subjectName.toSchema().valueBlock.value})),e.valueBlock.value.push(this.issuer.toSchema()),e.valueBlock.value.push(this.signature.toSchema()),e.valueBlock.value.push(this.serialNumber),e.valueBlock.value.push(this.attrCertValidityPeriod.toSchema()),e.valueBlock.value.push(new A({value:Array.from(this.attributes,t=>t.toSchema())})),this.issuerUniqueID&&e.valueBlock.value.push(this.issuerUniqueID),this.extensions&&e.valueBlock.value.push(this.extensions.toSchema()),e}toJSON(){const e={version:this.version};return this.baseCertificateID&&(e.baseCertificateID=this.baseCertificateID.toJSON()),this.subjectName&&(e.subjectName=this.subjectName.toJSON()),e.issuer=this.issuer.toJSON(),e.signature=this.signature.toJSON(),e.serialNumber=this.serialNumber.toJSON(),e.attrCertValidityPeriod=this.attrCertValidityPeriod.toJSON(),e.attributes=Array.from(this.attributes,t=>t.toJSON()),this.issuerUniqueID&&(e.issuerUniqueID=this.issuerUniqueID.toJSON()),this.extensions&&(e.extensions=this.extensions.toJSON()),e}}ct.CLASS_NAME="AttributeCertificateInfoV1";const zu="acinfo",_u="signatureAlgorithm",Xu="signatureValue",k1=[zu,Xu,_u];class Ls extends D{constructor(e={}){super(),this.acinfo=f(e,zu,Ls.defaultValues(zu)),this.signatureAlgorithm=f(e,_u,Ls.defaultValues(_u)),this.signatureValue=f(e,Xu,Ls.defaultValues(Xu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case zu:return new ct;case _u:return new V;case Xu:return new re;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[ct.schema(t.acinfo||{}),V.schema(t.signatureAlgorithm||{}),new re({name:t.signatureValue||v})]})}fromSchema(e){T(e,k1);const t=R(e,e,Ls.schema({names:{acinfo:{names:{blockName:zu}},signatureAlgorithm:{names:{blockName:_u}},signatureValue:Xu}}));O.assertSchema(t,this.className),this.acinfo=new ct({schema:t.result.acinfo}),this.signatureAlgorithm=new V({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}toSchema(){return new A({value:[this.acinfo.toSchema(),this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){return{acinfo:this.acinfo.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()}}}Ls.CLASS_NAME="AttributeCertificateV1";const Zu="digestedObjectType",Oa="otherObjectTypeID",Qu="digestAlgorithm",Yu="objectDigest",C1=[Zu,Oa,Qu,Yu];class Rt extends D{constructor(e={}){super(),this.digestedObjectType=f(e,Zu,Rt.defaultValues(Zu)),Oa in e&&(this.otherObjectTypeID=f(e,Oa,Rt.defaultValues(Oa))),this.digestAlgorithm=f(e,Qu,Rt.defaultValues(Qu)),this.objectDigest=f(e,Yu,Rt.defaultValues(Yu)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Zu:return new Yl;case Oa:return new J;case Qu:return new V;case Yu:return new re;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Yl({name:t.digestedObjectType||v}),new J({optional:!0,name:t.otherObjectTypeID||v}),V.schema(t.digestAlgorithm||{}),new re({name:t.objectDigest||v})]})}fromSchema(e){T(e,C1);const t=R(e,e,Rt.schema({names:{digestedObjectType:Zu,otherObjectTypeID:Oa,digestAlgorithm:{names:{blockName:Qu}},objectDigest:Yu}}));O.assertSchema(t,this.className),this.digestedObjectType=t.result.digestedObjectType,Oa in t.result&&(this.otherObjectTypeID=t.result.otherObjectTypeID),this.digestAlgorithm=new V({schema:t.result.digestAlgorithm}),this.objectDigest=t.result.objectDigest}toSchema(){const e=new A({value:[this.digestedObjectType]});return this.otherObjectTypeID&&e.valueBlock.value.push(this.otherObjectTypeID),e.valueBlock.value.push(this.digestAlgorithm.toSchema()),e.valueBlock.value.push(this.objectDigest),e}toJSON(){const e={digestedObjectType:this.digestedObjectType.toJSON(),digestAlgorithm:this.digestAlgorithm.toJSON(),objectDigest:this.objectDigest.toJSON()};return this.otherObjectTypeID&&(e.otherObjectTypeID=this.otherObjectTypeID.toJSON()),e}}Rt.CLASS_NAME="ObjectDigestInfo";const Da="issuerName",Ta="baseCertificateID",Ra="objectDigestInfo",E1=[Da,Ta,Ra];class Qr extends D{constructor(e={}){super(),Da in e&&(this.issuerName=f(e,Da,Qr.defaultValues(Da))),Ta in e&&(this.baseCertificateID=f(e,Ta,Qr.defaultValues(Ta))),Ra in e&&(this.objectDigestInfo=f(e,Ra,Qr.defaultValues(Ra))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Da:return new qe;case Ta:return new kt;case Ra:return new Rt;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[qe.schema({names:{blockName:t.issuerName}},!0),new I({optional:!0,name:t.baseCertificateID||v,idBlock:{tagClass:3,tagNumber:0},value:kt.schema().valueBlock.value}),new I({optional:!0,name:t.objectDigestInfo||v,idBlock:{tagClass:3,tagNumber:1},value:Rt.schema().valueBlock.value})]})}fromSchema(e){T(e,E1);const t=R(e,e,Qr.schema({names:{issuerName:Da,baseCertificateID:Ta,objectDigestInfo:Ra}}));O.assertSchema(t,this.className),Da in t.result&&(this.issuerName=new qe({schema:t.result.issuerName})),Ta in t.result&&(this.baseCertificateID=new kt({schema:new A({value:t.result.baseCertificateID.valueBlock.value})})),Ra in t.result&&(this.objectDigestInfo=new Rt({schema:new A({value:t.result.objectDigestInfo.valueBlock.value})}))}toSchema(){const e=new A;return this.issuerName&&e.valueBlock.value.push(this.issuerName.toSchema()),this.baseCertificateID&&e.valueBlock.value.push(new I({idBlock:{tagClass:3,tagNumber:0},value:this.baseCertificateID.toSchema().valueBlock.value})),this.objectDigestInfo&&e.valueBlock.value.push(new I({idBlock:{tagClass:3,tagNumber:1},value:this.objectDigestInfo.toSchema().valueBlock.value})),e}toJSON(){const e={};return this.issuerName&&(e.issuerName=this.issuerName.toJSON()),this.baseCertificateID&&(e.baseCertificateID=this.baseCertificateID.toJSON()),this.objectDigestInfo&&(e.objectDigestInfo=this.objectDigestInfo.toJSON()),e}}Qr.CLASS_NAME="V2Form";const La="baseCertificateID",Ua="entityName",ja="objectDigestInfo",x1=[La,Ua,ja];class Us extends D{constructor(e={}){super(),La in e&&(this.baseCertificateID=f(e,La,Us.defaultValues(La))),Ua in e&&(this.entityName=f(e,Ua,Us.defaultValues(Ua))),ja in e&&(this.objectDigestInfo=f(e,ja,Us.defaultValues(ja))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case La:return new kt;case Ua:return new qe;case ja:return new Rt;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new I({optional:!0,name:t.baseCertificateID||v,idBlock:{tagClass:3,tagNumber:0},value:kt.schema().valueBlock.value}),new I({optional:!0,name:t.entityName||v,idBlock:{tagClass:3,tagNumber:1},value:qe.schema().valueBlock.value}),new I({optional:!0,name:t.objectDigestInfo||v,idBlock:{tagClass:3,tagNumber:2},value:Rt.schema().valueBlock.value})]})}fromSchema(e){T(e,x1);const t=R(e,e,Us.schema({names:{baseCertificateID:La,entityName:Ua,objectDigestInfo:ja}}));O.assertSchema(t,this.className),La in t.result&&(this.baseCertificateID=new kt({schema:new A({value:t.result.baseCertificateID.valueBlock.value})})),Ua in t.result&&(this.entityName=new qe({schema:new A({value:t.result.entityName.valueBlock.value})})),ja in t.result&&(this.objectDigestInfo=new Rt({schema:new A({value:t.result.objectDigestInfo.valueBlock.value})}))}toSchema(){const e=new A;return this.baseCertificateID&&e.valueBlock.value.push(new I({idBlock:{tagClass:3,tagNumber:0},value:this.baseCertificateID.toSchema().valueBlock.value})),this.entityName&&e.valueBlock.value.push(new I({idBlock:{tagClass:3,tagNumber:1},value:this.entityName.toSchema().valueBlock.value})),this.objectDigestInfo&&e.valueBlock.value.push(new I({idBlock:{tagClass:3,tagNumber:2},value:this.objectDigestInfo.toSchema().valueBlock.value})),e}toJSON(){const e={};return this.baseCertificateID&&(e.baseCertificateID=this.baseCertificateID.toJSON()),this.entityName&&(e.entityName=this.entityName.toJSON()),this.objectDigestInfo&&(e.objectDigestInfo=this.objectDigestInfo.toJSON()),e}}Us.CLASS_NAME="Holder";const el="version",tl="holder",sl="issuer",rl="signature",al="serialNumber",nl="attrCertValidityPeriod",il="attributes",$a="issuerUniqueID",Ka="extensions",I1=[el,tl,sl,rl,al,nl,il,$a,Ka];class wt extends D{constructor(e={}){super(),this.version=f(e,el,wt.defaultValues(el)),this.holder=f(e,tl,wt.defaultValues(tl)),this.issuer=f(e,sl,wt.defaultValues(sl)),this.signature=f(e,rl,wt.defaultValues(rl)),this.serialNumber=f(e,al,wt.defaultValues(al)),this.attrCertValidityPeriod=f(e,nl,wt.defaultValues(nl)),this.attributes=f(e,il,wt.defaultValues(il)),$a in e&&(this.issuerUniqueID=f(e,$a,wt.defaultValues($a))),Ka in e&&(this.extensions=f(e,Ka,wt.defaultValues(Ka))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case el:return 1;case tl:return new Us;case sl:return{};case rl:return new V;case al:return new B;case nl:return new as;case il:return[];case $a:return new re;case Ka:return new je;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),Us.schema(t.holder||{}),new Ne({value:[qe.schema({names:{blockName:t.issuer||v}}),new I({name:t.issuer||v,idBlock:{tagClass:3,tagNumber:0},value:Qr.schema().valueBlock.value})]}),V.schema(t.signature||{}),new B({name:t.serialNumber||v}),as.schema(t.attrCertValidityPeriod||{}),new A({name:t.attributes||v,value:[new Z({value:ge.schema()})]}),new re({optional:!0,name:t.issuerUniqueID||v}),je.schema(t.extensions||{},!0)]})}fromSchema(e){T(e,I1);const t=R(e,e,wt.schema({names:{version:el,holder:{names:{blockName:tl}},issuer:sl,signature:{names:{blockName:rl}},serialNumber:al,attrCertValidityPeriod:{names:{blockName:nl}},attributes:il,issuerUniqueID:$a,extensions:{names:{blockName:Ka}}}}));switch(O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.holder=new Us({schema:t.result.holder}),t.result.issuer.idBlock.tagClass){case 3:this.issuer=new Qr({schema:new A({value:t.result.issuer.valueBlock.value})});break;case 1:default:throw new Error("Incorrect value for 'issuer' in AttributeCertificateInfoV2")}this.signature=new V({schema:t.result.signature}),this.serialNumber=t.result.serialNumber,this.attrCertValidityPeriod=new as({schema:t.result.attrCertValidityPeriod}),this.attributes=Array.from(t.result.attributes.valueBlock.value,s=>new ge({schema:s})),$a in t.result&&(this.issuerUniqueID=t.result.issuerUniqueID),Ka in t.result&&(this.extensions=new je({schema:t.result.extensions}))}toSchema(){const e=new A({value:[new B({value:this.version}),this.holder.toSchema(),new I({idBlock:{tagClass:3,tagNumber:0},value:this.issuer.toSchema().valueBlock.value}),this.signature.toSchema(),this.serialNumber,this.attrCertValidityPeriod.toSchema(),new A({value:Array.from(this.attributes,t=>t.toSchema())})]});return this.issuerUniqueID&&e.valueBlock.value.push(this.issuerUniqueID),this.extensions&&e.valueBlock.value.push(this.extensions.toSchema()),e}toJSON(){const e={version:this.version,holder:this.holder.toJSON(),issuer:this.issuer.toJSON(),signature:this.signature.toJSON(),serialNumber:this.serialNumber.toJSON(),attrCertValidityPeriod:this.attrCertValidityPeriod.toJSON(),attributes:Array.from(this.attributes,t=>t.toJSON())};return this.issuerUniqueID&&(e.issuerUniqueID=this.issuerUniqueID.toJSON()),this.extensions&&(e.extensions=this.extensions.toJSON()),e}}wt.CLASS_NAME="AttributeCertificateInfoV2";const ol="acinfo",ul="signatureAlgorithm",ll="signatureValue",V1=[ol,ul,ll];class Lt extends D{constructor(e={}){super(),this.acinfo=f(e,ol,Lt.defaultValues(ol)),this.signatureAlgorithm=f(e,ul,Lt.defaultValues(ul)),this.signatureValue=f(e,ll,Lt.defaultValues(ll)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ol:return new wt;case ul:return new V;case ll:return new re;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[wt.schema(t.acinfo||{}),V.schema(t.signatureAlgorithm||{}),new re({name:t.signatureValue||v})]})}fromSchema(e){T(e,V1);const t=R(e,e,Lt.schema({names:{acinfo:{names:{blockName:ol}},signatureAlgorithm:{names:{blockName:ul}},signatureValue:ll}}));O.assertSchema(t,this.className),this.acinfo=new wt({schema:t.result.acinfo}),this.signatureAlgorithm=new V({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}toSchema(){return new A({value:[this.acinfo.toSchema(),this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){return{acinfo:this.acinfo.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()}}}Lt.CLASS_NAME="AttributeCertificateV2";const Ha="contentType",si="content",B1=[Ha,si];class fe extends D{constructor(e={}){super(),this.contentType=f(e,Ha,fe.defaultValues(Ha)),this.content=f(e,si,fe.defaultValues(si)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ha:return v;case si:return new X;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ha:return typeof t=="string"&&t===this.defaultValues(Ha);case si:return t instanceof X;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return"optional"in t||(t.optional=!1),new A({name:t.blockName||"ContentInfo",optional:t.optional,value:[new J({name:t.contentType||Ha}),new I({idBlock:{tagClass:3,tagNumber:0},value:[new X({name:t.content||si})]})]})}fromSchema(e){T(e,B1);const t=R(e,e,fe.schema());O.assertSchema(t,this.className),this.contentType=t.result.contentType.valueBlock.toString(),this.content=t.result.content}toSchema(){return new A({value:[new J({value:this.contentType}),new I({idBlock:{tagClass:3,tagNumber:0},value:[this.content]})]})}toJSON(){const e={contentType:this.contentType};return this.content instanceof X||(e.content=this.content.toJSON()),e}}fe.CLASS_NAME="ContentInfo",fe.DATA=td,fe.SIGNED_DATA=Pg,fe.ENVELOPED_DATA=Og,fe.ENCRYPTED_DATA=Dg;const Cm="type",Em="value",mf="utcTimeName",ff="generalTimeName",P1=[mf,ff];var wp;(function(r){r[r.UTCTime=0]="UTCTime",r[r.GeneralizedTime=1]="GeneralizedTime",r[r.empty=2]="empty"})(wp||(wp={}));class Re extends D{constructor(e={}){super(),this.type=f(e,Cm,Re.defaultValues(Cm)),this.value=f(e,Em,Re.defaultValues(Em)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Cm:return 0;case Em:return new Date(0,0,0);default:return super.defaultValues(e)}}static schema(e={},t=!1){const s=f(e,"names",{});return new Ne({optional:t,value:[new Xm({name:s.utcTimeName||v}),new ke({name:s.generalTimeName||v})]})}fromSchema(e){T(e,P1);const t=R(e,e,Re.schema({names:{utcTimeName:mf,generalTimeName:ff}}));O.assertSchema(t,this.className),mf in t.result&&(this.type=0,this.value=t.result.utcTimeName.toDate()),ff in t.result&&(this.type=1,this.value=t.result.generalTimeName.toDate())}toSchema(){return this.type===0?new Xm({valueDate:this.value}):this.type===1?new ke({valueDate:this.value}):{}}toJSON(){return{type:this.type,value:this.value}}}Re.CLASS_NAME="Time";const xm="tbs",br="version",Wc="serialNumber",Gc="signature",zc="issuer",_c="notBefore",Xc="notAfter",Zc="subject",Qc="subjectPublicKeyInfo",cl="issuerUniqueID",hl="subjectUniqueID",ml="extensions",fl="signatureAlgorithm",dl="signatureValue",Ut="tbsCertificate",Dh="".concat(Ut,".").concat(br),sd="".concat(Ut,".").concat(Wc),rd="".concat(Ut,".").concat(Gc),ad="".concat(Ut,".").concat(zc),Th="".concat(Ut,".").concat(_c),Rh="".concat(Ut,".").concat(Xc),nd="".concat(Ut,".").concat(Zc),id="".concat(Ut,".").concat(Qc),Lh="".concat(Ut,".").concat(cl),Uh="".concat(Ut,".").concat(hl),zl="".concat(Ut,".").concat(ml),O1=[Ut,Dh,sd,rd,ad,Th,Rh,nd,id,Lh,Uh,zl,fl,dl];function D1(r={}){const e=f(r,"names",{});return new A({name:e.blockName||Ut,value:[new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new B({name:e.tbsCertificateVersion||Dh})]}),new B({name:e.tbsCertificateSerialNumber||sd}),V.schema(e.signature||{names:{blockName:rd}}),me.schema(e.issuer||{names:{blockName:ad}}),new A({name:e.tbsCertificateValidity||"tbsCertificate.validity",value:[Re.schema(e.notBefore||{names:{utcTimeName:Th,generalTimeName:Th}}),Re.schema(e.notAfter||{names:{utcTimeName:Rh,generalTimeName:Rh}})]}),me.schema(e.subject||{names:{blockName:nd}}),Ct.schema(e.subjectPublicKeyInfo||{names:{blockName:id}}),new _({name:e.tbsCertificateIssuerUniqueID||Lh,optional:!0,idBlock:{tagClass:3,tagNumber:1}}),new _({name:e.tbsCertificateSubjectUniqueID||Uh,optional:!0,idBlock:{tagClass:3,tagNumber:2}}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:3},value:[je.schema(e.extensions||{names:{blockName:zl}})]})]})}class oe extends D{get tbs(){return pe.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(f(e,xm,oe.defaultValues(xm))),this.version=f(e,br,oe.defaultValues(br)),this.serialNumber=f(e,Wc,oe.defaultValues(Wc)),this.signature=f(e,Gc,oe.defaultValues(Gc)),this.issuer=f(e,zc,oe.defaultValues(zc)),this.notBefore=f(e,_c,oe.defaultValues(_c)),this.notAfter=f(e,Xc,oe.defaultValues(Xc)),this.subject=f(e,Zc,oe.defaultValues(Zc)),this.subjectPublicKeyInfo=f(e,Qc,oe.defaultValues(Qc)),cl in e&&(this.issuerUniqueID=f(e,cl,oe.defaultValues(cl))),hl in e&&(this.subjectUniqueID=f(e,hl,oe.defaultValues(hl))),ml in e&&(this.extensions=f(e,ml,oe.defaultValues(ml))),this.signatureAlgorithm=f(e,fl,oe.defaultValues(fl)),this.signatureValue=f(e,dl,oe.defaultValues(dl)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case xm:return Ue;case br:return 0;case Wc:return new B;case Gc:return new V;case zc:return new me;case _c:return new Re;case Xc:return new Re;case Zc:return new me;case Qc:return new Ct;case cl:return Ue;case hl:return Ue;case ml:return[];case fl:return new V;case dl:return new re;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[D1(t.tbsCertificate),V.schema(t.signatureAlgorithm||{names:{blockName:fl}}),new re({name:t.signatureValue||dl})]})}fromSchema(e){T(e,O1);const t=R(e,e,oe.schema({names:{tbsCertificate:{names:{extensions:{names:{extensions:zl}}}}}}));O.assertSchema(t,this.className),this.tbsView=t.result.tbsCertificate.valueBeforeDecodeView,Dh in t.result&&(this.version=t.result[Dh].valueBlock.valueDec),this.serialNumber=t.result[sd],this.signature=new V({schema:t.result[rd]}),this.issuer=new me({schema:t.result[ad]}),this.notBefore=new Re({schema:t.result[Th]}),this.notAfter=new Re({schema:t.result[Rh]}),this.subject=new me({schema:t.result[nd]}),this.subjectPublicKeyInfo=new Ct({schema:t.result[id]}),Lh in t.result&&(this.issuerUniqueID=t.result[Lh].valueBlock.valueHex),Uh in t.result&&(this.subjectUniqueID=t.result[Uh].valueBlock.valueHex),zl in t.result&&(this.extensions=Array.from(t.result[zl],s=>new De({schema:s}))),this.signatureAlgorithm=new V({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}encodeTBS(){const e=[];return br in this&&this.version!==oe.defaultValues(br)&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new B({value:this.version})]})),e.push(this.serialNumber),e.push(this.signature.toSchema()),e.push(this.issuer.toSchema()),e.push(new A({value:[this.notBefore.toSchema(),this.notAfter.toSchema()]})),e.push(this.subject.toSchema()),e.push(this.subjectPublicKeyInfo.toSchema()),this.issuerUniqueID&&e.push(new _({optional:!0,idBlock:{tagClass:3,tagNumber:1},valueHex:this.issuerUniqueID})),this.subjectUniqueID&&e.push(new _({optional:!0,idBlock:{tagClass:3,tagNumber:2},valueHex:this.subjectUniqueID})),this.extensions&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:3},value:[new A({value:Array.from(this.extensions,t=>t.toSchema())})]})),new A({value:e})}toSchema(e=!1){let t;if(e===!1){if(!this.tbsView.byteLength)return oe.schema().value[0];const s=Le(this.tbsView);O.assert(s,"TBS Certificate"),t=s.result}else t=this.encodeTBS();return new A({value:[t,this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){const e={tbs:ce.ToHex(this.tbsView),version:this.version,serialNumber:this.serialNumber.toJSON(),signature:this.signature.toJSON(),issuer:this.issuer.toJSON(),notBefore:this.notBefore.toJSON(),notAfter:this.notAfter.toJSON(),subject:this.subject.toJSON(),subjectPublicKeyInfo:this.subjectPublicKeyInfo.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()};return br in this&&this.version!==oe.defaultValues(br)&&(e.version=this.version),this.issuerUniqueID&&(e.issuerUniqueID=ce.ToHex(this.issuerUniqueID)),this.subjectUniqueID&&(e.subjectUniqueID=ce.ToHex(this.subjectUniqueID)),this.extensions&&(e.extensions=Array.from(this.extensions,t=>t.toJSON())),e}async getPublicKey(e,t=Q(!0)){return t.getPublicKey(this.subjectPublicKeyInfo,this.signatureAlgorithm,e)}async getKeyHash(e="SHA-1",t=Q(!0)){return t.digest({name:e},this.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView)}async sign(e,t="SHA-1",s=Q(!0)){if(!e)throw new Error("Need to provide a private key for signing");const a=await s.getSignatureParameters(e,t),n=a.parameters;this.signature=a.signatureAlgorithm,this.signatureAlgorithm=a.signatureAlgorithm,this.tbsView=new Uint8Array(this.encodeTBS().toBER());const u=await s.signWithPrivateKey(this.tbsView,e,n);this.signatureValue=new re({valueHex:u})}async verify(e,t=Q(!0)){let s;if(e?s=e.subjectPublicKeyInfo:this.issuer.isEqual(this.subject)&&(s=this.subjectPublicKeyInfo),!(s instanceof Ct))throw new Error("Please provide issuer certificate as a parameter");return t.verifyWithPublicKey(this.tbsView,this.signatureValue,s,this.signatureAlgorithm)}}oe.CLASS_NAME="Certificate";function $g(r,e=null){if(e&&r.issuer.isEqual(e.issuer)&&r.serialNumber.isEqual(e.serialNumber))return null;let t=!1;if(r.extensions){for(const s of r.extensions)if(s.extnID===Zf&&s.parsedValue instanceof kn&&s.parsedValue.cA){t=!0;break}}return t?r:null}const ri="certId",ai="certValue",jn="parsedValue",T1=[ri,ai];class yn extends D{constructor(e={}){super(),this.certId=f(e,ri,yn.defaultValues(ri)),this.certValue=f(e,ai,yn.defaultValues(ai)),jn in e&&(this.parsedValue=f(e,jn,yn.defaultValues(jn))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ri:return v;case ai:return new X;case jn:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ri:return t===v;case ai:return t instanceof X;case jn:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.id||"id"}),new I({idBlock:{tagClass:3,tagNumber:0},value:[new X({name:t.value||"value"})]})]})}fromSchema(e){T(e,T1);const t=R(e,e,yn.schema({names:{id:ri,value:ai}}));O.assertSchema(t,this.className),this.certId=t.result.certId.valueBlock.toString(),this.certValue=t.result.certValue;const s=this.certValue.valueBlock.valueHexView;switch(this.certId){case Qd:try{this.parsedValue=oe.fromBER(s)}catch(a){Lt.fromBER(s)}break;case Yd:this.parsedValue=Lt.fromBER(s);break;case j0:default:throw new Error("Incorrect CERT_ID value in CertBag: ".concat(this.certId))}}toSchema(){return jn in this&&("acinfo"in this.parsedValue?this.certId=Yd:this.certId=Qd,this.certValue=new $({valueHex:this.parsedValue.toSchema().toBER(!1)})),new A({value:[new J({value:this.certId}),new I({idBlock:{tagClass:3,tagNumber:0},value:["toSchema"in this.certValue?this.certValue.toSchema():this.certValue]})]})}toJSON(){return{certId:this.certId,certValue:this.certValue.toJSON()}}}yn.CLASS_NAME="CertBag";const pl="userCertificate",ni="revocationDate",Ma="crlEntryExtensions",R1=[pl,ni,Ma];class vn extends D{constructor(e={}){super(),this.userCertificate=f(e,pl,vn.defaultValues(pl)),this.revocationDate=f(e,ni,vn.defaultValues(ni)),Ma in e&&(this.crlEntryExtensions=f(e,Ma,vn.defaultValues(Ma))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case pl:return new B;case ni:return new Re;case Ma:return new je;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.userCertificate||pl}),Re.schema({names:{utcTimeName:t.revocationDate||ni,generalTimeName:t.revocationDate||ni}}),je.schema({names:{blockName:t.crlEntryExtensions||Ma}},!0)]})}fromSchema(e){T(e,R1);const t=R(e,e,vn.schema());O.assertSchema(t,this.className),this.userCertificate=t.result.userCertificate,this.revocationDate=new Re({schema:t.result.revocationDate}),Ma in t.result&&(this.crlEntryExtensions=new je({schema:t.result.crlEntryExtensions}))}toSchema(){const e=[this.userCertificate,this.revocationDate.toSchema()];return this.crlEntryExtensions&&e.push(this.crlEntryExtensions.toSchema()),new A({value:e})}toJSON(){const e={userCertificate:this.userCertificate.toJSON(),revocationDate:this.revocationDate.toJSON()};return this.crlEntryExtensions&&(e.crlEntryExtensions=this.crlEntryExtensions.toJSON()),e}}vn.CLASS_NAME="RevokedCertificate";const Im="tbs",Ho="version",Vm="signature",Bm="issuer",Pm="thisUpdate",Nc="nextUpdate",kc="revokedCertificates",Cc="crlExtensions",gl="signatureAlgorithm",wl="signatureValue",qs="tbsCertList",jh="".concat(qs,".version"),od="".concat(qs,".signature"),ud="".concat(qs,".issuer"),$h="".concat(qs,".thisUpdate"),oc="".concat(qs,".nextUpdate"),Kh="".concat(qs,".revokedCertificates"),Hh="".concat(qs,".extensions"),L1=[qs,jh,od,ud,$h,oc,Kh,Hh,gl,wl];function U1(r={}){const e=f(r,"names",{});return new A({name:e.blockName||qs,value:[new B({optional:!0,name:e.tbsCertListVersion||jh,value:2}),V.schema(e.signature||{names:{blockName:od}}),me.schema(e.issuer||{names:{blockName:ud}}),Re.schema(e.tbsCertListThisUpdate||{names:{utcTimeName:$h,generalTimeName:$h}}),Re.schema(e.tbsCertListNextUpdate||{names:{utcTimeName:oc,generalTimeName:oc}},!0),new A({optional:!0,value:[new Z({name:e.tbsCertListRevokedCertificates||Kh,value:new A({value:[new B,Re.schema(),je.schema({},!0)]})})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[je.schema(e.crlExtensions||{names:{blockName:Hh}})]})]})}const j1=[Yf,Ng,C0,E0,kg,Qf,ed,x0,I0,Cg];class Me extends D{get tbs(){return pe.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(f(e,Im,Me.defaultValues(Im))),this.version=f(e,Ho,Me.defaultValues(Ho)),this.signature=f(e,Vm,Me.defaultValues(Vm)),this.issuer=f(e,Bm,Me.defaultValues(Bm)),this.thisUpdate=f(e,Pm,Me.defaultValues(Pm)),Nc in e&&(this.nextUpdate=f(e,Nc,Me.defaultValues(Nc))),kc in e&&(this.revokedCertificates=f(e,kc,Me.defaultValues(kc))),Cc in e&&(this.crlExtensions=f(e,Cc,Me.defaultValues(Cc))),this.signatureAlgorithm=f(e,gl,Me.defaultValues(gl)),this.signatureValue=f(e,wl,Me.defaultValues(wl)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Im:return Ue;case Ho:return 0;case Vm:return new V;case Bm:return new me;case Pm:return new Re;case Nc:return new Re;case kc:return[];case Cc:return new je;case gl:return new V;case wl:return new re;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||"CertificateList",value:[U1(e),V.schema(t.signatureAlgorithm||{names:{blockName:gl}}),new re({name:t.signatureValue||wl})]})}fromSchema(e){T(e,L1);const t=R(e,e,Me.schema());O.assertSchema(t,this.className),this.tbsView=t.result.tbsCertList.valueBeforeDecodeView,jh in t.result&&(this.version=t.result[jh].valueBlock.valueDec),this.signature=new V({schema:t.result[od]}),this.issuer=new me({schema:t.result[ud]}),this.thisUpdate=new Re({schema:t.result[$h]}),oc in t.result&&(this.nextUpdate=new Re({schema:t.result[oc]})),Kh in t.result&&(this.revokedCertificates=Array.from(t.result[Kh],s=>new vn({schema:s}))),Hh in t.result&&(this.crlExtensions=new je({schema:t.result[Hh]})),this.signatureAlgorithm=new V({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}encodeTBS(){const e=[];return this.version!==Me.defaultValues(Ho)&&e.push(new B({value:this.version})),e.push(this.signature.toSchema()),e.push(this.issuer.toSchema()),e.push(this.thisUpdate.toSchema()),this.nextUpdate&&e.push(this.nextUpdate.toSchema()),this.revokedCertificates&&e.push(new A({value:Array.from(this.revokedCertificates,t=>t.toSchema())})),this.crlExtensions&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[this.crlExtensions.toSchema()]})),new A({value:e})}toSchema(e=!1){let t;if(e)t=this.encodeTBS();else{if(!this.tbsView.byteLength)return Me.schema();const s=Le(this.tbsView);O.assert(s,"TBS Certificate Revocation List"),t=s.result}return new A({value:[t,this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){const e={tbs:ce.ToHex(this.tbsView),version:this.version,signature:this.signature.toJSON(),issuer:this.issuer.toJSON(),thisUpdate:this.thisUpdate.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()};return this.version!==Me.defaultValues(Ho)&&(e.version=this.version),this.nextUpdate&&(e.nextUpdate=this.nextUpdate.toJSON()),this.revokedCertificates&&(e.revokedCertificates=Array.from(this.revokedCertificates,t=>t.toJSON())),this.crlExtensions&&(e.crlExtensions=this.crlExtensions.toJSON()),e}isCertificateRevoked(e){if(!this.issuer.isEqual(e.issuer)||!this.revokedCertificates)return!1;for(const t of this.revokedCertificates)if(t.userCertificate.isEqual(e.serialNumber))return!0;return!1}async sign(e,t="SHA-1",s=Q(!0)){if(!e)throw new Error("Need to provide a private key for signing");const a=await s.getSignatureParameters(e,t),{parameters:n}=a;this.signature=a.signatureAlgorithm,this.signatureAlgorithm=a.signatureAlgorithm,this.tbsView=new Uint8Array(this.encodeTBS().toBER());const u=await s.signWithPrivateKey(this.tbsView,e,n);this.signatureValue=new re({valueHex:u})}async verify(e={},t=Q(!0)){let s;if(e.issuerCertificate&&(s=e.issuerCertificate.subjectPublicKeyInfo,!this.issuer.isEqual(e.issuerCertificate.subject)))return!1;if(e.publicKeyInfo&&(s=e.publicKeyInfo),!s)throw new Error("Issuer's certificate must be provided as an input parameter");if(this.crlExtensions){for(const a of this.crlExtensions.extensions)if(a.critical&&!j1.includes(a.extnID))return!1}return t.verifyWithPublicKey(this.tbsView,this.signatureValue,s,this.signatureAlgorithm)}}Me.CLASS_NAME="CertificateRevocationList";const ii="crlId",oi="crlValue",Mo="parsedValue",$1=[ii,oi];class bn extends D{constructor(e={}){super(),this.crlId=f(e,ii,bn.defaultValues(ii)),this.crlValue=f(e,oi,bn.defaultValues(oi)),Mo in e&&(this.parsedValue=f(e,Mo,bn.defaultValues(Mo))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ii:return v;case oi:return new X;case Mo:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ii:return t===v;case oi:return t instanceof X;case Mo:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.id||"id"}),new I({idBlock:{tagClass:3,tagNumber:0},value:[new X({name:t.value||"value"})]})]})}fromSchema(e){T(e,$1);const t=R(e,e,bn.schema({names:{id:ii,value:oi}}));switch(O.assertSchema(t,this.className),this.crlId=t.result.crlId.valueBlock.toString(),this.crlValue=t.result.crlValue,this.crlId){case ep:this.parsedValue=Me.fromBER(this.certValue.valueBlock.valueHex);break;default:throw new Error("Incorrect CRL_ID value in CRLBag: ".concat(this.crlId))}}toSchema(){return this.parsedValue&&(this.crlId=ep,this.crlValue=new $({valueHex:this.parsedValue.toSchema().toBER(!1)})),new A({value:[new J({value:this.crlId}),new I({idBlock:{tagClass:3,tagNumber:0},value:[this.crlValue.toSchema()]})]})}toJSON(){return{crlId:this.crlId,crlValue:this.crlValue.toJSON()}}}bn.CLASS_NAME="CRLBag";const ui="version",li="encryptedContentInfo",Sr="unprotectedAttrs",K1=[ui,li,Sr];class ds extends D{constructor(e={}){super(),this.version=f(e,ui,ds.defaultValues(ui)),this.encryptedContentInfo=f(e,li,ds.defaultValues(li)),Sr in e&&(this.unprotectedAttrs=f(e,Sr,ds.defaultValues(Sr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ui:return 0;case li:return new Oe;case Sr:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ui:return t===0;case li:return Oe.compareWithDefault("contentType",t.contentType)&&Oe.compareWithDefault("contentEncryptionAlgorithm",t.contentEncryptionAlgorithm)&&Oe.compareWithDefault("encryptedContent",t.encryptedContent);case Sr:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),Oe.schema(t.encryptedContentInfo||{}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new Z({name:t.unprotectedAttrs||v,value:ge.schema()})]})]})}fromSchema(e){T(e,K1);const t=R(e,e,ds.schema({names:{version:ui,encryptedContentInfo:{names:{blockName:li}},unprotectedAttrs:Sr}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.encryptedContentInfo=new Oe({schema:t.result.encryptedContentInfo}),Sr in t.result&&(this.unprotectedAttrs=Array.from(t.result.unprotectedAttrs,s=>new ge({schema:s})))}toSchema(){const e=[];return e.push(new B({value:this.version})),e.push(this.encryptedContentInfo.toSchema()),this.unprotectedAttrs&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.unprotectedAttrs,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={version:this.version,encryptedContentInfo:this.encryptedContentInfo.toJSON()};return this.unprotectedAttrs&&(e.unprotectedAttrs=Array.from(this.unprotectedAttrs,t=>t.toJSON())),e}async encrypt(e,t=Q(!0)){he.assert(e,"parameters","object");const s=os(it({},e),{contentType:"1.2.840.113549.1.7.1"});this.encryptedContentInfo=await t.encryptEncryptedContentInfo(s)}async decrypt(e,t=Q(!0)){he.assert(e,"parameters","object");const s=os(it({},e),{encryptedContentInfo:this.encryptedContentInfo});return t.decryptEncryptedContentInfo(s)}}ds.CLASS_NAME="EncryptedData";const Fa="encryptionAlgorithm",Ar="encryptedData",Fo="parsedValue",H1=[Fa,Ar];class Jr extends D{constructor(e={}){super(),this.encryptionAlgorithm=f(e,Fa,Jr.defaultValues(Fa)),this.encryptedData=f(e,Ar,Jr.defaultValues(Ar)),Fo in e&&(this.parsedValue=f(e,Fo,Jr.defaultValues(Fo))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Fa:return new V;case Ar:return new $;case Fo:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Fa:return V.compareWithDefault("algorithmId",t.algorithmId)&&!("algorithmParams"in t);case Ar:return t.isEqual(Jr.defaultValues(e));case Fo:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[V.schema(t.encryptionAlgorithm||{names:{blockName:Fa}}),new Ne({value:[new $({name:t.encryptedData||Ar}),new $({idBlock:{isConstructed:!0},name:t.encryptedData||Ar})]})]})}fromSchema(e){T(e,H1);const t=R(e,e,Jr.schema({names:{encryptionAlgorithm:{names:{blockName:Fa}},encryptedData:Ar}}));O.assertSchema(t,this.className),this.encryptionAlgorithm=new V({schema:t.result.encryptionAlgorithm}),this.encryptedData=t.result.encryptedData}toSchema(){return new A({value:[this.encryptionAlgorithm.toSchema(),this.encryptedData]})}toJSON(){return{encryptionAlgorithm:this.encryptionAlgorithm.toJSON(),encryptedData:this.encryptedData.toJSON()}}async parseInternalValues(e,t=Q(!0)){const s=await new ds({encryptedContentInfo:new Oe({contentEncryptionAlgorithm:this.encryptionAlgorithm,encryptedContent:this.encryptedData})}).decrypt(e,t);this.parsedValue=Ft.fromBER(s)}async makeInternalValues(e,t=Q(!0)){if(!this.parsedValue)throw new Error('Please initialize "parsedValue" first');const s=new ds,a=os(it({},e),{contentToEncrypt:this.parsedValue.toSchema().toBER(!1)});if(await s.encrypt(a,t),!s.encryptedContentInfo.encryptedContent)throw new Error("The filed `encryptedContent` in EncryptedContentInfo is empty");this.encryptionAlgorithm=s.encryptedContentInfo.contentEncryptionAlgorithm,this.encryptedData=s.encryptedContentInfo.encryptedContent}}Jr.CLASS_NAME="PKCS8ShroudedKeyBag";const ci="secretTypeId",hi="secretValue",M1=[ci,hi];class So extends D{constructor(e={}){super(),this.secretTypeId=f(e,ci,So.defaultValues(ci)),this.secretValue=f(e,hi,So.defaultValues(hi)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ci:return v;case hi:return new X;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ci:return t===v;case hi:return t instanceof X;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.id||"id"}),new I({idBlock:{tagClass:3,tagNumber:0},value:[new X({name:t.value||"value"})]})]})}fromSchema(e){T(e,M1);const t=R(e,e,So.schema({names:{id:ci,value:hi}}));O.assertSchema(t,this.className),this.secretTypeId=t.result.secretTypeId.valueBlock.toString(),this.secretValue=t.result.secretValue}toSchema(){return new A({value:[new J({value:this.secretTypeId}),new I({idBlock:{tagClass:3,tagNumber:0},value:[this.secretValue.toSchema()]})]})}toJSON(){return{secretTypeId:this.secretTypeId,secretValue:this.secretValue.toJSON()}}}So.CLASS_NAME="SecretBag";class Mr{static getItems(){return this.items||(this.items={},Mr.register("1.2.840.113549.1.12.10.1.1",Ft),Mr.register("1.2.840.113549.1.12.10.1.2",Jr),Mr.register("1.2.840.113549.1.12.10.1.3",yn),Mr.register("1.2.840.113549.1.12.10.1.4",bn),Mr.register("1.2.840.113549.1.12.10.1.5",So),Mr.register("1.2.840.113549.1.12.10.1.6",js)),this.items}static register(e,t){this.getItems()[e]=t}static find(e){return this.getItems()[e]||null}}const Ja="bagId",qa="bagValue",Cs="bagAttributes",F1=[Ja,qa,Cs];class Yr extends D{constructor(e={}){super(),this.bagId=f(e,Ja,Yr.defaultValues(Ja)),this.bagValue=f(e,qa,Yr.defaultValues(qa)),Cs in e&&(this.bagAttributes=f(e,Cs,Yr.defaultValues(Cs))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ja:return v;case qa:return new X;case Cs:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ja:return t===v;case qa:return t instanceof X;case Cs:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.bagId||Ja}),new I({idBlock:{tagClass:3,tagNumber:0},value:[new X({name:t.bagValue||qa})]}),new Je({optional:!0,value:[new Z({name:t.bagAttributes||Cs,value:ge.schema()})]})]})}fromSchema(e){T(e,F1);const t=R(e,e,Yr.schema({names:{bagId:Ja,bagValue:qa,bagAttributes:Cs}}));O.assertSchema(t,this.className),this.bagId=t.result.bagId.valueBlock.toString();const s=Mr.find(this.bagId);if(!s)throw new Error("Invalid BAG_ID for SafeBag: ".concat(this.bagId));this.bagValue=new s({schema:t.result.bagValue}),Cs in t.result&&(this.bagAttributes=Array.from(t.result.bagAttributes,a=>new ge({schema:a})))}toSchema(){const e=[new J({value:this.bagId}),new I({idBlock:{tagClass:3,tagNumber:0},value:[this.bagValue.toSchema()]})];return this.bagAttributes&&e.push(new Je({value:Array.from(this.bagAttributes,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={bagId:this.bagId,bagValue:this.bagValue.toJSON()};return this.bagAttributes&&(e.bagAttributes=Array.from(this.bagAttributes,t=>t.toJSON())),e}}Yr.CLASS_NAME="SafeBag";const $n="safeBags";class js extends D{constructor(e={}){super(),this.safeBags=f(e,$n,js.defaultValues($n)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case $n:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case $n:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.safeBags||v,value:Yr.schema()})]})}fromSchema(e){T(e,[$n]);const t=R(e,e,js.schema({names:{safeBags:$n}}));O.assertSchema(t,this.className),this.safeBags=Array.from(t.result.safeBags,s=>new Yr({schema:s}))}toSchema(){return new A({value:Array.from(this.safeBags,e=>e.toSchema())})}toJSON(){return{safeBags:Array.from(this.safeBags,e=>e.toJSON())}}}js.CLASS_NAME="SafeContents";const yl="otherCertFormat",vl="otherCert",J1=[yl,vl];class ra extends D{constructor(e={}){super(),this.otherCertFormat=f(e,yl,ra.defaultValues(yl)),this.otherCert=f(e,vl,ra.defaultValues(vl)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case yl:return v;case vl:return new X;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.otherCertFormat||yl}),new X({name:t.otherCert||vl})]})}fromSchema(e){T(e,J1);const t=R(e,e,ra.schema());O.assertSchema(t,this.className),this.otherCertFormat=t.result.otherCertFormat.valueBlock.toString(),this.otherCert=t.result.otherCert}toSchema(){return new A({value:[new J({value:this.otherCertFormat}),this.otherCert]})}toJSON(){const e={otherCertFormat:this.otherCertFormat};return this.otherCert instanceof X||(e.otherCert=this.otherCert.toJSON()),e}}const bl="certificates",q1=[bl];class ps extends D{constructor(e={}){super(),this.certificates=f(e,bl,ps.defaultValues(bl)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case bl:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new Je({name:t.blockName||v,value:[new Z({name:t.certificates||bl,value:new Ne({value:[oe.schema(),new I({idBlock:{tagClass:3,tagNumber:0},value:[new X]}),new I({idBlock:{tagClass:3,tagNumber:1},value:[new A]}),new I({idBlock:{tagClass:3,tagNumber:2},value:Lt.schema().valueBlock.value}),new I({idBlock:{tagClass:3,tagNumber:3},value:ra.schema().valueBlock.value})]})})]})}fromSchema(e){T(e,q1);const t=R(e,e,ps.schema());O.assertSchema(t,this.className),this.certificates=Array.from(t.result.certificates||[],s=>{const a=s.idBlock.tagNumber;if(s.idBlock.tagClass===1)return new oe({schema:s});const n=new A({value:s.valueBlock.value});switch(a){case 1:return n.valueBlock.value[0].valueBlock.value[0].valueBlock.valueDec===1?new Lt({schema:n}):new Ls({schema:n});case 2:return new Lt({schema:n});case 3:return new ra({schema:n})}return s})}toSchema(){return new Je({value:Array.from(this.certificates,e=>{switch(!0){case e instanceof oe:return e.toSchema();case e instanceof Ls:return new I({idBlock:{tagClass:3,tagNumber:1},value:e.toSchema().valueBlock.value});case e instanceof Lt:return new I({idBlock:{tagClass:3,tagNumber:2},value:e.toSchema().valueBlock.value});case e instanceof ra:return new I({idBlock:{tagClass:3,tagNumber:3},value:e.toSchema().valueBlock.value})}return e.toSchema()})})}toJSON(){return{certificates:Array.from(this.certificates,e=>e.toJSON())}}}ps.CLASS_NAME="CertificateSet";const Sl="otherRevInfoFormat",Al="otherRevInfo",W1=[Sl,Al];class Hs extends D{constructor(e={}){super(),this.otherRevInfoFormat=f(e,Sl,Hs.defaultValues(Sl)),this.otherRevInfo=f(e,Al,Hs.defaultValues(Al)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Sl:return v;case Al:return new X;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.otherRevInfoFormat||Sl}),new X({name:t.otherRevInfo||Al})]})}fromSchema(e){T(e,W1);const t=R(e,e,Hs.schema());O.assertSchema(t,this.className),this.otherRevInfoFormat=t.result.otherRevInfoFormat.valueBlock.toString(),this.otherRevInfo=t.result.otherRevInfo}toSchema(){return new A({value:[new J({value:this.otherRevInfoFormat}),this.otherRevInfo]})}toJSON(){const e={otherRevInfoFormat:this.otherRevInfoFormat};return this.otherRevInfo instanceof X||(e.otherRevInfo=this.otherRevInfo.toJSON()),e}}Hs.CLASS_NAME="OtherRevocationInfoFormat";const Nl="crls",Om="otherRevocationInfos",G1=[Nl];class Ms extends D{constructor(e={}){super(),this.crls=f(e,Nl,Ms.defaultValues(Nl)),this.otherRevocationInfos=f(e,Om,Ms.defaultValues(Om)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Nl:return[];case Om:return[];default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new Je({name:t.blockName||v,value:[new Z({name:t.crls||v,value:new Ne({value:[Me.schema(),new I({idBlock:{tagClass:3,tagNumber:1},value:[new J,new X]})]})})]})}fromSchema(e){T(e,G1);const t=R(e,e,Ms.schema({names:{crls:Nl}}));if(O.assertSchema(t,this.className),t.result.crls)for(const s of t.result.crls)s.idBlock.tagClass===1?this.crls.push(new Me({schema:s})):this.otherRevocationInfos.push(new Hs({schema:s}))}toSchema(){const e=[];return e.push(...Array.from(this.crls,t=>t.toSchema())),e.push(...Array.from(this.otherRevocationInfos,t=>{const s=t.toSchema();return s.idBlock.tagClass=3,s.idBlock.tagNumber=1,s})),new Je({value:e})}toJSON(){return{crls:Array.from(this.crls,e=>e.toJSON()),otherRevocationInfos:Array.from(this.otherRevocationInfos,e=>e.toJSON())}}}Ms.CLASS_NAME="RevocationInfoChoices";const kl="certs",Wa="crls",z1=[kl,Wa];class Pn extends D{constructor(e={}){super(),this.crls=f(e,Wa,Pn.defaultValues(Wa)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case kl:return new ps;case Wa:return new Ms;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case kl:return t.certificates.length===0;case Wa:return t.crls.length===0&&t.otherRevocationInfos.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new I({name:t.certs||v,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:ps.schema().valueBlock.value}),new I({name:t.crls||v,optional:!0,idBlock:{tagClass:3,tagNumber:1},value:Ms.schema().valueBlock.value})]})}fromSchema(e){T(e,z1);const t=R(e,e,Pn.schema({names:{certs:kl,crls:Wa}}));O.assertSchema(t,this.className),kl in t.result&&(this.certs=new ps({schema:new Je({value:t.result.certs.valueBlock.value})})),Wa in t.result&&(this.crls=new Ms({schema:new Je({value:t.result.crls.valueBlock.value})}))}toSchema(){const e=[];return this.certs&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:this.certs.toSchema().valueBlock.value})),this.crls&&e.push(new I({idBlock:{tagClass:3,tagNumber:1},value:this.crls.toSchema().valueBlock.value})),new A({value:e})}toJSON(){const e={};return this.certs&&(e.certs=this.certs.toJSON()),this.crls&&(e.crls=this.crls.toJSON()),e}}Pn.CLASS_NAME="OriginatorInfo";const Cl="issuer",El="serialNumber",_1=[Cl,El];class $e extends D{constructor(e={}){super(),this.issuer=f(e,Cl,$e.defaultValues(Cl)),this.serialNumber=f(e,El,$e.defaultValues(El)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Cl:return new me;case El:return new B;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[me.schema(t.issuer||{}),new B({name:t.serialNumber||v})]})}fromSchema(e){T(e,_1);const t=R(e,e,$e.schema({names:{issuer:{names:{blockName:Cl}},serialNumber:El}}));O.assertSchema(t,this.className),this.issuer=new me({schema:t.result.issuer}),this.serialNumber=t.result.serialNumber}toSchema(){return new A({value:[this.issuer.toSchema(),this.serialNumber]})}toJSON(){return{issuer:this.issuer.toJSON(),serialNumber:this.serialNumber.toJSON()}}}$e.CLASS_NAME="IssuerAndSerialNumber";const Ec="variant",Jo="value",X1=["blockName"];class Ao extends D{constructor(e={}){super(),this.variant=f(e,Ec,Ao.defaultValues(Ec)),Jo in e&&(this.value=f(e,Jo,Ao.defaultValues(Jo))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ec:return-1;case Jo:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ec:return t===-1;case Jo:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new Ne({value:[$e.schema({names:{blockName:t.blockName||v}}),new _({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:0}})]})}fromSchema(e){T(e,X1);const t=R(e,e,Ao.schema({names:{blockName:"blockName"}}));O.assertSchema(t,this.className),t.result.blockName.idBlock.tagClass===1?(this.variant=1,this.value=new $e({schema:t.result.blockName})):(this.variant=2,this.value=new $({valueHex:t.result.blockName.valueBlock.valueHex}))}toSchema(){switch(this.variant){case 1:if(!(this.value instanceof $e))throw new Error("Incorrect type of RecipientIdentifier.value. It should be IssuerAndSerialNumber.");return this.value.toSchema();case 2:if(!(this.value instanceof $))throw new Error("Incorrect type of RecipientIdentifier.value. It should be ASN.1 OctetString.");return new _({idBlock:{tagClass:3,tagNumber:0},valueHex:this.value.valueBlock.valueHexView});default:return new X}}toJSON(){const e={variant:this.variant};return(this.variant===1||this.variant===2)&&this.value&&(e.value=this.value.toJSON()),e}}Ao.CLASS_NAME="RecipientIdentifier";const Ga="version",mi="rid",fi="keyEncryptionAlgorithm",di="encryptedKey",xc="recipientCertificate",Z1=[Ga,mi,fi,di];class Pt extends D{constructor(e={}){super(),this.version=f(e,Ga,Pt.defaultValues(Ga)),this.rid=f(e,mi,Pt.defaultValues(mi)),this.keyEncryptionAlgorithm=f(e,fi,Pt.defaultValues(fi)),this.encryptedKey=f(e,di,Pt.defaultValues(di)),this.recipientCertificate=f(e,xc,Pt.defaultValues(xc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ga:return-1;case mi:return{};case fi:return new V;case di:return new $;case xc:return new oe;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ga:return t===Pt.defaultValues(Ga);case mi:return Object.keys(t).length===0;case fi:case di:return t.isEqual(Pt.defaultValues(e));case xc:return!1;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),Ao.schema(t.rid||{}),V.schema(t.keyEncryptionAlgorithm||{}),new $({name:t.encryptedKey||v})]})}fromSchema(e){T(e,Z1);const t=R(e,e,Pt.schema({names:{version:Ga,rid:{names:{blockName:mi}},keyEncryptionAlgorithm:{names:{blockName:fi}},encryptedKey:di}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,t.result.rid.idBlock.tagClass===3?this.rid=new $({valueHex:t.result.rid.valueBlock.valueHex}):this.rid=new $e({schema:t.result.rid}),this.keyEncryptionAlgorithm=new V({schema:t.result.keyEncryptionAlgorithm}),this.encryptedKey=t.result.encryptedKey}toSchema(){const e=[];return this.rid instanceof $e?(this.version=0,e.push(new B({value:this.version})),e.push(this.rid.toSchema())):(this.version=2,e.push(new B({value:this.version})),e.push(new _({idBlock:{tagClass:3,tagNumber:0},valueHex:this.rid.valueBlock.valueHexView}))),e.push(this.keyEncryptionAlgorithm.toSchema()),e.push(this.encryptedKey),new A({value:e})}toJSON(){return{version:this.version,rid:this.rid.toJSON(),keyEncryptionAlgorithm:this.keyEncryptionAlgorithm.toJSON(),encryptedKey:this.encryptedKey.toJSON()}}}Pt.CLASS_NAME="KeyTransRecipientInfo";const pi="algorithm",gi="publicKey",Q1=[pi,gi];class $s extends D{constructor(e={}){super(),this.algorithm=f(e,pi,$s.defaultValues(pi)),this.publicKey=f(e,gi,$s.defaultValues(gi)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case pi:return new V;case gi:return new re;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case pi:case gi:return t.isEqual($s.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[V.schema(t.algorithm||{}),new re({name:t.publicKey||v})]})}fromSchema(e){T(e,Q1);const t=R(e,e,$s.schema({names:{algorithm:{names:{blockName:pi}},publicKey:gi}}));O.assertSchema(t,this.className),this.algorithm=new V({schema:t.result.algorithm}),this.publicKey=t.result.publicKey}toSchema(){return new A({value:[this.algorithm.toSchema(),this.publicKey]})}toJSON(){return{algorithm:this.algorithm.toJSON(),publicKey:this.publicKey.toJSON()}}}$s.CLASS_NAME="OriginatorPublicKey";const Ic="variant",qo="value",Y1=["blockName"];class Fs extends D{constructor(e={}){super(),this.variant=f(e,Ic,Fs.defaultValues(Ic)),qo in e&&(this.value=f(e,qo,Fs.defaultValues(qo))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ic:return-1;case qo:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ic:return t===-1;case qo:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new Ne({value:[$e.schema({names:{blockName:t.blockName||v}}),new _({idBlock:{tagClass:3,tagNumber:0},name:t.blockName||v}),new I({idBlock:{tagClass:3,tagNumber:1},name:t.blockName||v,value:$s.schema().valueBlock.value})]})}fromSchema(e){T(e,Y1);const t=R(e,e,Fs.schema({names:{blockName:"blockName"}}));O.assertSchema(t,this.className),t.result.blockName.idBlock.tagClass===1?(this.variant=1,this.value=new $e({schema:t.result.blockName})):t.result.blockName.idBlock.tagNumber===0?(t.result.blockName.idBlock.tagClass=1,t.result.blockName.idBlock.tagNumber=4,this.variant=2,this.value=t.result.blockName):(this.variant=3,this.value=new $s({schema:new A({value:t.result.blockName.valueBlock.value})}))}toSchema(){switch(this.variant){case 1:return this.value.toSchema();case 2:return this.value.idBlock.tagClass=3,this.value.idBlock.tagNumber=0,this.value;case 3:{const e=this.value.toSchema();return e.idBlock.tagClass=3,e.idBlock.tagNumber=1,e}default:return new X}}toJSON(){const e={variant:this.variant};return(this.variant===1||this.variant===2||this.variant===3)&&(e.value=this.value.toJSON()),e}}Fs.CLASS_NAME="OriginatorIdentifierOrKey";const wi="keyAttrId",ls="keyAttr",eS=[wi,ls];class ns extends D{constructor(e={}){super(),this.keyAttrId=f(e,wi,ns.defaultValues(wi)),ls in e&&(this.keyAttr=f(e,ls,ns.defaultValues(ls))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case wi:return v;case ls:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case wi:return typeof t=="string"&&t===v;case ls:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({optional:t.optional||!0,name:t.blockName||v,value:[new J({name:t.keyAttrId||v}),new X({optional:!0,name:t.keyAttr||v})]})}fromSchema(e){T(e,eS);const t=R(e,e,ns.schema({names:{keyAttrId:wi,keyAttr:ls}}));O.assertSchema(t,this.className),this.keyAttrId=t.result.keyAttrId.valueBlock.toString(),ls in t.result&&(this.keyAttr=t.result.keyAttr)}toSchema(){const e=[];return e.push(new J({value:this.keyAttrId})),ls in this&&e.push(this.keyAttr),new A({value:e})}toJSON(){const e={keyAttrId:this.keyAttrId};return ls in this&&(e.keyAttr=this.keyAttr.toJSON()),e}}ns.CLASS_NAME="OtherKeyAttribute";const za="subjectKeyIdentifier",Nr="date",kr="other",tS=[za,Nr,kr];class ms extends D{constructor(e={}){super(),this.subjectKeyIdentifier=f(e,za,ms.defaultValues(za)),Nr in e&&(this.date=f(e,Nr,ms.defaultValues(Nr))),kr in e&&(this.other=f(e,kr,ms.defaultValues(kr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case za:return new $;case Nr:return new ke;case kr:return new ns;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case za:return t.isEqual(ms.defaultValues(za));case Nr:return t.year===0&&t.month===0&&t.day===0&&t.hour===0&&t.minute===0&&t.second===0&&t.millisecond===0;case kr:return t.keyAttrId===v&&!("keyAttr"in t);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new $({name:t.subjectKeyIdentifier||v}),new ke({optional:!0,name:t.date||v}),ns.schema(t.other||{})]})}fromSchema(e){T(e,tS);const t=R(e,e,ms.schema({names:{subjectKeyIdentifier:za,date:Nr,other:{names:{blockName:kr}}}}));O.assertSchema(t,this.className),this.subjectKeyIdentifier=t.result.subjectKeyIdentifier,Nr in t.result&&(this.date=t.result.date),kr in t.result&&(this.other=new ns({schema:t.result.other}))}toSchema(){const e=[];return e.push(this.subjectKeyIdentifier),this.date&&e.push(this.date),this.other&&e.push(this.other.toSchema()),new A({value:e})}toJSON(){const e={subjectKeyIdentifier:this.subjectKeyIdentifier.toJSON()};return this.date&&(e.date=this.date.toJSON()),this.other&&(e.other=this.other.toJSON()),e}}ms.CLASS_NAME="RecipientKeyIdentifier";const Vc="variant",Bc="value",sS=["blockName"];class gs extends D{constructor(e={}){super(),this.variant=f(e,Vc,gs.defaultValues(Vc)),this.value=f(e,Bc,gs.defaultValues(Bc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Vc:return-1;case Bc:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Vc:return t===-1;case Bc:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new Ne({value:[$e.schema(t.issuerAndSerialNumber||{names:{blockName:t.blockName||v}}),new I({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:0},value:ms.schema(t.rKeyId||{names:{blockName:t.blockName||v}}).valueBlock.value})]})}fromSchema(e){T(e,sS);const t=R(e,e,gs.schema({names:{blockName:"blockName"}}));O.assertSchema(t,this.className),t.result.blockName.idBlock.tagClass===1?(this.variant=1,this.value=new $e({schema:t.result.blockName})):(this.variant=2,this.value=new ms({schema:new A({value:t.result.blockName.valueBlock.value})}))}toSchema(){switch(this.variant){case 1:return this.value.toSchema();case 2:return new I({idBlock:{tagClass:3,tagNumber:0},value:this.value.toSchema().valueBlock.value});default:return new X}}toJSON(){const e={variant:this.variant};return(this.variant===1||this.variant===2)&&(e.value=this.value.toJSON()),e}}gs.CLASS_NAME="KeyAgreeRecipientIdentifier";const yi="rid",_a="encryptedKey",rS=[yi,_a];class Ks extends D{constructor(e={}){super(),this.rid=f(e,yi,Ks.defaultValues(yi)),this.encryptedKey=f(e,_a,Ks.defaultValues(_a)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case yi:return new gs;case _a:return new $;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case yi:return t.variant===-1&&!("value"in t);case _a:return t.isEqual(Ks.defaultValues(_a));default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[gs.schema(t.rid||{}),new $({name:t.encryptedKey||v})]})}fromSchema(e){T(e,rS);const t=R(e,e,Ks.schema({names:{rid:{names:{blockName:yi}},encryptedKey:_a}}));O.assertSchema(t,this.className),this.rid=new gs({schema:t.result.rid}),this.encryptedKey=t.result.encryptedKey}toSchema(){return new A({value:[this.rid.toSchema(),this.encryptedKey]})}toJSON(){return{rid:this.rid.toJSON(),encryptedKey:this.encryptedKey.toJSON()}}}Ks.CLASS_NAME="RecipientEncryptedKey";const Pc="encryptedKeys",Kg="RecipientEncryptedKeys",aS=[Kg];class aa extends D{constructor(e={}){super(),this.encryptedKeys=f(e,Pc,aa.defaultValues(Pc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Pc:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Pc:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.RecipientEncryptedKeys||v,value:Ks.schema()})]})}fromSchema(e){T(e,aS);const t=R(e,e,aa.schema({names:{RecipientEncryptedKeys:Kg}}));O.assertSchema(t,this.className),this.encryptedKeys=Array.from(t.result.RecipientEncryptedKeys,s=>new Ks({schema:s}))}toSchema(){return new A({value:Array.from(this.encryptedKeys,e=>e.toSchema())})}toJSON(){return{encryptedKeys:Array.from(this.encryptedKeys,e=>e.toJSON())}}}aa.CLASS_NAME="RecipientEncryptedKeys";const vi="version",bi="originator",Es="ukm",Si="keyEncryptionAlgorithm",Ai="recipientEncryptedKeys",Oc="recipientCertificate",Dc="recipientPublicKey",nS=[vi,bi,Es,Si,Ai];class xt extends D{constructor(e={}){super(),this.version=f(e,vi,xt.defaultValues(vi)),this.originator=f(e,bi,xt.defaultValues(bi)),Es in e&&(this.ukm=f(e,Es,xt.defaultValues(Es))),this.keyEncryptionAlgorithm=f(e,Si,xt.defaultValues(Si)),this.recipientEncryptedKeys=f(e,Ai,xt.defaultValues(Ai)),this.recipientCertificate=f(e,Oc,xt.defaultValues(Oc)),this.recipientPublicKey=f(e,Dc,xt.defaultValues(Dc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case vi:return 0;case bi:return new Fs;case Es:return new $;case Si:return new V;case Ai:return new aa;case Oc:return new oe;case Dc:return null;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case vi:return t===0;case bi:return t.variant===-1&&!("value"in t);case Es:return t.isEqual(xt.defaultValues(Es));case Si:return t.algorithmId===v&&!("algorithmParams"in t);case Ai:return t.encryptedKeys.length===0;case Oc:return!1;case Dc:return!1;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),new I({idBlock:{tagClass:3,tagNumber:0},value:[Fs.schema(t.originator||{})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new $({name:t.ukm||v})]}),V.schema(t.keyEncryptionAlgorithm||{}),aa.schema(t.recipientEncryptedKeys||{})]})}fromSchema(e){T(e,nS);const t=R(e,e,xt.schema({names:{version:vi,originator:{names:{blockName:bi}},ukm:Es,keyEncryptionAlgorithm:{names:{blockName:Si}},recipientEncryptedKeys:{names:{blockName:Ai}}}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.originator=new Fs({schema:t.result.originator}),Es in t.result&&(this.ukm=t.result.ukm),this.keyEncryptionAlgorithm=new V({schema:t.result.keyEncryptionAlgorithm}),this.recipientEncryptedKeys=new aa({schema:t.result.recipientEncryptedKeys})}toSchema(){const e=[];return e.push(new B({value:this.version})),e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[this.originator.toSchema()]})),this.ukm&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[this.ukm]})),e.push(this.keyEncryptionAlgorithm.toSchema()),e.push(this.recipientEncryptedKeys.toSchema()),new A({value:e})}toJSON(){const e={version:this.version,originator:this.originator.toJSON(),keyEncryptionAlgorithm:this.keyEncryptionAlgorithm.toJSON(),recipientEncryptedKeys:this.recipientEncryptedKeys.toJSON()};return this.ukm&&(e.ukm=this.ukm.toJSON()),e}}xt.CLASS_NAME="KeyAgreeRecipientInfo";const Xa="keyIdentifier",Cr="date",Er="other",iS=[Xa,Cr,Er];class ss extends D{constructor(e={}){super(),this.keyIdentifier=f(e,Xa,ss.defaultValues(Xa)),Cr in e&&(this.date=f(e,Cr,ss.defaultValues(Cr))),Er in e&&(this.other=f(e,Er,ss.defaultValues(Er))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Xa:return new $;case Cr:return new ke;case Er:return new ns;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Xa:return t.isEqual(ss.defaultValues(Xa));case Cr:return t.year===0&&t.month===0&&t.day===0&&t.hour===0&&t.minute===0&&t.second===0&&t.millisecond===0;case Er:return t.compareWithDefault("keyAttrId",t.keyAttrId)&&!("keyAttr"in t);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new $({name:t.keyIdentifier||v}),new ke({optional:!0,name:t.date||v}),ns.schema(t.other||{})]})}fromSchema(e){T(e,iS);const t=R(e,e,ss.schema({names:{keyIdentifier:Xa,date:Cr,other:{names:{blockName:Er}}}}));O.assertSchema(t,this.className),this.keyIdentifier=t.result.keyIdentifier,Cr in t.result&&(this.date=t.result.date),Er in t.result&&(this.other=new ns({schema:t.result.other}))}toSchema(){const e=[];return e.push(this.keyIdentifier),this.date&&e.push(this.date),this.other&&e.push(this.other.toSchema()),new A({value:e})}toJSON(){const e={keyIdentifier:this.keyIdentifier.toJSON()};return this.date&&(e.date=this.date),this.other&&(e.other=this.other.toJSON()),e}}ss.CLASS_NAME="KEKIdentifier";const Ni="version",ki="kekid",Ci="keyEncryptionAlgorithm",Za="encryptedKey",Tc="preDefinedKEK",oS=[Ni,ki,Ci,Za];class Ot extends D{constructor(e={}){super(),this.version=f(e,Ni,Ot.defaultValues(Ni)),this.kekid=f(e,ki,Ot.defaultValues(ki)),this.keyEncryptionAlgorithm=f(e,Ci,Ot.defaultValues(Ci)),this.encryptedKey=f(e,Za,Ot.defaultValues(Za)),this.preDefinedKEK=f(e,Tc,Ot.defaultValues(Tc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ni:return 0;case ki:return new ss;case Ci:return new V;case Za:return new $;case Tc:return Ue;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case"KEKRecipientInfo":return t===Ot.defaultValues(Ni);case ki:return t.compareWithDefault("keyIdentifier",t.keyIdentifier)&&!("date"in t)&&!("other"in t);case Ci:return t.algorithmId===v&&!("algorithmParams"in t);case Za:return t.isEqual(Ot.defaultValues(Za));case Tc:return t.byteLength===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),ss.schema(t.kekid||{}),V.schema(t.keyEncryptionAlgorithm||{}),new $({name:t.encryptedKey||v})]})}fromSchema(e){T(e,oS);const t=R(e,e,Ot.schema({names:{version:Ni,kekid:{names:{blockName:ki}},keyEncryptionAlgorithm:{names:{blockName:Ci}},encryptedKey:Za}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.kekid=new ss({schema:t.result.kekid}),this.keyEncryptionAlgorithm=new V({schema:t.result.keyEncryptionAlgorithm}),this.encryptedKey=t.result.encryptedKey}toSchema(){return new A({value:[new B({value:this.version}),this.kekid.toSchema(),this.keyEncryptionAlgorithm.toSchema(),this.encryptedKey]})}toJSON(){return{version:this.version,kekid:this.kekid.toJSON(),keyEncryptionAlgorithm:this.keyEncryptionAlgorithm.toJSON(),encryptedKey:this.encryptedKey.toJSON()}}}Ot.CLASS_NAME="KEKRecipientInfo";const Ei="version",xr="keyDerivationAlgorithm",xi="keyEncryptionAlgorithm",Qa="encryptedKey",Rc="password",uS=[Ei,xr,xi,Qa];class Mt extends D{constructor(e={}){super(),this.version=f(e,Ei,Mt.defaultValues(Ei)),xr in e&&(this.keyDerivationAlgorithm=f(e,xr,Mt.defaultValues(xr))),this.keyEncryptionAlgorithm=f(e,xi,Mt.defaultValues(xi)),this.encryptedKey=f(e,Qa,Mt.defaultValues(Qa)),this.password=f(e,Rc,Mt.defaultValues(Rc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ei:return-1;case xr:return new V;case xi:return new V;case Qa:return new $;case Rc:return Ue;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ei:return t===-1;case xr:case xi:return t.algorithmId===v&&!("algorithmParams"in t);case Qa:return t.isEqual(Mt.defaultValues(Qa));case Rc:return t.byteLength===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),new I({name:t.keyDerivationAlgorithm||v,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:V.schema().valueBlock.value}),V.schema(t.keyEncryptionAlgorithm||{}),new $({name:t.encryptedKey||v})]})}fromSchema(e){T(e,uS);const t=R(e,e,Mt.schema({names:{version:Ei,keyDerivationAlgorithm:xr,keyEncryptionAlgorithm:{names:{blockName:xi}},encryptedKey:Qa}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,xr in t.result&&(this.keyDerivationAlgorithm=new V({schema:new A({value:t.result.keyDerivationAlgorithm.valueBlock.value})})),this.keyEncryptionAlgorithm=new V({schema:t.result.keyEncryptionAlgorithm}),this.encryptedKey=t.result.encryptedKey}toSchema(){const e=[];return e.push(new B({value:this.version})),this.keyDerivationAlgorithm&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:this.keyDerivationAlgorithm.toSchema().valueBlock.value})),e.push(this.keyEncryptionAlgorithm.toSchema()),e.push(this.encryptedKey),new A({value:e})}toJSON(){const e={version:this.version,keyEncryptionAlgorithm:this.keyEncryptionAlgorithm.toJSON(),encryptedKey:this.encryptedKey.toJSON()};return this.keyDerivationAlgorithm&&(e.keyDerivationAlgorithm=this.keyDerivationAlgorithm.toJSON()),e}}Mt.CLASS_NAME="PasswordRecipientInfo";const Ii="oriType",Ya="oriValue",lS=[Ii,Ya];class ea extends D{constructor(e={}){super(),this.oriType=f(e,Ii,ea.defaultValues(Ii)),this.oriValue=f(e,Ya,ea.defaultValues(Ya)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ii:return v;case Ya:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ii:return t===v;case Ya:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.oriType||v}),new X({name:t.oriValue||v})]})}fromSchema(e){T(e,lS);const t=R(e,e,ea.schema({names:{oriType:Ii,oriValue:Ya}}));O.assertSchema(t,this.className),this.oriType=t.result.oriType.valueBlock.toString(),this.oriValue=t.result.oriValue}toSchema(){return new A({value:[new J({value:this.oriType}),this.oriValue]})}toJSON(){const e={oriType:this.oriType};return ea.compareWithDefault(Ya,this.oriValue)||(e.oriValue=this.oriValue.toJSON()),e}}ea.CLASS_NAME="OtherRecipientInfo";const Lc="variant",Wo="value",cS=["blockName"];class Jt extends D{constructor(e={}){super(),this.variant=f(e,Lc,Jt.defaultValues(Lc)),Wo in e&&(this.value=f(e,Wo,Jt.defaultValues(Wo))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Lc:return-1;case Wo:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Lc:return t===Jt.defaultValues(e);case Wo:return Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new Ne({value:[Pt.schema({names:{blockName:t.blockName||v}}),new I({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:1},value:xt.schema().valueBlock.value}),new I({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:2},value:Ot.schema().valueBlock.value}),new I({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:3},value:Mt.schema().valueBlock.value}),new I({name:t.blockName||v,idBlock:{tagClass:3,tagNumber:4},value:ea.schema().valueBlock.value})]})}fromSchema(e){T(e,cS);const t=R(e,e,Jt.schema({names:{blockName:"blockName"}}));if(O.assertSchema(t,this.className),t.result.blockName.idBlock.tagClass===1)this.variant=1,this.value=new Pt({schema:t.result.blockName});else{const s=new A({value:t.result.blockName.valueBlock.value});switch(t.result.blockName.idBlock.tagNumber){case 1:this.variant=2,this.value=new xt({schema:s});break;case 2:this.variant=3,this.value=new Ot({schema:s});break;case 3:this.variant=4,this.value=new Mt({schema:s});break;case 4:this.variant=5,this.value=new ea({schema:s});break;default:throw new Error("Incorrect structure of RecipientInfo block")}}}toSchema(){ne.assertEmpty(this.value,"value","RecipientInfo");const e=this.value.toSchema();switch(this.variant){case 1:return e;case 2:case 3:case 4:return e.idBlock.tagClass=3,e.idBlock.tagNumber=this.variant-1,e;default:return new X}}toJSON(){const e={variant:this.variant};return this.value&&this.variant>=1&&this.variant<=4&&(e.value=this.value.toJSON()),e}}Jt.CLASS_NAME="RecipientInfo";const Ir="hashAlgorithm",Vr="maskGenAlgorithm",Br="pSourceAlgorithm",hS=[Ir,Vr,Br];class yt extends D{constructor(e={}){super(),this.hashAlgorithm=f(e,Ir,yt.defaultValues(Ir)),this.maskGenAlgorithm=f(e,Vr,yt.defaultValues(Vr)),this.pSourceAlgorithm=f(e,Br,yt.defaultValues(Br)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ir:return new V({algorithmId:"1.3.14.3.2.26",algorithmParams:new Fe});case Vr:return new V({algorithmId:"1.2.840.113549.1.1.8",algorithmParams:new V({algorithmId:"1.3.14.3.2.26",algorithmParams:new Fe}).toSchema()});case Br:return new V({algorithmId:"1.2.840.113549.1.1.9",algorithmParams:new $({valueHex:new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9]).buffer})});default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new I({idBlock:{tagClass:3,tagNumber:0},optional:!0,value:[V.schema(t.hashAlgorithm||{})]}),new I({idBlock:{tagClass:3,tagNumber:1},optional:!0,value:[V.schema(t.maskGenAlgorithm||{})]}),new I({idBlock:{tagClass:3,tagNumber:2},optional:!0,value:[V.schema(t.pSourceAlgorithm||{})]})]})}fromSchema(e){T(e,hS);const t=R(e,e,yt.schema({names:{hashAlgorithm:{names:{blockName:Ir}},maskGenAlgorithm:{names:{blockName:Vr}},pSourceAlgorithm:{names:{blockName:Br}}}}));O.assertSchema(t,this.className),Ir in t.result&&(this.hashAlgorithm=new V({schema:t.result.hashAlgorithm})),Vr in t.result&&(this.maskGenAlgorithm=new V({schema:t.result.maskGenAlgorithm})),Br in t.result&&(this.pSourceAlgorithm=new V({schema:t.result.pSourceAlgorithm}))}toSchema(){const e=[];return this.hashAlgorithm.isEqual(yt.defaultValues(Ir))||e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[this.hashAlgorithm.toSchema()]})),this.maskGenAlgorithm.isEqual(yt.defaultValues(Vr))||e.push(new I({idBlock:{tagClass:3,tagNumber:1},value:[this.maskGenAlgorithm.toSchema()]})),this.pSourceAlgorithm.isEqual(yt.defaultValues(Br))||e.push(new I({idBlock:{tagClass:3,tagNumber:2},value:[this.pSourceAlgorithm.toSchema()]})),new A({value:e})}toJSON(){const e={};return this.hashAlgorithm.isEqual(yt.defaultValues(Ir))||(e.hashAlgorithm=this.hashAlgorithm.toJSON()),this.maskGenAlgorithm.isEqual(yt.defaultValues(Vr))||(e.maskGenAlgorithm=this.maskGenAlgorithm.toJSON()),this.pSourceAlgorithm.isEqual(yt.defaultValues(Br))||(e.pSourceAlgorithm=this.pSourceAlgorithm.toJSON()),e}}yt.CLASS_NAME="RSAESOAEPParams";const Vi="keyInfo",Pr="entityUInfo",Bi="suppPubInfo",mS=[Vi,Pr,Bi];class Ds extends D{constructor(e={}){super(),this.keyInfo=f(e,Vi,Ds.defaultValues(Vi)),Pr in e&&(this.entityUInfo=f(e,Pr,Ds.defaultValues(Pr))),this.suppPubInfo=f(e,Bi,Ds.defaultValues(Bi)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Vi:return new V;case Pr:return new $;case Bi:return new $;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Vi:case Pr:case Bi:return t.isEqual(Ds.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[V.schema(t.keyInfo||{}),new I({name:t.entityUInfo||v,idBlock:{tagClass:3,tagNumber:0},optional:!0,value:[new $]}),new I({name:t.suppPubInfo||v,idBlock:{tagClass:3,tagNumber:2},value:[new $]})]})}fromSchema(e){T(e,mS);const t=R(e,e,Ds.schema({names:{keyInfo:{names:{blockName:Vi}},entityUInfo:Pr,suppPubInfo:Bi}}));O.assertSchema(t,this.className),this.keyInfo=new V({schema:t.result.keyInfo}),Pr in t.result&&(this.entityUInfo=t.result.entityUInfo.valueBlock.value[0]),this.suppPubInfo=t.result.suppPubInfo.valueBlock.value[0]}toSchema(){const e=[];return e.push(this.keyInfo.toSchema()),this.entityUInfo&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[this.entityUInfo]})),e.push(new I({idBlock:{tagClass:3,tagNumber:2},value:[this.suppPubInfo]})),new A({value:e})}toJSON(){const e={keyInfo:this.keyInfo.toJSON(),suppPubInfo:this.suppPubInfo.toJSON()};return this.entityUInfo&&(e.entityUInfo=this.entityUInfo.toJSON()),e}}Ds.CLASS_NAME="ECCCMSSharedInfo";const Pi="version",Or="originatorInfo",Oi="recipientInfos",Di="encryptedContentInfo",Dr="unprotectedAttrs",fS=[Pi,Or,Oi,Di,Dr],yp={kdfAlgorithm:"SHA-512",kekEncryptionLength:256},dS={"P-256":256,"P-384":384,"P-521":528};class es extends D{constructor(e={}){super(),this.version=f(e,Pi,es.defaultValues(Pi)),Or in e&&(this.originatorInfo=f(e,Or,es.defaultValues(Or))),this.recipientInfos=f(e,Oi,es.defaultValues(Oi)),this.encryptedContentInfo=f(e,Di,es.defaultValues(Di)),Dr in e&&(this.unprotectedAttrs=f(e,Dr,es.defaultValues(Dr))),this.policy={disableSplit:!!e.disableSplit},e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Pi:return 0;case Or:return new Pn;case Oi:return[];case Di:return new Oe;case Dr:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Pi:return t===es.defaultValues(e);case Or:return t.certs.certificates.length===0&&t.crls.crls.length===0;case Oi:case Dr:return t.length===0;case Di:return Oe.compareWithDefault("contentType",t.contentType)&&Oe.compareWithDefault("contentEncryptionAlgorithm",t.contentEncryptionAlgorithm)&&Oe.compareWithDefault("encryptedContent",t.encryptedContent);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||v}),new I({name:t.originatorInfo||v,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:Pn.schema().valueBlock.value}),new Je({value:[new Z({name:t.recipientInfos||v,value:Jt.schema()})]}),Oe.schema(t.encryptedContentInfo||{}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new Z({name:t.unprotectedAttrs||v,value:ge.schema()})]})]})}fromSchema(e){T(e,fS);const t=R(e,e,es.schema({names:{version:Pi,originatorInfo:Or,recipientInfos:Oi,encryptedContentInfo:{names:{blockName:Di}},unprotectedAttrs:Dr}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,Or in t.result&&(this.originatorInfo=new Pn({schema:new A({value:t.result.originatorInfo.valueBlock.value})})),this.recipientInfos=Array.from(t.result.recipientInfos,s=>new Jt({schema:s})),this.encryptedContentInfo=new Oe({schema:t.result.encryptedContentInfo}),Dr in t.result&&(this.unprotectedAttrs=Array.from(t.result.unprotectedAttrs,s=>new ge({schema:s})))}toSchema(){const e=[];return e.push(new B({value:this.version})),this.originatorInfo&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:this.originatorInfo.toSchema().valueBlock.value})),e.push(new Je({value:Array.from(this.recipientInfos,t=>t.toSchema())})),e.push(this.encryptedContentInfo.toSchema()),this.unprotectedAttrs&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.unprotectedAttrs,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={version:this.version,recipientInfos:Array.from(this.recipientInfos,t=>t.toJSON()),encryptedContentInfo:this.encryptedContentInfo.toJSON()};return this.originatorInfo&&(e.originatorInfo=this.originatorInfo.toJSON()),this.unprotectedAttrs&&(e.unprotectedAttrs=Array.from(this.unprotectedAttrs,t=>t.toJSON())),e}addRecipientByCertificate(e,t,s,a=Q(!0)){const n=Object.assign({useOAEP:!0,oaepHashAlgorithm:"SHA-512"},yp,t||{});if(e.subjectPublicKeyInfo.algorithm.algorithmId.indexOf("1.2.840.113549")!==-1)s=1;else if(e.subjectPublicKeyInfo.algorithm.algorithmId.indexOf("1.2.840.10045")!==-1)s=2;else throw new Error("Unknown type of certificate's public key: ".concat(e.subjectPublicKeyInfo.algorithm.algorithmId));switch(s){case 1:{let u,i;if(n.useOAEP===!0){u=a.getOIDByAlgorithm({name:"RSA-OAEP"},!0,"keyEncryptionAlgorithm");const o=a.getOIDByAlgorithm({name:n.oaepHashAlgorithm},!0,"RSAES-OAEP-params"),c=new V({algorithmId:o,algorithmParams:new Fe});i=new yt({hashAlgorithm:c,maskGenAlgorithm:new V({algorithmId:"1.2.840.113549.1.1.8",algorithmParams:c.toSchema()})}).toSchema()}else{if(u=a.getOIDByAlgorithm({name:"RSAES-PKCS1-v1_5"}),u===v)throw new Error("Can not find OID for RSAES-PKCS1-v1_5");i=new Fe}const l=new Pt({version:0,rid:new $e({issuer:e.issuer,serialNumber:e.serialNumber}),keyEncryptionAlgorithm:new V({algorithmId:u,algorithmParams:i}),recipientCertificate:e});this.recipientInfos.push(new Jt({variant:1,value:l}))}break;case 2:{const u=new gs({variant:1,value:new $e({issuer:e.issuer,serialNumber:e.serialNumber})});this._addKeyAgreeRecipientInfo(u,n,{recipientCertificate:e},a)}break;default:throw new Error('Unknown "variant" value: '.concat(s))}return!0}addRecipientByPreDefinedData(e,t={},s,a=Q(!0)){if(he.assert(e,"preDefinedData","ArrayBuffer"),!e.byteLength)throw new Error("Pre-defined data could have zero length");if(!t.keyIdentifier){const n=new ArrayBuffer(16),u=new Uint8Array(n);a.getRandomValues(u),t.keyIdentifier=n}switch(t.hmacHashAlgorithm||(t.hmacHashAlgorithm="SHA-512"),t.iterationCount===void 0&&(t.iterationCount=2048),t.keyEncryptionAlgorithm||(t.keyEncryptionAlgorithm={name:"AES-KW",length:256}),t.keyEncryptionAlgorithmParams||(t.keyEncryptionAlgorithmParams=new Fe),s){case 1:{const n=a.getOIDByAlgorithm(t.keyEncryptionAlgorithm,!0,"keyEncryptionAlgorithm"),u=new Ot({version:4,kekid:new ss({keyIdentifier:new $({valueHex:t.keyIdentifier})}),keyEncryptionAlgorithm:new V({algorithmId:n,algorithmParams:t.keyEncryptionAlgorithmParams}),preDefinedKEK:e});this.recipientInfos.push(new Jt({variant:3,value:u}))}break;case 2:{const n=a.getOIDByAlgorithm({name:"PBKDF2"},!0,"keyDerivationAlgorithm"),u=new ArrayBuffer(64),i=new Uint8Array(u);a.getRandomValues(i);const l=a.getOIDByAlgorithm({name:"HMAC",hash:{name:t.hmacHashAlgorithm}},!0,"hmacHashAlgorithm"),o=new mt({salt:new $({valueHex:u}),iterationCount:t.iterationCount,prf:new V({algorithmId:l,algorithmParams:new Fe})}),c=a.getOIDByAlgorithm(t.keyEncryptionAlgorithm,!0,"keyEncryptionAlgorithm"),m=new Mt({version:0,keyDerivationAlgorithm:new V({algorithmId:n,algorithmParams:o.toSchema()}),keyEncryptionAlgorithm:new V({algorithmId:c,algorithmParams:t.keyEncryptionAlgorithmParams}),password:e});this.recipientInfos.push(new Jt({variant:4,value:m}))}break;default:throw new Error('Unknown value for "variant": '.concat(s))}}addRecipientByKeyIdentifier(e,t,s,a=Q(!0)){const n=Object.assign({},yp,s||{}),u=new gs({variant:2,value:new ms({subjectKeyIdentifier:new $({valueHex:t})})});this._addKeyAgreeRecipientInfo(u,n,{recipientPublicKey:e},a)}_addKeyAgreeRecipientInfo(e,t,s,a=Q(!0)){const n=new Ks({rid:e}),u=a.getOIDByAlgorithm({name:"AES-KW",length:t.kekEncryptionLength},!0,"keyEncryptionAlgorithm"),i=new V({algorithmId:u}),l=a.getOIDByAlgorithm({name:"ECDH",kdf:t.kdfAlgorithm},!0,"KeyAgreeRecipientInfo"),o=new ArrayBuffer(64),c=new Uint8Array(o);a.getRandomValues(c);const m={version:3,ukm:new $({valueHex:o}),keyEncryptionAlgorithm:new V({algorithmId:l,algorithmParams:i.toSchema()}),recipientEncryptedKeys:new aa({encryptedKeys:[n]})},h=new xt(Object.assign(m,s));this.recipientInfos.push(new Jt({variant:2,value:h}))}async encrypt(e,t,s=Q(!0)){const a=new ArrayBuffer(16),n=new Uint8Array(a);s.getRandomValues(n);const u=new Uint8Array(t),i=s.getOIDByAlgorithm(e,!0,"contentEncryptionAlgorithm"),l=await s.generateKey(e,!0,["encrypt"]),o=await s.encrypt({name:e.name,iv:n},l,u),c=await s.exportKey("raw",l);this.version=2,this.encryptedContentInfo=new Oe({disableSplit:this.policy.disableSplit,contentType:"1.2.840.113549.1.7.1",contentEncryptionAlgorithm:new V({algorithmId:i,algorithmParams:new $({valueHex:a})}),encryptedContent:new $({valueHex:o})});const m=async y=>{const k=this.recipientInfos[y].value;let g,b;if(k.recipientPublicKey)g=k.recipientPublicKey.algorithm.namedCurve,b=k.recipientPublicKey;else if(k.recipientCertificate){const se=k.recipientCertificate.subjectPublicKeyInfo.algorithm.algorithmParams;if(se.constructor.blockName()!==J.blockName())throw new Error('Incorrect "recipientCertificate" for index '.concat(y));switch(se.valueBlock.toString()){case"1.2.840.10045.3.1.7":g="P-256";break;case"1.3.132.0.34":g="P-384";break;case"1.3.132.0.35":g="P-521";break;default:throw new Error("Incorrect curve OID for index ".concat(y))}b=await k.recipientCertificate.getPublicKey({algorithm:{algorithm:{name:"ECDH",namedCurve:g},usages:[]}},s)}else throw new Error("Unsupported RecipientInfo");const N=dS[g],S=await s.generateKey({name:"ECDH",namedCurve:g},!0,["deriveBits"]),E=await s.exportKey("spki",S.publicKey),x=await s.deriveBits({name:"ECDH",public:b},S.privateKey,N),C=new V({schema:k.keyEncryptionAlgorithm.algorithmParams}),P=s.getAlgorithmByOID(C.algorithmId,!0,"aesKWAlgorithm");let K=P.length;const L=new ArrayBuffer(4),j=new Uint8Array(L);for(let se=3;se>=0;se--)j[se]=K,K>>=8;const U=new Ds({keyInfo:new V({algorithmId:C.algorithmId}),entityUInfo:k.ukm,suppPubInfo:new $({valueHex:L})}).toSchema().toBER(!1),M=s.getAlgorithmByOID(k.keyEncryptionAlgorithm.algorithmId,!0,"ecdhAlgorithm"),G=await np(M.kdf,x,P.length,U,s),we=await s.importKey("raw",G,{name:"AES-KW"},!0,["wrapKey"]),ae=await s.wrapKey("raw",l,we,{name:"AES-KW"}),Y=new Fs;return Y.variant=3,Y.value=$s.fromBER(E),k.originator=Y,k.recipientEncryptedKeys.encryptedKeys[0].encryptedKey=new $({valueHex:ae}),{ecdhPrivateKey:S.privateKey}},h=async y=>{const k=this.recipientInfos[y].value,g=s.getAlgorithmByOID(k.keyEncryptionAlgorithm.algorithmId,!0,"keyEncryptionAlgorithm");if(g.name==="RSA-OAEP"){const b=k.keyEncryptionAlgorithm.algorithmParams,N=new yt({schema:b});if(g.hash=s.getAlgorithmByOID(N.hashAlgorithm.algorithmId),!("name"in g.hash))throw new Error("Incorrect OID for hash algorithm: ".concat(N.hashAlgorithm.algorithmId))}try{const b=await k.recipientCertificate.getPublicKey({algorithm:{algorithm:g,usages:["encrypt","wrapKey"]}},s),N=await s.encrypt(b.algorithm,b,c);k.encryptedKey=new $({valueHex:N})}catch(b){}},p=async y=>{const k=this.recipientInfos[y].value,g=s.getAlgorithmByOID(k.keyEncryptionAlgorithm.algorithmId,!0,"kekAlgorithm"),b=await s.importKey("raw",new Uint8Array(k.preDefinedKEK),g,!0,["wrapKey"]),N=await s.wrapKey("raw",l,b,g);k.encryptedKey=new $({valueHex:N})},d=async y=>{const k=this.recipientInfos[y].value;let g;if(!k.keyDerivationAlgorithm)throw new Error('Please append encoded "keyDerivationAlgorithm"');if(!k.keyDerivationAlgorithm.algorithmParams)throw new Error('Incorrectly encoded "keyDerivationAlgorithm"');try{g=new mt({schema:k.keyDerivationAlgorithm.algorithmParams})}catch(L){throw new Error('Incorrectly encoded "keyDerivationAlgorithm"')}const b=new Uint8Array(k.password),N=await s.importKey("raw",b,"PBKDF2",!1,["deriveKey"]),S=s.getAlgorithmByOID(k.keyEncryptionAlgorithm.algorithmId,!0,"kekAlgorithm");let E="SHA-1";g.prf&&(E=s.getAlgorithmByOID(g.prf.algorithmId,!0,"prfAlgorithm").hash.name);const x=new Uint8Array(g.salt.valueBlock.valueHex),C=g.iterationCount,P=await s.deriveKey({name:"PBKDF2",hash:{name:E},salt:x,iterations:C},N,S,!0,["wrapKey"]),K=await s.wrapKey("raw",l,P,S);k.encryptedKey=new $({valueHex:K})},w=[];for(let y=0;ythis.recipientInfos.length)throw new Error('Maximum value for "index" is: '.concat(this.recipientInfos.length-1));const n=async w=>{const y=this.recipientInfos[w].value;let k,g,b;const N=y.originator;if(a.recipientCertificate){const G=a.recipientCertificate.subjectPublicKeyInfo.algorithm.algorithmParams;if(G.constructor.blockName()!==J.blockName())throw new Error('Incorrect "recipientCertificate" for index '.concat(w));k=G.valueBlock.toString()}else if(N.value.algorithm.algorithmParams){const G=N.value.algorithm.algorithmParams;if(G.constructor.blockName()!==J.blockName())throw new Error("Incorrect originator for index ".concat(w));k=G.valueBlock.toString()}else throw new Error('Parameter "recipientCertificate" is mandatory for "KeyAgreeRecipientInfo" if algorithm params are missing from originator');if(!a.recipientPrivateKey)throw new Error('Parameter "recipientPrivateKey" is mandatory for "KeyAgreeRecipientInfo"');switch(k){case"1.2.840.10045.3.1.7":g="P-256",b=256;break;case"1.3.132.0.34":g="P-384",b=384;break;case"1.3.132.0.35":g="P-521",b=528;break;default:throw new Error("Incorrect curve OID for index ".concat(w))}let S,E=s;pe.isBufferSource(a.recipientPrivateKey)?S=await s.importKey("pkcs8",a.recipientPrivateKey,{name:"ECDH",namedCurve:g},!0,["deriveBits"]):(S=a.recipientPrivateKey,"crypto"in a&&a.crypto&&(E=a.crypto.subtle)),"algorithmParams"in N.value.algorithm||(N.value.algorithm.algorithmParams=new J({value:k}));const x=N.value.toSchema().toBER(!1),C=await s.importKey("spki",x,{name:"ECDH",namedCurve:g},!0,[]),P=await E.deriveBits({name:"ECDH",public:C},S,b);async function K(G){G=G||!1;const we=new V({schema:y.keyEncryptionAlgorithm.algorithmParams}),ae=s.getAlgorithmByOID(we.algorithmId,!0,"kwAlgorithm");let Y=ae.length;const se=new ArrayBuffer(4),F=new Uint8Array(se);for(let ie=3;ie>=0;ie--)F[ie]=Y,Y>>=8;const W={algorithmId:we.algorithmId};G&&(W.algorithmParams=new Fe);const q=new Ds({keyInfo:new V(W),entityUInfo:y.ukm,suppPubInfo:new $({valueHex:se})}).toSchema().toBER(!1),ee=s.getAlgorithmByOID(y.keyEncryptionAlgorithm.algorithmId,!0,"ecdhAlgorithm");if(!ee.name)throw new Error("Incorrect OID for key encryption algorithm: ".concat(y.keyEncryptionAlgorithm.algorithmId));return np(ee.kdf,P,ae.length,q,s)}const L=await K(),j=async G=>s.importKey("raw",G,{name:"AES-KW"},!0,["unwrapKey"]),U=await j(L),M=async G=>{const we=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,ae=s.getAlgorithmByOID(we,!0,"contentEncryptionAlgorithm");return s.unwrapKey("raw",y.recipientEncryptedKeys.encryptedKeys[0].encryptedKey.valueBlock.valueHexView,G,{name:"AES-KW"},ae,!0,["decrypt"])};try{return await M(U)}catch(G){const we=await K(!0),ae=await j(we);return M(ae)}},u=async w=>{const y=this.recipientInfos[w].value;if(!a.recipientPrivateKey)throw new Error('Parameter "recipientPrivateKey" is mandatory for "KeyTransRecipientInfo"');const k=s.getAlgorithmByOID(y.keyEncryptionAlgorithm.algorithmId,!0,"keyEncryptionAlgorithm");if(k.name==="RSA-OAEP"){const x=y.keyEncryptionAlgorithm.algorithmParams,C=new yt({schema:x});if(k.hash=s.getAlgorithmByOID(C.hashAlgorithm.algorithmId),!("name"in k.hash))throw new Error("Incorrect OID for hash algorithm: ".concat(C.hashAlgorithm.algorithmId))}let g,b=s;pe.isBufferSource(a.recipientPrivateKey)?g=await s.importKey("pkcs8",a.recipientPrivateKey,k,!0,["decrypt"]):(g=a.recipientPrivateKey,"crypto"in a&&a.crypto&&(b=a.crypto.subtle));const N=await b.decrypt(g.algorithm,g,y.encryptedKey.valueBlock.valueHexView),S=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,E=s.getAlgorithmByOID(S,!0,"contentEncryptionAlgorithm");if(!("name"in E))throw new Error('Incorrect "contentEncryptionAlgorithm": '.concat(S));return s.importKey("raw",N,E,!0,["decrypt"])},i=async w=>{const y=this.recipientInfos[w].value;if(!a.preDefinedData)throw new Error('Parameter "preDefinedData" is mandatory for "KEKRecipientInfo"');const k=s.getAlgorithmByOID(y.keyEncryptionAlgorithm.algorithmId,!0,"kekAlgorithm"),g=await s.importKey("raw",a.preDefinedData,k,!0,["unwrapKey"]),b=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,N=s.getAlgorithmByOID(b,!0,"contentEncryptionAlgorithm");if(!N.name)throw new Error('Incorrect "contentEncryptionAlgorithm": '.concat(b));return s.unwrapKey("raw",y.encryptedKey.valueBlock.valueHexView,g,k,N,!0,["decrypt"])},l=async w=>{const y=this.recipientInfos[w].value;let k;if(!a.preDefinedData)throw new Error('Parameter "preDefinedData" is mandatory for "KEKRecipientInfo"');if(!y.keyDerivationAlgorithm)throw new Error('Please append encoded "keyDerivationAlgorithm"');if(!y.keyDerivationAlgorithm.algorithmParams)throw new Error('Incorrectly encoded "keyDerivationAlgorithm"');try{k=new mt({schema:y.keyDerivationAlgorithm.algorithmParams})}catch(K){throw new Error('Incorrectly encoded "keyDerivationAlgorithm"')}const g=await s.importKey("raw",a.preDefinedData,"PBKDF2",!1,["deriveKey"]),b=s.getAlgorithmByOID(y.keyEncryptionAlgorithm.algorithmId,!0,"keyEncryptionAlgorithm"),N=k.prf?s.getAlgorithmByOID(k.prf.algorithmId,!0,"prfAlgorithm").hash.name:"SHA-1",S=new Uint8Array(k.salt.valueBlock.valueHex),E=k.iterationCount,x=await s.deriveKey({name:"PBKDF2",hash:{name:N},salt:S,iterations:E},g,b,!0,["unwrapKey"]),C=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,P=s.getAlgorithmByOID(C,!0,"contentEncryptionAlgorithm");return s.unwrapKey("raw",y.encryptedKey.valueBlock.valueHexView,x,b,P,!0,["decrypt"])};let o;switch(this.recipientInfos[e].variant){case 1:o=await u(e);break;case 2:o=await n(e);break;case 3:o=await i(e);break;case 4:o=await l(e);break;default:throw new Error("Unknown recipient type in array with index ".concat(e))}const c=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId,m=s.getAlgorithmByOID(c,!0,"contentEncryptionAlgorithm"),h=this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmParams.valueBlock.valueHex,p=new Uint8Array(h);if(!this.encryptedContentInfo.encryptedContent)throw new Error("Required property `encryptedContent` is empty");const d=this.encryptedContentInfo.getEncryptedContent();return s.decrypt({name:m.name,iv:p},o,d)}}es.CLASS_NAME="EnvelopedData";const Kn="safeContents",Go="parsedValue",vp="contentInfos";class On extends D{constructor(e={}){super(),this.safeContents=f(e,Kn,On.defaultValues(Kn)),Go in e&&(this.parsedValue=f(e,Go,On.defaultValues(Go))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Kn:return[];case Go:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Kn:return t.length===0;case Go:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new Z({name:t.contentInfos||v,value:fe.schema()})]})}fromSchema(e){T(e,[vp]);const t=R(e,e,On.schema({names:{contentInfos:vp}}));O.assertSchema(t,this.className),this.safeContents=Array.from(t.result.contentInfos,s=>new fe({schema:s}))}toSchema(){return new A({value:Array.from(this.safeContents,e=>e.toSchema())})}toJSON(){return{safeContents:Array.from(this.safeContents,e=>e.toJSON())}}async parseInternalValues(e,t=Q(!0)){if(ne.assert(e,Kn),he.assert(e.safeContents,Kn,"Array"),e.safeContents.length!==this.safeContents.length)throw new he('Length of "parameters.safeContents" must be equal to "this.safeContents.length"');this.parsedValue={safeContents:[]};for(const[s,a]of this.safeContents.entries()){const n=e.safeContents[s],u="parameters.safeContents[".concat(s,"]");switch(a.contentType){case td:{he.assert(a.content,"this.safeContents[j].content",$);const i=a.content.getValue();this.parsedValue.safeContents.push({privacyMode:0,value:js.fromBER(i)})}break;case Og:{const i=new es({schema:a.content});ne.assert(u,n,"recipientCertificate","recipientKey");const l=n,o=l.recipientCertificate,c=l.recipientKey,m=await i.decrypt(0,{recipientCertificate:o,recipientPrivateKey:c},t);this.parsedValue.safeContents.push({privacyMode:2,value:js.fromBER(m)})}break;case Dg:{const i=new ds({schema:a.content});ne.assert(u,n,"password");const l=n.password,o=await i.decrypt({password:l},t);this.parsedValue.safeContents.push({privacyMode:1,value:js.fromBER(o)})}break;default:throw new Error('Unknown "contentType" for AuthenticatedSafe: " '.concat(a.contentType))}}}async makeInternalValues(e,t=Q(!0)){if(!this.parsedValue)throw new Error('Please run "parseValues" first or add "parsedValue" manually');if(he.assert(this.parsedValue,"this.parsedValue","object"),he.assert(this.parsedValue.safeContents,"this.parsedValue.safeContents","Array"),he.assert(e,"parameters","object"),ne.assert(e,"safeContents"),he.assert(e.safeContents,"parameters.safeContents","Array"),e.safeContents.length!==this.parsedValue.safeContents.length)throw new he('Length of "parameters.safeContents" must be equal to "this.parsedValue.safeContents"');this.safeContents=[];for(const[s,a]of this.parsedValue.safeContents.entries())switch(ne.assert("content",a,"privacyMode","value"),he.assert(a.value,"content.value",js),a.privacyMode){case 0:{const n=a.value.toSchema().toBER(!1);this.safeContents.push(new fe({contentType:"1.2.840.113549.1.7.1",content:new $({valueHex:n})}))}break;case 1:{const n=new ds,u=e.safeContents[s];u.contentToEncrypt=a.value.toSchema().toBER(!1),await n.encrypt(u,t),this.safeContents.push(new fe({contentType:"1.2.840.113549.1.7.6",content:n.toSchema()}))}break;case 2:{const n=new es,u=a.value.toSchema().toBER(!1),i=e.safeContents[s];switch(ne.assert("parameters.safeContents[".concat(s,"]"),i,"encryptingCertificate","encryptionAlgorithm"),!0){case i.encryptionAlgorithm.name.toLowerCase()==="aes-cbc":case i.encryptionAlgorithm.name.toLowerCase()==="aes-gcm":break;default:throw new Error('Incorrect parameter "encryptionAlgorithm" in "parameters.safeContents[i]": '.concat(i.encryptionAlgorithm))}switch(!0){case i.encryptionAlgorithm.length===128:case i.encryptionAlgorithm.length===192:case i.encryptionAlgorithm.length===256:break;default:throw new Error('Incorrect parameter "encryptionAlgorithm.length" in "parameters.safeContents[i]": '.concat(i.encryptionAlgorithm.length))}const l=i.encryptionAlgorithm;n.addRecipientByCertificate(i.encryptingCertificate,{},void 0,t),await n.encrypt(l,u,t),this.safeContents.push(new fe({contentType:"1.2.840.113549.1.7.3",content:n.toSchema()}))}break;default:throw new Error('Incorrect value for "content.privacyMode": '.concat(a.privacyMode))}return this}}On.CLASS_NAME="AuthenticatedSafe";const en="hashAlgorithm",Ti="issuerNameHash",Ri="issuerKeyHash",tn="serialNumber",pS=[en,Ti,Ri,tn];class Te extends D{static async create(e,t,s=Q(!0)){const a=new Te;return await a.createForCertificate(e,t,s),a}constructor(e={}){super(),this.hashAlgorithm=f(e,en,Te.defaultValues(en)),this.issuerNameHash=f(e,Ti,Te.defaultValues(Ti)),this.issuerKeyHash=f(e,Ri,Te.defaultValues(Ri)),this.serialNumber=f(e,tn,Te.defaultValues(tn)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case en:return new V;case Ti:case Ri:return new $;case tn:return new B;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case en:return t.algorithmId===v&&!("algorithmParams"in t);case Ti:case Ri:case tn:return t.isEqual(Te.defaultValues(tn));default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[V.schema(t.hashAlgorithmObject||{names:{blockName:t.hashAlgorithm||v}}),new $({name:t.issuerNameHash||v}),new $({name:t.issuerKeyHash||v}),new B({name:t.serialNumber||v})]})}fromSchema(e){T(e,pS);const t=R(e,e,Te.schema({names:{hashAlgorithm:en,issuerNameHash:Ti,issuerKeyHash:Ri,serialNumber:tn}}));O.assertSchema(t,this.className),this.hashAlgorithm=new V({schema:t.result.hashAlgorithm}),this.issuerNameHash=t.result.issuerNameHash,this.issuerKeyHash=t.result.issuerKeyHash,this.serialNumber=t.result.serialNumber}toSchema(){return new A({value:[this.hashAlgorithm.toSchema(),this.issuerNameHash,this.issuerKeyHash,this.serialNumber]})}toJSON(){return{hashAlgorithm:this.hashAlgorithm.toJSON(),issuerNameHash:this.issuerNameHash.toJSON(),issuerKeyHash:this.issuerKeyHash.toJSON(),serialNumber:this.serialNumber.toJSON()}}isEqual(e){return!(this.hashAlgorithm.algorithmId!==e.hashAlgorithm.algorithmId||!pe.isEqual(this.issuerNameHash.valueBlock.valueHexView,e.issuerNameHash.valueBlock.valueHexView)||!pe.isEqual(this.issuerKeyHash.valueBlock.valueHexView,e.issuerKeyHash.valueBlock.valueHexView)||!this.serialNumber.isEqual(e.serialNumber))}async createForCertificate(e,t,s=Q(!0)){ne.assert(t,en,"issuerCertificate");const a=s.getOIDByAlgorithm({name:t.hashAlgorithm},!0,"hashAlgorithm");this.hashAlgorithm=new V({algorithmId:a,algorithmParams:new Fe});const n=t.issuerCertificate;this.serialNumber=e.serialNumber;const u=await s.digest({name:t.hashAlgorithm},n.subject.toSchema().toBER(!1));this.issuerNameHash=new $({valueHex:u});const i=n.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView,l=await s.digest({name:t.hashAlgorithm},i);this.issuerKeyHash=new $({valueHex:l})}}Te.CLASS_NAME="CertID";const Li="certID",Ui="certStatus",ji="thisUpdate",Tr="nextUpdate",sn="singleExtensions",gS=[Li,Ui,ji,Tr,sn];class ts extends D{constructor(e={}){super(),this.certID=f(e,Li,ts.defaultValues(Li)),this.certStatus=f(e,Ui,ts.defaultValues(Ui)),this.thisUpdate=f(e,ji,ts.defaultValues(ji)),Tr in e&&(this.nextUpdate=f(e,Tr,ts.defaultValues(Tr))),sn in e&&(this.singleExtensions=f(e,sn,ts.defaultValues(sn))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Li:return new Te;case Ui:return{};case ji:case Tr:return new Date(0,0,0);case sn:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Li:return Te.compareWithDefault("hashAlgorithm",t.hashAlgorithm)&&Te.compareWithDefault("issuerNameHash",t.issuerNameHash)&&Te.compareWithDefault("issuerKeyHash",t.issuerKeyHash)&&Te.compareWithDefault("serialNumber",t.serialNumber);case Ui:return Object.keys(t).length===0;case ji:case Tr:return t===ts.defaultValues(e);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[Te.schema(t.certID||{}),new Ne({value:[new _({name:t.certStatus||v,idBlock:{tagClass:3,tagNumber:0}}),new I({name:t.certStatus||v,idBlock:{tagClass:3,tagNumber:1},value:[new ke,new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Yl]})]}),new _({name:t.certStatus||v,idBlock:{tagClass:3,tagNumber:2},lenBlock:{length:1}})]}),new ke({name:t.thisUpdate||v}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new ke({name:t.nextUpdate||v})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[je.schema(t.singleExtensions||{})]})]})}fromSchema(e){T(e,gS);const t=R(e,e,ts.schema({names:{certID:{names:{blockName:Li}},certStatus:Ui,thisUpdate:ji,nextUpdate:Tr,singleExtensions:{names:{blockName:sn}}}}));O.assertSchema(t,this.className),this.certID=new Te({schema:t.result.certID}),this.certStatus=t.result.certStatus,this.thisUpdate=t.result.thisUpdate.toDate(),Tr in t.result&&(this.nextUpdate=t.result.nextUpdate.toDate()),sn in t.result&&(this.singleExtensions=Array.from(t.result.singleExtensions.valueBlock.value,s=>new De({schema:s})))}toSchema(){const e=[];return e.push(this.certID.toSchema()),e.push(this.certStatus),e.push(new ke({valueDate:this.thisUpdate})),this.nextUpdate&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[new ke({valueDate:this.nextUpdate})]})),this.singleExtensions&&e.push(new A({value:Array.from(this.singleExtensions,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={certID:this.certID.toJSON(),certStatus:this.certStatus.toJSON(),thisUpdate:this.thisUpdate};return this.nextUpdate&&(e.nextUpdate=this.nextUpdate),this.singleExtensions&&(e.singleExtensions=Array.from(this.singleExtensions,t=>t.toJSON())),e}}ts.CLASS_NAME="SingleResponse";const Uc="tbs",rn="version",xl="responderID",Il="producedAt",Vl="responses",$i="responseExtensions",Rn="ResponseData",Yc="".concat(Rn,".").concat(rn),Ki="".concat(Rn,".").concat(xl),df="".concat(Rn,".").concat(Il),pf="".concat(Rn,".").concat(Vl),eh="".concat(Rn,".").concat($i),wS=[Rn,Yc,Ki,df,pf,eh];class ze extends D{get tbs(){return pe.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(f(e,Uc,ze.defaultValues(Uc))),rn in e&&(this.version=f(e,rn,ze.defaultValues(rn))),this.responderID=f(e,xl,ze.defaultValues(xl)),this.producedAt=f(e,Il,ze.defaultValues(Il)),this.responses=f(e,Vl,ze.defaultValues(Vl)),$i in e&&(this.responseExtensions=f(e,$i,ze.defaultValues($i))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case rn:return 0;case Uc:return Ue;case xl:return{};case Il:return new Date(0,0,0);case Vl:case $i:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Uc:return t.byteLength===0;case xl:return Object.keys(t).length===0;case Il:return t===ze.defaultValues(e);case Vl:case $i:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||Rn,value:[new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new B({name:t.version||Yc})]}),new Ne({value:[new I({name:t.responderID||Ki,idBlock:{tagClass:3,tagNumber:1},value:[me.schema(t.ResponseDataByName||{names:{blockName:"ResponseData.byName"}})]}),new I({name:t.responderID||Ki,idBlock:{tagClass:3,tagNumber:2},value:[new $({name:t.ResponseDataByKey||"ResponseData.byKey"})]})]}),new ke({name:t.producedAt||df}),new A({value:[new Z({name:pf,value:ts.schema(t.response||{})})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[je.schema(t.extensions||{names:{blockName:eh}})]})]})}fromSchema(e){T(e,wS);const t=R(e,e,ze.schema());O.assertSchema(t,this.className),this.tbsView=t.result.ResponseData.valueBeforeDecodeView,Yc in t.result&&(this.version=t.result[Yc].valueBlock.valueDec),t.result[Ki].idBlock.tagNumber===1?this.responderID=new me({schema:t.result[Ki].valueBlock.value[0]}):this.responderID=t.result[Ki].valueBlock.value[0],this.producedAt=t.result[df].toDate(),this.responses=Array.from(t.result[pf],s=>new ts({schema:s})),eh in t.result&&(this.responseExtensions=Array.from(t.result[eh].valueBlock.value,s=>new De({schema:s})))}toSchema(e=!1){let t;if(e===!1){if(!this.tbsView.byteLength)return ze.schema();const s=Le(this.tbsView);O.assert(s,"TBS Response Data"),t=s.result}else{const s=[];rn in this&&s.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[new B({value:this.version})]})),this.responderID instanceof me?s.push(new I({idBlock:{tagClass:3,tagNumber:1},value:[this.responderID.toSchema()]})):s.push(new I({idBlock:{tagClass:3,tagNumber:2},value:[this.responderID]})),s.push(new ke({valueDate:this.producedAt})),s.push(new A({value:Array.from(this.responses,a=>a.toSchema())})),this.responseExtensions&&s.push(new I({idBlock:{tagClass:3,tagNumber:1},value:[new A({value:Array.from(this.responseExtensions,a=>a.toSchema())})]})),t=new A({value:s})}return t}toJSON(){const e={};return rn in this&&(e.version=this.version),this.responderID&&(e.responderID=this.responderID),this.producedAt&&(e.producedAt=this.producedAt),this.responses&&(e.responses=Array.from(this.responses,t=>t.toJSON())),this.responseExtensions&&(e.responseExtensions=Array.from(this.responseExtensions,t=>t.toJSON())),e}}ze.CLASS_NAME="ResponseData";const Dm="trustedCerts",Tm="certs",Rm="crls",Lm="ocsps",Um="checkDate",jm="findOrigin",$m="findIssuer";var dn;(function(r){r[r.unknown=-1]="unknown",r[r.success=0]="success",r[r.noRevocation=11]="noRevocation",r[r.noPath=60]="noPath",r[r.noValidPath=97]="noValidPath"})(dn||(dn={}));class qr extends Error{constructor(e,t){super(t),this.name=qr.NAME,this.code=e,this.message=t}}qr.NAME="ChainValidationError";function yS(r,e){for(let t=0;t=0;o--)try{await e.verify(a[o],s)===!1&&a.splice(o,1)}catch(c){a.splice(o,1)}return a}defaultValues(e){switch(e){case Dm:return[];case Tm:return[];case Rm:return[];case Lm:return[];case Um:return new Date;case jm:return Zh.defaultFindOrigin;case $m:return this.defaultFindIssuer;default:throw new Error("Invalid member name for CertificateChainValidationEngine class: ".concat(e))}}async sort(e=!1,t=Q(!0)){const s=[],a=async(d,w)=>{const y=[];function k(b){let N=!0;for(let S=0;S{const w=[],y=[],k=[];if(w.push(...s.filter(g=>d.issuer.isEqual(g.subject))),w.length===0)return{status:1,statusMessage:"No certificate's issuers"};if(y.push(...this.crls.filter(g=>g.issuer.isEqual(d.issuer))),y.length===0)return{status:2,statusMessage:"No CRLs for specific certificate issuer"};for(let g=0;g{const y=t.getAlgorithmByOID(d.signatureAlgorithm.algorithmId);if(!y.name||!y.hash)return 1;for(let k=0;k{for(let y=0;yw||d[y].notAfter.value=0;y--)if(d[y].issuer.isEqual(d[y].subject)===!1&&d[y].issuer.isEqual(d[y+1].subject)===!1)return{result:!1,resultCode:10,resultMessage:"Incorrect name chaining"};if(this.crls.length!==0||this.ocsps.length!==0)for(let y=0;y=0;d--){let w=!1;for(let y=0;y1)return!1;if(h.length>1){for(let p=0;p0&&h[p].charAt(h[p].length-1)!==":"){c=h[p].split(":")[0];break}}if(s(c,m)){const p=c.split("."),d=m.split(".");return d[0].length===0?!0:p.length===d.length}return!1}function u(l,o){const c=l.valueBlock.valueHexView,m=o.valueBlock.valueHexView;if(c.length===4&&m.length===8){for(let h=0;h<4;h++)if((c[h]^m[h])&m[h+4])return!1;return!0}if(c.length===16&&m.length===32){for(let h=0;h<16;h++)if((c[h]^m[h])&m[h+16])return!1;return!0}return!1}function i(l,o){if(l.typesAndValues.length===0||o.typesAndValues.length===0)return!0;if(l.typesAndValues.length=0;F--,K++){const W=this.certs[F];if(W.extensions){for(let q=0;qee.parsedValue.requireExplicitPolicy?ee.parsedValue.requireExplicitPolicy:N,ee.parsedValue.inhibitPolicyMapping===0?k=!0:b[1]===!1?(b[1]=!0,S=ee.parsedValue.inhibitPolicyMapping+1):S=S>ee.parsedValue.inhibitPolicyMapping+1?ee.parsedValue.inhibitPolicyMapping+1:S),ee.extnID===P0&&g===!1&&(ee.parsedValue.valueBlock.valueDec===0?g=!0:b[2]===!1?(b[2]=!0,E=ee.parsedValue.valueBlock.valueDec):E=E>ee.parsedValue.valueBlock.valueDec?ee.parsedValue.valueBlock.valueDec:E)}if(g===!0){let q=-1;for(let ee=0;ee1){W=!1;break}if(typeof j[F][q]>"u"){if(q>=we){for(let ie=0;ie0,resultCode:0,resultMessage:Y.length>0?v:'Zero "userConstrPolicies" array, no intersections with "authConstrPolicies"',authConstrPolicies:ae,userConstrPolicies:Y,explicitPolicyIndicator:y,policyMappings:M,certificatePath:this.certs};if(Y.length===0||se.result===!1)return se;K=1;for(let F=this.certs.length-2;F>=0;F--,K++){const W=this.certs[F];let q=[],ee=[],ie=[];if(W.extensions)for(let le=0;le0)for(let ye=0;ye0)for(let ye=0;ye0)for(let ye=0;ye0)for(let ye=0;ye0&&ua)throw se.result=!1,se.resultCode=41,se.resultMessage='Failed to meet "permitted sub-trees" name constraint',se}let Ie=!1;for(let le=0;le=0)for(let z=0;z0)for(let z=0;z0)for(let z=0;z0)for(let z=0;znew oe({schema:s})))}toSchema(){const e=[];return e.push(this.tbsResponseData.toSchema()),e.push(this.signatureAlgorithm.toSchema()),e.push(this.signature),this.certs&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[new A({value:Array.from(this.certs,t=>t.toSchema())})]})),new A({value:e})}toJSON(){const e={tbsResponseData:this.tbsResponseData.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signature:this.signature.toJSON()};return this.certs&&(e.certs=Array.from(this.certs,t=>t.toJSON())),e}async getCertificateStatus(e,t,s=Q(!0)){const a={isForCertificate:!1,status:2},n={},u=[];for(const i of this.tbsResponseData.responses){const l=s.getAlgorithmByOID(i.certID.hashAlgorithm.algorithmId,!0,"CertID.hashAlgorithm");if(!n[l.name]){n[l.name]=1;const o=new Te;u.push(o),await o.createForCertificate(e,{hashAlgorithm:l.name,issuerCertificate:t},s)}}for(const i of this.tbsResponseData.responses)for(const l of u)if(i.certID.isEqual(l)){a.isForCertificate=!0;try{switch(i.certStatus.idBlock.isConstructed){case!0:i.certStatus.idBlock.tagNumber===1&&(a.status=1);break;case!1:switch(i.certStatus.idBlock.tagNumber){case 0:a.status=0;break;case 2:a.status=2;break;default:}break;default:}}catch(o){}return a}return a}async sign(e,t="SHA-1",s=Q(!0)){if(!e)throw new Error("Need to provide a private key for signing");const a=await s.getSignatureParameters(e,t),n=a.parameters.algorithm;if(!("name"in n))throw new Error("Empty algorithm");this.signatureAlgorithm=a.signatureAlgorithm,this.tbsResponseData.tbsView=new Uint8Array(this.tbsResponseData.toSchema(!0).toBER());const u=await s.signWithPrivateKey(this.tbsResponseData.tbsView,e,{algorithm:n});this.signature=new re({valueHex:u})}async verify(e={},t=Q(!0)){let s=null,a=-1;const n=e.trustedCerts||[];if(!this.certs)throw new Error("No certificates attached to the BasicOCSPResponse");switch(!0){case this.tbsResponseData.responderID instanceof me:for(const[i,l]of this.certs.entries())if(l.subject.isEqual(this.tbsResponseData.responderID)){a=i;break}break;case this.tbsResponseData.responderID instanceof $:for(const[i,l]of this.certs.entries()){const o=await t.digest({name:"sha-1"},l.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView);if(Zl(o,this.tbsResponseData.responderID.valueBlock.valueHex)){a=i;break}}break;default:throw new Error("Wrong value for responderID")}if(a===-1)throw new Error("Correct certificate was not found in OCSP response");s=this.certs[a];const u=[s];for(const i of this.certs){const l=await $g(i,s);l&&u.push(l)}if(!(await new Zh({certs:u,trustedCerts:n}).verify({},t)).result)throw new Error("Validation of signer's certificate failed");return t.verifyWithPublicKey(this.tbsResponseData.tbsView,this.signature,this.certs[a].subjectPublicKeyInfo,this.signatureAlgorithm)}}qt.CLASS_NAME="BasicOCSPResponse";const Km="tbs",Hm="version",Mm="subject",Fm="subjectPublicKeyInfo",Hn="attributes",Ol="signatureAlgorithm",Dl="signatureValue",Vo="CertificationRequestInfo",ld="".concat(Vo,".version"),cd="".concat(Vo,".subject"),hd="".concat(Vo,".subjectPublicKeyInfo"),Mh="".concat(Vo,".attributes"),bS=[Vo,ld,cd,hd,Mh,Ol,Dl];function SS(r={}){const e=f(r,"names",{});return new A({name:e.CertificationRequestInfo||Vo,value:[new B({name:e.CertificationRequestInfoVersion||ld}),me.schema(e.subject||{names:{blockName:cd}}),Ct.schema({names:{blockName:hd}}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Z({optional:!0,name:e.CertificationRequestInfoAttributes||Mh,value:ge.schema(e.attributes||{})})]})]})}class Yt extends D{get tbs(){return pe.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(f(e,Km,Yt.defaultValues(Km))),this.version=f(e,Hm,Yt.defaultValues(Hm)),this.subject=f(e,Mm,Yt.defaultValues(Mm)),this.subjectPublicKeyInfo=f(e,Fm,Yt.defaultValues(Fm)),Hn in e&&(this.attributes=f(e,Hn,Yt.defaultValues(Hn))),this.signatureAlgorithm=f(e,Ol,Yt.defaultValues(Ol)),this.signatureValue=f(e,Dl,Yt.defaultValues(Dl)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Km:return Ue;case Hm:return 0;case Mm:return new me;case Fm:return new Ct;case Hn:return[];case Ol:return new V;case Dl:return new re;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({value:[SS(t.certificationRequestInfo||{}),new A({name:t.signatureAlgorithm||Ol,value:[new J,new X({optional:!0})]}),new re({name:t.signatureValue||Dl})]})}fromSchema(e){T(e,bS);const t=R(e,e,Yt.schema());O.assertSchema(t,this.className),this.tbsView=t.result.CertificationRequestInfo.valueBeforeDecodeView,this.version=t.result[ld].valueBlock.valueDec,this.subject=new me({schema:t.result[cd]}),this.subjectPublicKeyInfo=new Ct({schema:t.result[hd]}),Mh in t.result&&(this.attributes=Array.from(t.result[Mh],s=>new ge({schema:s}))),this.signatureAlgorithm=new V({schema:t.result.signatureAlgorithm}),this.signatureValue=t.result.signatureValue}encodeTBS(){const e=[new B({value:this.version}),this.subject.toSchema(),this.subjectPublicKeyInfo.toSchema()];return Hn in this&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.attributes||[],t=>t.toSchema())})),new A({value:e})}toSchema(e=!1){let t;if(e===!1){if(this.tbsView.byteLength===0)return Yt.schema();const s=Le(this.tbsView);O.assert(s,"PKCS#10 Certificate Request"),t=s.result}else t=this.encodeTBS();return new A({value:[t,this.signatureAlgorithm.toSchema(),this.signatureValue]})}toJSON(){const e={tbs:ce.ToHex(this.tbsView),version:this.version,subject:this.subject.toJSON(),subjectPublicKeyInfo:this.subjectPublicKeyInfo.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signatureValue:this.signatureValue.toJSON()};return Hn in this&&(e.attributes=Array.from(this.attributes||[],t=>t.toJSON())),e}async sign(e,t="SHA-1",s=Q(!0)){if(!e)throw new Error("Need to provide a private key for signing");const a=await s.getSignatureParameters(e,t),n=a.parameters;this.signatureAlgorithm=a.signatureAlgorithm,this.tbsView=new Uint8Array(this.encodeTBS().toBER());const u=await s.signWithPrivateKey(this.tbsView,e,n);this.signatureValue=new re({valueHex:u})}async verify(e=Q(!0)){return e.verifyWithPublicKey(this.tbsView,this.signatureValue,this.subjectPublicKeyInfo,this.signatureAlgorithm)}async getPublicKey(e,t=Q(!0)){return t.getPublicKey(this.subjectPublicKeyInfo,this.signatureAlgorithm,e)}}Yt.CLASS_NAME="CertificationRequest";const an="digestAlgorithm",nn="digest",AS=[an,nn];class Gt extends D{constructor(e={}){super(),this.digestAlgorithm=f(e,an,Gt.defaultValues(an)),this.digest=f(e,nn,Gt.defaultValues(nn)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case an:return new V;case nn:return new $;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case an:return V.compareWithDefault("algorithmId",t.algorithmId)&&!("algorithmParams"in t);case nn:return t.isEqual(Gt.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[V.schema(t.digestAlgorithm||{names:{blockName:an}}),new $({name:t.digest||nn})]})}fromSchema(e){T(e,AS);const t=R(e,e,Gt.schema({names:{digestAlgorithm:{names:{blockName:an}},digest:nn}}));O.assertSchema(t,this.className),this.digestAlgorithm=new V({schema:t.result.digestAlgorithm}),this.digest=t.result.digest}toSchema(){return new A({value:[this.digestAlgorithm.toSchema(),this.digest]})}toJSON(){return{digestAlgorithm:this.digestAlgorithm.toJSON(),digest:this.digest.toJSON()}}}Gt.CLASS_NAME="DigestInfo";const Mi="eContentType",Qt="eContent",NS=[Mi,Qt];class Vt extends D{constructor(e={}){if(super(),this.eContentType=f(e,Mi,Vt.defaultValues(Mi)),Qt in e&&(this.eContent=f(e,Qt,Vt.defaultValues(Qt)),this.eContent.idBlock.tagClass===1&&this.eContent.idBlock.tagNumber===4&&this.eContent.idBlock.isConstructed===!1)){const t=new $({idBlock:{isConstructed:!0},isConstructed:!0});let s=0;const a=this.eContent.valueBlock.valueHexView.slice().buffer;let n=a.byteLength;for(;n>0;){const u=new Uint8Array(a,s,s+65536>a.byteLength?a.byteLength-s:65536),i=new ArrayBuffer(u.length),l=new Uint8Array(i);for(let o=0;onew De({schema:s})))}toSchema(){const e=[];return e.push(this.reqCert.toSchema()),this.singleRequestExtensions&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new A({value:Array.from(this.singleRequestExtensions,t=>t.toSchema())})]})),new A({value:e})}toJSON(){const e={reqCert:this.reqCert.toJSON()};return this.singleRequestExtensions&&(e.singleRequestExtensions=Array.from(this.singleRequestExtensions,t=>t.toJSON())),e}};Fh.CLASS_NAME="Request";const jc="tbs",Ji="version",qi="requestorName",$c="requestList",Wi="requestExtensions",Bo="TBSRequest",rh="".concat(Bo,".").concat(Ji),ah="".concat(Bo,".").concat(qi),vf="".concat(Bo,".requests"),nh="".concat(Bo,".").concat(Wi),xS=[Bo,rh,ah,vf,nh];class rt extends D{get tbs(){return pe.toArrayBuffer(this.tbsView)}set tbs(e){this.tbsView=new Uint8Array(e)}constructor(e={}){super(),this.tbsView=new Uint8Array(f(e,jc,rt.defaultValues(jc))),Ji in e&&(this.version=f(e,Ji,rt.defaultValues(Ji))),qi in e&&(this.requestorName=f(e,qi,rt.defaultValues(qi))),this.requestList=f(e,$c,rt.defaultValues($c)),Wi in e&&(this.requestExtensions=f(e,Wi,rt.defaultValues(Wi))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case jc:return Ue;case Ji:return 0;case qi:return new ue;case $c:case Wi:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case jc:return t.byteLength===0;case Ji:return t===rt.defaultValues(e);case qi:return t.type===ue.defaultValues("type")&&Object.keys(t.value).length===0;case $c:case Wi:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||Bo,value:[new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new B({name:t.TBSRequestVersion||rh})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[ue.schema(t.requestorName||{names:{blockName:ah}})]}),new A({name:t.requestList||"TBSRequest.requestList",value:[new Z({name:t.requests||vf,value:Fh.schema(t.requestNames||{})})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:2},value:[je.schema(t.extensions||{names:{blockName:t.requestExtensions||nh}})]})]})}fromSchema(e){T(e,xS);const t=R(e,e,rt.schema());O.assertSchema(t,this.className),this.tbsView=t.result.TBSRequest.valueBeforeDecodeView,rh in t.result&&(this.version=t.result[rh].valueBlock.valueDec),ah in t.result&&(this.requestorName=new ue({schema:t.result[ah]})),this.requestList=Array.from(t.result[vf],s=>new Fh({schema:s})),nh in t.result&&(this.requestExtensions=Array.from(t.result[nh].valueBlock.value,s=>new De({schema:s})))}toSchema(e=!1){let t;if(e===!1){if(this.tbsView.byteLength===0)return rt.schema();const s=Le(this.tbsView);if(O.assert(s,"TBS Request"),!(s.result instanceof A))throw new Error("ASN.1 result should be SEQUENCE");t=s.result}else{const s=[];this.version!==void 0&&s.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[new B({value:this.version})]})),this.requestorName&&s.push(new I({idBlock:{tagClass:3,tagNumber:1},value:[this.requestorName.toSchema()]})),s.push(new A({value:Array.from(this.requestList,a=>a.toSchema())})),this.requestExtensions&&s.push(new I({idBlock:{tagClass:3,tagNumber:2},value:[new A({value:Array.from(this.requestExtensions,a=>a.toSchema())})]})),t=new A({value:s})}return t}toJSON(){const e={};return this.version!=null&&(e.version=this.version),this.requestorName&&(e.requestorName=this.requestorName.toJSON()),e.requestList=Array.from(this.requestList,t=>t.toJSON()),this.requestExtensions&&(e.requestExtensions=Array.from(this.requestExtensions,t=>t.toJSON())),e}}rt.CLASS_NAME="TBSRequest";const Mn="signatureAlgorithm",Fn="signature",er="certs";class Tt extends D{constructor(e={}){super(),this.signatureAlgorithm=f(e,Mn,Tt.defaultValues(Mn)),this.signature=f(e,Fn,Tt.defaultValues(Fn)),er in e&&(this.certs=f(e,er,Tt.defaultValues(er))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Mn:return new V;case Fn:return new re;case er:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Mn:return t.algorithmId===v&&!("algorithmParams"in t);case Fn:return t.isEqual(Tt.defaultValues(e));case er:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[V.schema(t.signatureAlgorithm||{}),new re({name:t.signature||v}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new A({value:[new Z({name:t.certs||v,value:oe.schema({})})]})]})]})}fromSchema(e){T(e,[Mn,Fn,er]);const t=R(e,e,Tt.schema({names:{signatureAlgorithm:{names:{blockName:Mn}},signature:Fn,certs:er}}));O.assertSchema(t,this.className),this.signatureAlgorithm=new V({schema:t.result.signatureAlgorithm}),this.signature=t.result.signature,er in t.result&&(this.certs=Array.from(t.result.certs,s=>new oe({schema:s})))}toSchema(){const e=[];return e.push(this.signatureAlgorithm.toSchema()),e.push(this.signature),this.certs&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new A({value:Array.from(this.certs,t=>t.toSchema())})]})),new A({value:e})}toJSON(){const e={signatureAlgorithm:this.signatureAlgorithm.toJSON(),signature:this.signature.toJSON()};return this.certs&&(e.certs=Array.from(this.certs,t=>t.toJSON())),e}}Tt.CLASS_NAME="Signature";const Gi="tbsRequest",Lr="optionalSignature",IS=[Gi,Lr];class _l extends D{constructor(e={}){super(),this.tbsRequest=f(e,Gi,_l.defaultValues(Gi)),Lr in e&&(this.optionalSignature=f(e,Lr,_l.defaultValues(Lr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Gi:return new rt;case Lr:return new Tt;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Gi:return rt.compareWithDefault("tbs",t.tbs)&&rt.compareWithDefault("version",t.version)&&rt.compareWithDefault("requestorName",t.requestorName)&&rt.compareWithDefault("requestList",t.requestList)&&rt.compareWithDefault("requestExtensions",t.requestExtensions);case Lr:return Tt.compareWithDefault("signatureAlgorithm",t.signatureAlgorithm)&&Tt.compareWithDefault("signature",t.signature)&&Tt.compareWithDefault("certs",t.certs);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||"OCSPRequest",value:[rt.schema(t.tbsRequest||{names:{blockName:Gi}}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[Tt.schema(t.optionalSignature||{names:{blockName:Lr}})]})]})}fromSchema(e){T(e,IS);const t=R(e,e,_l.schema());O.assertSchema(t,this.className),this.tbsRequest=new rt({schema:t.result.tbsRequest}),Lr in t.result&&(this.optionalSignature=new Tt({schema:t.result.optionalSignature}))}toSchema(e=!1){const t=[];return t.push(this.tbsRequest.toSchema(e)),this.optionalSignature&&t.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[this.optionalSignature.toSchema()]})),new A({value:t})}toJSON(){const e={tbsRequest:this.tbsRequest.toJSON()};return this.optionalSignature&&(e.optionalSignature=this.optionalSignature.toJSON()),e}async createForCertificate(e,t,s=Q(!0)){const a=new Te;await a.createForCertificate(e,t,s),this.tbsRequest.requestList.push(new Fh({reqCert:a}))}async sign(e,t="SHA-1",s=Q(!0)){if(ne.assertEmpty(e,"privateKey","OCSPRequest.sign method"),!this.optionalSignature)throw new Error('Need to create "optionalSignature" field before signing');const a=await s.getSignatureParameters(e,t),n=a.parameters;this.optionalSignature.signatureAlgorithm=a.signatureAlgorithm;const u=this.tbsRequest.toSchema(!0).toBER(!1),i=await s.signWithPrivateKey(u,e,n);this.optionalSignature.signature=new re({valueHex:i})}verify(){}}_l.CLASS_NAME="OCSPRequest";const zi="responseType",_i="response",VS=[zi,_i];class rs extends D{constructor(e={}){super(),this.responseType=f(e,zi,rs.defaultValues(zi)),this.response=f(e,_i,rs.defaultValues(_i)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case zi:return v;case _i:return new $;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case zi:return t===v;case _i:return t.isEqual(rs.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new J({name:t.responseType||v}),new $({name:t.response||v})]})}fromSchema(e){T(e,VS);const t=R(e,e,rs.schema({names:{responseType:zi,response:_i}}));O.assertSchema(t,this.className),this.responseType=t.result.responseType.valueBlock.toString(),this.response=t.result.response}toSchema(){return new A({value:[new J({value:this.responseType}),this.response]})}toJSON(){return{responseType:this.responseType,response:this.response.toJSON()}}}rs.CLASS_NAME="ResponseBytes";const Jn="responseStatus",ys="responseBytes";class po extends D{constructor(e={}){super(),this.responseStatus=f(e,Jn,po.defaultValues(Jn)),ys in e&&(this.responseBytes=f(e,ys,po.defaultValues(ys))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Jn:return new Yl;case ys:return new rs;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Jn:return t.isEqual(po.defaultValues(e));case ys:return rs.compareWithDefault("responseType",t.responseType)&&rs.compareWithDefault("response",t.response);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||"OCSPResponse",value:[new Yl({name:t.responseStatus||Jn}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[rs.schema(t.responseBytes||{names:{blockName:ys}})]})]})}fromSchema(e){T(e,[Jn,ys]);const t=R(e,e,po.schema());O.assertSchema(t,this.className),this.responseStatus=t.result.responseStatus,ys in t.result&&(this.responseBytes=new rs({schema:t.result.responseBytes}))}toSchema(){const e=[];return e.push(this.responseStatus),this.responseBytes&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:[this.responseBytes.toSchema()]})),new A({value:e})}toJSON(){const e={responseStatus:this.responseStatus.toJSON()};return this.responseBytes&&(e.responseBytes=this.responseBytes.toJSON()),e}async getCertificateStatus(e,t,s=Q(!0)){let a;const n={isForCertificate:!1,status:2};if(!this.responseBytes||this.responseBytes.responseType!==qc)return n;try{const u=Le(this.responseBytes.response.valueBlock.valueHexView);O.assert(u,"Basic OCSP response"),a=new qt({schema:u.result})}catch(u){return n}return a.getCertificateStatus(e,t,s)}async sign(e,t,s=Q(!0)){var a;if(this.responseBytes&&this.responseBytes.responseType===qc)return qt.fromBER(this.responseBytes.response.valueBlock.valueHexView).sign(e,t,s);throw new Error("Unknown ResponseBytes type: ".concat(((a=this.responseBytes)===null||a===void 0?void 0:a.responseType)||"Unknown"))}async verify(e=null,t=Q(!0)){var s;if(!(ys in this))throw new Error("Empty ResponseBytes field");if(this.responseBytes&&this.responseBytes.responseType===qc){const a=qt.fromBER(this.responseBytes.response.valueBlock.valueHexView);return e!==null&&(a.certs||(a.certs=[]),a.certs.push(e)),a.verify({},t)}throw new Error("Unknown ResponseBytes type: ".concat(((s=this.responseBytes)===null||s===void 0?void 0:s.responseType)||"Unknown"))}}po.CLASS_NAME="OCSPResponse";const fa="type",Is="attributes",Kc="encodedValue",BS=[Is];class Se extends D{constructor(e={}){super(),this.type=f(e,fa,Se.defaultValues(fa)),this.attributes=f(e,Is,Se.defaultValues(Is)),this.encodedValue=f(e,Kc,Se.defaultValues(Kc)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case fa:return-1;case Is:return[];case Kc:return Ue;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case fa:return t===Se.defaultValues(fa);case Is:return t.length===0;case Kc:return t.byteLength===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new I({name:t.blockName||v,optional:!0,idBlock:{tagClass:3,tagNumber:t.tagNumber||0},value:[new Z({name:t.attributes||v,value:ge.schema()})]})}fromSchema(e){T(e,BS);const t=R(e,e,Se.schema({names:{tagNumber:this.type,attributes:Is}}));O.assertSchema(t,this.className),this.type=t.result.idBlock.tagNumber,this.encodedValue=pe.toArrayBuffer(t.result.valueBeforeDecodeView);const s=new Uint8Array(this.encodedValue);if(s[0]=49,!(Is in t.result)){if(this.type===0)throw new Error("Wrong structure of SignedUnsignedAttributes");return}this.attributes=Array.from(t.result.attributes,a=>new ge({schema:a}))}toSchema(){if(Se.compareWithDefault(fa,this.type)||Se.compareWithDefault(Is,this.attributes))throw new Error('Incorrectly initialized "SignedAndUnsignedAttributes" class');return new I({optional:!0,idBlock:{tagClass:3,tagNumber:this.type},value:Array.from(this.attributes,e=>e.toSchema())})}toJSON(){if(Se.compareWithDefault(fa,this.type)||Se.compareWithDefault(Is,this.attributes))throw new Error('Incorrectly initialized "SignedAndUnsignedAttributes" class');return{type:this.type,attributes:Array.from(this.attributes,e=>e.toJSON())}}}Se.CLASS_NAME="SignedAndUnsignedAttributes";const Xi="version",ln="sid",Zi="digestAlgorithm",Ur="signedAttrs",Qi="signatureAlgorithm",Rl="signature",jr="unsignedAttrs",oa="SignerInfo",bf="".concat(oa,".").concat(Xi),Ll="".concat(oa,".").concat(ln),Sf="".concat(oa,".").concat(Zi),ih="".concat(oa,".").concat(Ur),Af="".concat(oa,".").concat(Qi),Nf="".concat(oa,".").concat(Rl),oh="".concat(oa,".").concat(jr),PS=[bf,Ll,Sf,ih,Af,Nf,oh];class Ve extends D{constructor(e={}){super(),this.version=f(e,Xi,Ve.defaultValues(Xi)),this.sid=f(e,ln,Ve.defaultValues(ln)),this.digestAlgorithm=f(e,Zi,Ve.defaultValues(Zi)),Ur in e&&(this.signedAttrs=f(e,Ur,Ve.defaultValues(Ur))),this.signatureAlgorithm=f(e,Qi,Ve.defaultValues(Qi)),this.signature=f(e,Rl,Ve.defaultValues(Rl)),jr in e&&(this.unsignedAttrs=f(e,jr,Ve.defaultValues(jr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Xi:return 0;case ln:return new X;case Zi:return new V;case Ur:return new Se({type:0});case Qi:return new V;case Rl:return new $;case jr:return new Se({type:1});default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Xi:return Ve.defaultValues(Xi)===t;case ln:return t instanceof X;case Zi:return t instanceof V?t.isEqual(Ve.defaultValues(Zi)):!1;case Ur:return Se.compareWithDefault("type",t.type)&&Se.compareWithDefault("attributes",t.attributes)&&Se.compareWithDefault("encodedValue",t.encodedValue);case Qi:return t instanceof V?t.isEqual(Ve.defaultValues(Qi)):!1;case Rl:case jr:return Se.compareWithDefault("type",t.type)&&Se.compareWithDefault("attributes",t.attributes)&&Se.compareWithDefault("encodedValue",t.encodedValue);default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:oa,value:[new B({name:t.version||bf}),new Ne({value:[$e.schema(t.sidSchema||{names:{blockName:Ll}}),new Ne({value:[new I({optional:!0,name:t.sid||Ll,idBlock:{tagClass:3,tagNumber:0},value:[new $]}),new _({optional:!0,name:t.sid||Ll,idBlock:{tagClass:3,tagNumber:0}})]})]}),V.schema(t.digestAlgorithm||{names:{blockName:Sf}}),Se.schema(t.signedAttrs||{names:{blockName:ih,tagNumber:0}}),V.schema(t.signatureAlgorithm||{names:{blockName:Af}}),new $({name:t.signature||Nf}),Se.schema(t.unsignedAttrs||{names:{blockName:oh,tagNumber:1}})]})}fromSchema(e){T(e,PS);const t=R(e,e,Ve.schema());O.assertSchema(t,this.className),this.version=t.result[bf].valueBlock.valueDec;const s=t.result[Ll];s.idBlock.tagClass===1?this.sid=new $e({schema:s}):this.sid=s,this.digestAlgorithm=new V({schema:t.result[Sf]}),ih in t.result&&(this.signedAttrs=new Se({type:0,schema:t.result[ih]})),this.signatureAlgorithm=new V({schema:t.result[Af]}),this.signature=t.result[Nf],oh in t.result&&(this.unsignedAttrs=new Se({type:1,schema:t.result[oh]}))}toSchema(){if(Ve.compareWithDefault(ln,this.sid))throw new Error('Incorrectly initialized "SignerInfo" class');const e=[];return e.push(new B({value:this.version})),this.sid instanceof $e?e.push(this.sid.toSchema()):e.push(this.sid),e.push(this.digestAlgorithm.toSchema()),this.signedAttrs&&Ve.compareWithDefault(Ur,this.signedAttrs)===!1&&e.push(this.signedAttrs.toSchema()),e.push(this.signatureAlgorithm.toSchema()),e.push(this.signature),this.unsignedAttrs&&Ve.compareWithDefault(jr,this.unsignedAttrs)===!1&&e.push(this.unsignedAttrs.toSchema()),new A({value:e})}toJSON(){if(Ve.compareWithDefault(ln,this.sid))throw new Error('Incorrectly initialized "SignerInfo" class');const e={version:this.version,digestAlgorithm:this.digestAlgorithm.toJSON(),signatureAlgorithm:this.signatureAlgorithm.toJSON(),signature:this.signature.toJSON()};return this.sid instanceof X||(e.sid=this.sid.toJSON()),this.signedAttrs&&Ve.compareWithDefault(Ur,this.signedAttrs)===!1&&(e.signedAttrs=this.signedAttrs.toJSON()),this.unsignedAttrs&&Ve.compareWithDefault(jr,this.unsignedAttrs)===!1&&(e.unsignedAttrs=this.unsignedAttrs.toJSON()),e}}Ve.CLASS_NAME="SignerInfo";const Ul="version",jl="policy",$l="messageImprint",Kl="serialNumber",Hl="genTime",cn="ordering",hn="nonce",Yi="accuracy",eo="tsa",to="extensions",is="TSTInfo",kf="".concat(is,".").concat(Ul),Cf="".concat(is,".").concat(jl),Ef="".concat(is,".").concat($l),xf="".concat(is,".").concat(Kl),If="".concat(is,".").concat(Hl),uh="".concat(is,".").concat(Yi),lh="".concat(is,".").concat(cn),ch="".concat(is,".").concat(hn),hh="".concat(is,".").concat(eo),mh="".concat(is,".").concat(to),OS=[kf,Cf,Ef,xf,If,uh,lh,ch,hh,mh];class lt extends D{constructor(e={}){super(),this.version=f(e,Ul,lt.defaultValues(Ul)),this.policy=f(e,jl,lt.defaultValues(jl)),this.messageImprint=f(e,$l,lt.defaultValues($l)),this.serialNumber=f(e,Kl,lt.defaultValues(Kl)),this.genTime=f(e,Hl,lt.defaultValues(Hl)),Yi in e&&(this.accuracy=f(e,Yi,lt.defaultValues(Yi))),cn in e&&(this.ordering=f(e,cn,lt.defaultValues(cn))),hn in e&&(this.nonce=f(e,hn,lt.defaultValues(hn))),eo in e&&(this.tsa=f(e,eo,lt.defaultValues(eo))),to in e&&(this.extensions=f(e,to,lt.defaultValues(to))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case Ul:return 0;case jl:return v;case $l:return new nt;case Kl:return new B;case Hl:return new Date(0,0,0);case Yi:return new Dt;case cn:return!1;case hn:return new B;case eo:return new ue;case to:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case Ul:case jl:case Hl:case cn:return t===lt.defaultValues(cn);case $l:return nt.compareWithDefault(pn,t.hashAlgorithm)&&nt.compareWithDefault(gn,t.hashedMessage);case Kl:case hn:return t.isEqual(lt.defaultValues(hn));case Yi:return Dt.compareWithDefault(rr,t.seconds)&&Dt.compareWithDefault(ar,t.millis)&&Dt.compareWithDefault(nr,t.micros);case eo:return ue.compareWithDefault(Zo,t.type)&&ue.compareWithDefault(Qo,t.value);case to:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||is,value:[new B({name:t.version||kf}),new J({name:t.policy||Cf}),nt.schema(t.messageImprint||{names:{blockName:Ef}}),new B({name:t.serialNumber||xf}),new ke({name:t.genTime||If}),Dt.schema(t.accuracy||{names:{blockName:uh}}),new ia({name:t.ordering||lh,optional:!0}),new B({name:t.nonce||ch,optional:!0}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[ue.schema(t.tsa||{names:{blockName:hh}})]}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:[new Z({name:t.extensions||mh,value:De.schema(t.extension||{})})]})]})}fromSchema(e){T(e,OS);const t=R(e,e,lt.schema());O.assertSchema(t,this.className),this.version=t.result[kf].valueBlock.valueDec,this.policy=t.result[Cf].valueBlock.toString(),this.messageImprint=new nt({schema:t.result[Ef]}),this.serialNumber=t.result[xf],this.genTime=t.result[If].toDate(),uh in t.result&&(this.accuracy=new Dt({schema:t.result[uh]})),lh in t.result&&(this.ordering=t.result[lh].valueBlock.value),ch in t.result&&(this.nonce=t.result[ch]),hh in t.result&&(this.tsa=new ue({schema:t.result[hh]})),mh in t.result&&(this.extensions=Array.from(t.result[mh],s=>new De({schema:s})))}toSchema(){const e=[];return e.push(new B({value:this.version})),e.push(new J({value:this.policy})),e.push(this.messageImprint.toSchema()),e.push(this.serialNumber),e.push(new ke({valueDate:this.genTime})),this.accuracy&&e.push(this.accuracy.toSchema()),this.ordering!==void 0&&e.push(new ia({value:this.ordering})),this.nonce&&e.push(this.nonce),this.tsa&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[this.tsa.toSchema()]})),this.extensions&&e.push(new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.extensions,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={version:this.version,policy:this.policy,messageImprint:this.messageImprint.toJSON(),serialNumber:this.serialNumber.toJSON(),genTime:this.genTime};return this.accuracy&&(e.accuracy=this.accuracy.toJSON()),this.ordering!==void 0&&(e.ordering=this.ordering),this.nonce&&(e.nonce=this.nonce.toJSON()),this.tsa&&(e.tsa=this.tsa.toJSON()),this.extensions&&(e.extensions=Array.from(this.extensions,t=>t.toJSON())),e}async verify(e,t=Q(!0)){if(!e.data)throw new Error('"data" is a mandatory attribute for TST_INFO verification');const s=e.data;if(e.notBefore&&this.genTimee.notAfter)throw new Error("Generation time for TSTInfo object is more than notAfter value");const a=t.getAlgorithmByOID(this.messageImprint.hashAlgorithm.algorithmId,!0,"MessageImprint.hashAlgorithm"),n=await t.digest(a.name,new Uint8Array(s));return pe.isEqual(n,this.messageImprint.hashedMessage.valueBlock.valueHexView)}}lt.CLASS_NAME="TSTInfo";const so="version",Ml="digestAlgorithms",Fl="encapContentInfo",ro="certificates",ao="crls",Jl="signerInfos",zo="ocsps",Ln="SignedData",Vf="".concat(Ln,".").concat(so),fh="".concat(Ln,".").concat(Ml),Bf="".concat(Ln,".").concat(Fl),dh="".concat(Ln,".").concat(ro),ph="".concat(Ln,".").concat(ao),gh="".concat(Ln,".").concat(Jl),DS=[Vf,fh,Bf,dh,ph,gh];class ut extends Error{constructor({message:e,code:t=0,date:s=new Date,signatureVerified:a=null,signerCertificate:n=null,signerCertificateVerified:u=null,timestampSerial:i=null,certificatePath:l=[]}){super(e),this.name="SignedDataVerifyError",this.date=s,this.code=t,this.timestampSerial=i,this.signatureVerified=a,this.signerCertificate=n,this.signerCertificateVerified=u,this.certificatePath=l}}class st extends D{constructor(e={}){super(),this.version=f(e,so,st.defaultValues(so)),this.digestAlgorithms=f(e,Ml,st.defaultValues(Ml)),this.encapContentInfo=f(e,Fl,st.defaultValues(Fl)),ro in e&&(this.certificates=f(e,ro,st.defaultValues(ro))),ao in e&&(this.crls=f(e,ao,st.defaultValues(ao))),zo in e&&(this.ocsps=f(e,zo,st.defaultValues(zo))),this.signerInfos=f(e,Jl,st.defaultValues(Jl)),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case so:return 0;case Ml:return[];case Fl:return new Vt;case ro:return[];case ao:return[];case zo:return[];case Jl:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case so:return t===st.defaultValues(so);case Fl:return Vt.compareWithDefault("eContentType",t.eContentType)&&Vt.compareWithDefault("eContent",t.eContent);case Ml:case ro:case ao:case zo:case Jl:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return t.optional===void 0&&(t.optional=!1),new A({name:t.blockName||Ln,optional:t.optional,value:[new B({name:t.version||Vf}),new Je({value:[new Z({name:t.digestAlgorithms||fh,value:V.schema()})]}),Vt.schema(t.encapContentInfo||{names:{blockName:Bf}}),new I({name:t.certificates||dh,optional:!0,idBlock:{tagClass:3,tagNumber:0},value:ps.schema().valueBlock.value}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:1},value:Ms.schema(t.crls||{names:{crls:ph}}).valueBlock.value}),new Je({value:[new Z({name:t.signerInfos||gh,value:Ve.schema()})]})]})}fromSchema(e){T(e,DS);const t=R(e,e,st.schema());if(O.assertSchema(t,this.className),this.version=t.result[Vf].valueBlock.valueDec,fh in t.result&&(this.digestAlgorithms=Array.from(t.result[fh],s=>new V({schema:s}))),this.encapContentInfo=new Vt({schema:t.result[Bf]}),dh in t.result){const s=new ps({schema:new Je({value:t.result[dh].valueBlock.value})});this.certificates=s.certificates.slice(0)}ph in t.result&&(this.crls=Array.from(t.result[ph],s=>s.idBlock.tagClass===1?new Me({schema:s}):(s.idBlock.tagClass=1,s.idBlock.tagNumber=16,new Hs({schema:s})))),gh in t.result&&(this.signerInfos=Array.from(t.result[gh],s=>new Ve({schema:s})))}toSchema(e=!1){const t=[];if(this.certificates&&this.certificates.length&&this.certificates.some(s=>s instanceof ra)||this.crls&&this.crls.length&&this.crls.some(s=>s instanceof Hs)?this.version=5:this.certificates&&this.certificates.length&&this.certificates.some(s=>s instanceof Lt)?this.version=4:this.certificates&&this.certificates.length&&this.certificates.some(s=>s instanceof Ls)||this.signerInfos.some(s=>s.version===3)||this.encapContentInfo.eContentType!==st.ID_DATA?this.version=3:this.version=1,t.push(new B({value:this.version})),t.push(new Je({value:Array.from(this.digestAlgorithms,s=>s.toSchema())})),t.push(this.encapContentInfo.toSchema()),this.certificates){const s=new ps({certificates:this.certificates}).toSchema();t.push(new I({idBlock:{tagClass:3,tagNumber:0},value:s.valueBlock.value}))}return this.crls&&t.push(new I({idBlock:{tagClass:3,tagNumber:1},value:Array.from(this.crls,s=>{if(s instanceof Hs){const a=s.toSchema();return a.idBlock.tagClass=3,a.idBlock.tagNumber=1,a}return s.toSchema(e)})})),t.push(new Je({value:Array.from(this.signerInfos,s=>s.toSchema())})),new A({value:t})}toJSON(){const e={version:this.version,digestAlgorithms:Array.from(this.digestAlgorithms,t=>t.toJSON()),encapContentInfo:this.encapContentInfo.toJSON(),signerInfos:Array.from(this.signerInfos,t=>t.toJSON())};return this.certificates&&(e.certificates=Array.from(this.certificates,t=>t.toJSON())),this.crls&&(e.crls=Array.from(this.crls,t=>t.toJSON())),e}async verify({signer:e=-1,data:t=Ue,trustedCerts:s=[],checkDate:a=new Date,checkChain:n=!1,passedWhenNotRevValues:u=!1,extendedMode:i=!1,findOrigin:l=null,findIssuer:o=null}={},c=Q(!0)){let m=null,h=null;try{let p=Ue,d=v,w=[];const y=this.signerInfos[e];if(!y)throw new ut({date:a,code:1,message:"Unable to get signer by supplied index"});if(!this.certificates)throw new ut({date:a,code:2,message:"No certificates attached to this signed data"});if(y.sid instanceof $e){for(const N of this.certificates)if(N instanceof oe&&N.issuer.isEqual(y.sid.issuer)&&N.serialNumber.isEqual(y.sid.serialNumber)){m=N;break}}else{const N=y.sid,S=N.idBlock.isConstructed?N.valueBlock.value[0].valueBlock.valueHex:N.valueBlock.valueHex;for(const E of this.certificates){if(!(E instanceof oe))continue;const x=await c.digest({name:"sha-1"},E.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView);if(Zl(x,S)){m=E;break}}}if(!m)throw new ut({date:a,code:3,message:"Unable to find signer certificate"});if(this.encapContentInfo.eContentType===U0){if(!this.encapContentInfo.eContent)throw new ut({date:a,code:15,message:"Error during verification: TSTInfo eContent is empty",signatureVerified:null,signerCertificate:m,timestampSerial:h,signerCertificateVerified:!0});let N;try{N=lt.fromBER(this.encapContentInfo.eContent.valueBlock.valueHexView)}catch(S){throw new ut({date:a,code:15,message:"Error during verification: TSTInfo wrong ASN.1 schema ",signatureVerified:null,signerCertificate:m,timestampSerial:h,signerCertificateVerified:!0})}if(a=N.genTime,h=N.serialNumber.valueBlock.valueHexView.slice(),t.byteLength===0)throw new ut({date:a,code:4,message:"Missed detached data input array"});if(!await N.verify({data:t},c))throw new ut({date:a,code:15,message:"Error during verification: TSTInfo verification is failed",signatureVerified:!1,signerCertificate:m,timestampSerial:h,signerCertificateVerified:!0})}if(n){const N=this.certificates.filter(C=>C instanceof oe&&!!$g(C,m)),S={checkDate:a,certs:N,trustedCerts:s};o&&(S.findIssuer=o),l&&(S.findOrigin=l);const E=new Zh(S);if(E.certs.push(m),this.crls)for(const C of this.crls)"thisUpdate"in C?E.crls.push(C):C.otherRevInfoFormat===qc&&E.ocsps.push(new qt({schema:C.otherRevInfo}));this.ocsps&&E.ocsps.push(...this.ocsps);const x=await E.verify({passedWhenNotRevValues:u},c).catch(C=>{throw new ut({date:a,code:5,message:"Validation of signer's certificate failed with error: ".concat(C instanceof Object?C.resultMessage:C),signerCertificate:m,signerCertificateVerified:!1})});if(x.certificatePath&&(w=x.certificatePath),!x.result)throw new ut({date:a,code:5,message:"Validation of signer's certificate failed: ".concat(x.resultMessage),signerCertificate:m,signerCertificateVerified:!1})}const k=c.getAlgorithmByOID(y.digestAlgorithm.algorithmId);if(!("name"in k))throw new ut({date:a,code:7,message:"Unsupported signature algorithm: ".concat(y.digestAlgorithm.algorithmId),signerCertificate:m,signerCertificateVerified:!0});d=k.name;const g=this.encapContentInfo.eContent;if(g)g.idBlock.tagClass===1&&g.idBlock.tagNumber===4?t=g.getValue():t=g.valueBlock.valueBeforeDecodeView;else if(t.byteLength===0)throw new ut({date:a,code:8,message:"Missed detached data input array",signerCertificate:m,signerCertificateVerified:!0});if(y.signedAttrs){let N=!1,S=!1;for(const E of y.signedAttrs.attributes)if(E.type==="1.2.840.113549.1.9.3"&&(N=!0),E.type==="1.2.840.113549.1.9.4"&&(S=!0,p=E.values[0].valueBlock.valueHex),N&&S)break;if(N===!1)throw new ut({date:a,code:9,message:'Attribute "content-type" is a mandatory attribute for "signed attributes"',signerCertificate:m,signerCertificateVerified:!0});if(S===!1)throw new ut({date:a,code:10,message:'Attribute "message-digest" is a mandatory attribute for "signed attributes"',signatureVerified:null,signerCertificate:m,signerCertificateVerified:!0})}if(y.signedAttrs){const N=await c.digest(d,new Uint8Array(t));if(!Zl(N,p))throw new ut({date:a,code:15,message:"Error during verification: Message digest doesn't match",signatureVerified:null,signerCertificate:m,timestampSerial:h,signerCertificateVerified:!0});t=y.signedAttrs.encodedValue}const b=y.signatureAlgorithm.algorithmId==="1.2.840.113549.1.1.1"?await c.verifyWithPublicKey(t,y.signature,m.subjectPublicKeyInfo,y.signatureAlgorithm,d):await c.verifyWithPublicKey(t,y.signature,m.subjectPublicKeyInfo,y.signatureAlgorithm);return i?{date:a,code:14,message:v,signatureVerified:b,signerCertificate:m,timestampSerial:h,signerCertificateVerified:!0,certificatePath:w}:b}catch(p){throw p instanceof ut?p:new ut({date:a,code:15,message:"Error during verification: ".concat(p instanceof Error?p.message:p),signatureVerified:null,signerCertificate:m,timestampSerial:h,signerCertificateVerified:!0})}}async sign(e,t,s="SHA-1",a=Ue,n=Q(!0)){var u;if(!e)throw new Error("Need to provide a private key for signing");const i=this.signerInfos[t];if(!i)throw new RangeError("SignerInfo index is out of range");!(!((u=i.signedAttrs)===null||u===void 0)&&u.attributes.length)&&"hash"in e.algorithm&&"hash"in e.algorithm&&e.algorithm.hash&&(s=e.algorithm.hash.name);const l=n.getOIDByAlgorithm({name:s},!0,"hashAlgorithm");this.digestAlgorithms.filter(h=>h.algorithmId===l).length===0&&this.digestAlgorithms.push(new V({algorithmId:l,algorithmParams:new Fe})),i.digestAlgorithm=new V({algorithmId:l,algorithmParams:new Fe});const o=await n.getSignatureParameters(e,s),c=o.parameters;if(i.signatureAlgorithm=o.signatureAlgorithm,i.signedAttrs)if(i.signedAttrs.encodedValue.byteLength!==0)a=i.signedAttrs.encodedValue;else{a=i.signedAttrs.toSchema().toBER();const h=pe.toUint8Array(a);h[0]=49}else{const h=this.encapContentInfo.eContent;if(h)h.idBlock.tagClass===1&&h.idBlock.tagNumber===4?a=h.getValue():a=h.valueBlock.valueBeforeDecodeView;else if(a.byteLength===0)throw new Error("Missed detached data input array")}const m=await n.signWithPrivateKey(a,e,c);i.signature=new $({valueHex:m})}}st.CLASS_NAME="SignedData",st.ID_DATA=td;const mn="version",fn="authSafe",Vs="macData",_o="parsedValue",TS=[mn,fn,Vs];class Fr extends D{constructor(e={}){super(),this.version=f(e,mn,Fr.defaultValues(mn)),this.authSafe=f(e,fn,Fr.defaultValues(fn)),Vs in e&&(this.macData=f(e,Vs,Fr.defaultValues(Vs))),_o in e&&(this.parsedValue=f(e,_o,Fr.defaultValues(_o))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case mn:return 3;case fn:return new fe;case Vs:return new vt;case _o:return{};default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case mn:return t===Fr.defaultValues(e);case fn:return fe.compareWithDefault("contentType",t.contentType)&&fe.compareWithDefault("content",t.content);case Vs:return vt.compareWithDefault("mac",t.mac)&&vt.compareWithDefault("macSalt",t.macSalt)&&vt.compareWithDefault("iterations",t.iterations);case _o:return t instanceof Object&&Object.keys(t).length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.version||mn}),fe.schema(t.authSafe||{names:{blockName:fn}}),vt.schema(t.macData||{names:{blockName:Vs,optional:!0}})]})}fromSchema(e){T(e,TS);const t=R(e,e,Fr.schema({names:{version:mn,authSafe:{names:{blockName:fn}},macData:{names:{blockName:Vs}}}}));O.assertSchema(t,this.className),this.version=t.result.version.valueBlock.valueDec,this.authSafe=new fe({schema:t.result.authSafe}),Vs in t.result&&(this.macData=new vt({schema:t.result.macData}))}toSchema(){const e=[new B({value:this.version}),this.authSafe.toSchema()];return this.macData&&e.push(this.macData.toSchema()),new A({value:e})}toJSON(){const e={version:this.version,authSafe:this.authSafe.toJSON()};return this.macData&&(e.macData=this.macData.toJSON()),e}async makeInternalValues(e={},t=Q(!0)){if(he.assert(e,"parameters","object"),!this.parsedValue)throw new Error('Please call "parseValues" function first in order to make "parsedValue" data');switch(ne.assertEmpty(this.parsedValue.integrityMode,"integrityMode","parsedValue"),ne.assertEmpty(this.parsedValue.authenticatedSafe,"authenticatedSafe","parsedValue"),this.parsedValue.integrityMode){case 0:{if(!("iterations"in e))throw new ne("iterations");ne.assertEmpty(e.pbkdf2HashAlgorithm,"pbkdf2HashAlgorithm"),ne.assertEmpty(e.hmacHashAlgorithm,"hmacHashAlgorithm"),ne.assertEmpty(e.password,"password");const s=new ArrayBuffer(64),a=new Uint8Array(s);t.getRandomValues(a);const n=this.parsedValue.authenticatedSafe.toSchema().toBER(!1);this.authSafe=new fe({contentType:fe.DATA,content:new $({valueHex:n})});const u=await t.stampDataWithPassword({password:e.password,hashAlgorithm:e.hmacHashAlgorithm,salt:s,iterationCount:e.iterations,contentToStamp:n});this.macData=new vt({mac:new Gt({digestAlgorithm:new V({algorithmId:t.getOIDByAlgorithm({name:e.hmacHashAlgorithm},!0,"hmacHashAlgorithm")}),digest:new $({valueHex:u})}),macSalt:new $({valueHex:s}),iterations:e.iterations})}break;case 1:{if(!("signingCertificate"in e))throw new ne("signingCertificate");ne.assertEmpty(e.privateKey,"privateKey"),ne.assertEmpty(e.hashAlgorithm,"hashAlgorithm");const s=this.parsedValue.authenticatedSafe.toSchema().toBER(!1),a=new st({version:1,encapContentInfo:new Vt({eContentType:"1.2.840.113549.1.7.1",eContent:new $({valueHex:s})}),certificates:[e.signingCertificate]}),n=await t.digest({name:e.hashAlgorithm},new Uint8Array(s)),u=[];u.push(new ge({type:"1.2.840.113549.1.9.3",values:[new J({value:"1.2.840.113549.1.7.1"})]})),u.push(new ge({type:"1.2.840.113549.1.9.5",values:[new Xm({valueDate:new Date})]})),u.push(new ge({type:"1.2.840.113549.1.9.4",values:[new $({valueHex:n})]})),a.signerInfos.push(new Ve({version:1,sid:new $e({issuer:e.signingCertificate.issuer,serialNumber:e.signingCertificate.serialNumber}),signedAttrs:new Se({type:0,attributes:u})})),await a.sign(e.privateKey,0,e.hashAlgorithm,void 0,t),this.authSafe=new fe({contentType:"1.2.840.113549.1.7.2",content:a.toSchema(!0)})}break;default:throw new Error('Parameter "integrityMode" has unknown value: '.concat(this.parsedValue.integrityMode))}}async parseInternalValues(e,t=Q(!0)){switch(he.assert(e,"parameters","object"),e.checkIntegrity===void 0&&(e.checkIntegrity=!0),this.parsedValue={},this.authSafe.contentType){case fe.DATA:{ne.assertEmpty(e.password,"password"),this.parsedValue.integrityMode=0,he.assert(this.authSafe.content,"authSafe.content",$);const s=this.authSafe.content.getValue();if(this.parsedValue.authenticatedSafe=On.fromBER(s),e.checkIntegrity){if(!this.macData)throw new Error('Absent "macData" value, can not check PKCS#12 data integrity');const a=t.getAlgorithmByOID(this.macData.mac.digestAlgorithm.algorithmId,!0,"digestAlgorithm");if(!await t.verifyDataStampedWithPassword({password:e.password,hashAlgorithm:a.name,salt:pe.toArrayBuffer(this.macData.macSalt.valueBlock.valueHexView),iterationCount:this.macData.iterations||1,contentToVerify:s,signatureToVerify:pe.toArrayBuffer(this.macData.mac.digest.valueBlock.valueHexView)}))throw new Error("Integrity for the PKCS#12 data is broken!")}}break;case fe.SIGNED_DATA:{this.parsedValue.integrityMode=1;const s=new st({schema:this.authSafe.content}),a=s.encapContentInfo.eContent;ne.assert(a,"eContent","cmsSigned.encapContentInfo"),he.assert(a,"eContent",$);const n=a.getValue();if(this.parsedValue.authenticatedSafe=On.fromBER(n),!await s.verify({signer:0,checkChain:!1},t))throw new Error("Integrity for the PKCS#12 data is broken!")}break;default:throw new Error('Incorrect value for "this.authSafe.contentType": '.concat(this.authSafe.contentType))}}}Fr.CLASS_NAME="PFX";const no="status",$r="statusStrings",Kr="failInfo",RS=[no,$r,Kr];var bp;(function(r){r[r.granted=0]="granted",r[r.grantedWithMods=1]="grantedWithMods",r[r.rejection=2]="rejection",r[r.waiting=3]="waiting",r[r.revocationWarning=4]="revocationWarning",r[r.revocationNotification=5]="revocationNotification"})(bp||(bp={}));class Wt extends D{constructor(e={}){super(),this.status=f(e,no,Wt.defaultValues(no)),$r in e&&(this.statusStrings=f(e,$r,Wt.defaultValues($r))),Kr in e&&(this.failInfo=f(e,Kr,Wt.defaultValues(Kr))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case no:return 2;case $r:return[];case Kr:return new re;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case no:return t===Wt.defaultValues(e);case $r:return t.length===0;case Kr:return t.isEqual(Wt.defaultValues(e));default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||v,value:[new B({name:t.status||v}),new A({optional:!0,value:[new Z({name:t.statusStrings||v,value:new kh})]}),new re({name:t.failInfo||v,optional:!0})]})}fromSchema(e){T(e,RS);const t=R(e,e,Wt.schema({names:{status:no,statusStrings:$r,failInfo:Kr}}));O.assertSchema(t,this.className);const s=t.result.status;if(s.valueBlock.isHexOnly===!0||s.valueBlock.valueDec<0||s.valueBlock.valueDec>5)throw new Error('PKIStatusInfo "status" has invalid value');this.status=s.valueBlock.valueDec,$r in t.result&&(this.statusStrings=t.result.statusStrings),Kr in t.result&&(this.failInfo=t.result.failInfo)}toSchema(){const e=[];return e.push(new B({value:this.status})),this.statusStrings&&e.push(new A({optional:!0,value:this.statusStrings})),this.failInfo&&e.push(this.failInfo),new A({value:e})}toJSON(){const e={status:this.status};return this.statusStrings&&(e.statusStrings=Array.from(this.statusStrings,t=>t.toJSON())),this.failInfo&&(e.failInfo=this.failInfo.toJSON()),e}}Wt.CLASS_NAME="PKIStatusInfo";const ql="version",Wl="messageImprint",io="reqPolicy",oo="nonce",Bs="certReq",uo="extensions",Un="TimeStampReq",Pf="".concat(Un,".").concat(ql),Of="".concat(Un,".").concat(Wl),wh="".concat(Un,".").concat(io),yh="".concat(Un,".").concat(oo),vh="".concat(Un,".").concat(Bs),bh="".concat(Un,".").concat(uo),LS=[Pf,Of,wh,yh,vh,bh];class Bt extends D{constructor(e={}){super(),this.version=f(e,ql,Bt.defaultValues(ql)),this.messageImprint=f(e,Wl,Bt.defaultValues(Wl)),io in e&&(this.reqPolicy=f(e,io,Bt.defaultValues(io))),oo in e&&(this.nonce=f(e,oo,Bt.defaultValues(oo))),Bs in e&&(this.certReq=f(e,Bs,Bt.defaultValues(Bs))),uo in e&&(this.extensions=f(e,uo,Bt.defaultValues(uo))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case ql:return 0;case Wl:return new nt;case io:return v;case oo:return new B;case Bs:return!1;case uo:return[];default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case ql:case io:case Bs:return t===Bt.defaultValues(e);case Wl:return nt.compareWithDefault("hashAlgorithm",t.hashAlgorithm)&&nt.compareWithDefault("hashedMessage",t.hashedMessage);case oo:return t.isEqual(Bt.defaultValues(e));case uo:return t.length===0;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||Un,value:[new B({name:t.version||Pf}),nt.schema(t.messageImprint||{names:{blockName:Of}}),new J({name:t.reqPolicy||wh,optional:!0}),new B({name:t.nonce||yh,optional:!0}),new ia({name:t.certReq||vh,optional:!0}),new I({optional:!0,idBlock:{tagClass:3,tagNumber:0},value:[new Z({name:t.extensions||bh,value:De.schema()})]})]})}fromSchema(e){T(e,LS);const t=R(e,e,Bt.schema());O.assertSchema(t,this.className),this.version=t.result[Pf].valueBlock.valueDec,this.messageImprint=new nt({schema:t.result[Of]}),wh in t.result&&(this.reqPolicy=t.result[wh].valueBlock.toString()),yh in t.result&&(this.nonce=t.result[yh]),vh in t.result&&(this.certReq=t.result[vh].valueBlock.value),bh in t.result&&(this.extensions=Array.from(t.result[bh],s=>new De({schema:s})))}toSchema(){const e=[];return e.push(new B({value:this.version})),e.push(this.messageImprint.toSchema()),this.reqPolicy&&e.push(new J({value:this.reqPolicy})),this.nonce&&e.push(this.nonce),Bs in this&&Bt.compareWithDefault(Bs,this.certReq)===!1&&e.push(new ia({value:this.certReq})),this.extensions&&e.push(new I({idBlock:{tagClass:3,tagNumber:0},value:Array.from(this.extensions,t=>t.toSchema())})),new A({value:e})}toJSON(){const e={version:this.version,messageImprint:this.messageImprint.toJSON()};return this.reqPolicy!==void 0&&(e.reqPolicy=this.reqPolicy),this.nonce!==void 0&&(e.nonce=this.nonce.toJSON()),this.certReq!==void 0&&Bt.compareWithDefault(Bs,this.certReq)===!1&&(e.certReq=this.certReq),this.extensions&&(e.extensions=Array.from(this.extensions,t=>t.toJSON())),e}}Bt.CLASS_NAME="TimeStampReq";const lo="status",co="timeStampToken",md="TimeStampResp",Df="".concat(md,".").concat(lo),Sh="".concat(md,".").concat(co),US=[Df,Sh];class Xl extends D{constructor(e={}){super(),this.status=f(e,lo,Xl.defaultValues(lo)),co in e&&(this.timeStampToken=f(e,co,Xl.defaultValues(co))),e.schema&&this.fromSchema(e.schema)}static defaultValues(e){switch(e){case lo:return new Wt;case co:return new fe;default:return super.defaultValues(e)}}static compareWithDefault(e,t){switch(e){case lo:return Wt.compareWithDefault(lo,t.status)&&!("statusStrings"in t)&&!("failInfo"in t);case co:return t.contentType===v&&t.content instanceof X;default:return super.defaultValues(e)}}static schema(e={}){const t=f(e,"names",{});return new A({name:t.blockName||md,value:[Wt.schema(t.status||{names:{blockName:Df}}),fe.schema(t.timeStampToken||{names:{blockName:Sh,optional:!0}})]})}fromSchema(e){T(e,US);const t=R(e,e,Xl.schema());O.assertSchema(t,this.className),this.status=new Wt({schema:t.result[Df]}),Sh in t.result&&(this.timeStampToken=new fe({schema:t.result[Sh]}))}toSchema(){const e=[];return e.push(this.status.toSchema()),this.timeStampToken&&e.push(this.timeStampToken.toSchema()),new A({value:e})}toJSON(){const e={status:this.status.toJSON()};return this.timeStampToken&&(e.timeStampToken=this.timeStampToken.toJSON()),e}async sign(e,t,s=Q(!0)){return this.assertContentType(),new st({schema:this.timeStampToken.content}).sign(e,0,t,void 0,s)}async verify(e={signer:0,trustedCerts:[],data:Ue},t=Q(!0)){return this.assertContentType(),new st({schema:this.timeStampToken.content}).verify(e,t)}assertContentType(){if(!this.timeStampToken)throw new Error("timeStampToken is absent in TSP response");if(this.timeStampToken.contentType!==Pg)throw new Error("Wrong format of timeStampToken: ".concat(this.timeStampToken.contentType))}}Xl.CLASS_NAME="TimeStampResp";function jS(){if(typeof self<"u"){if("crypto"in self){let r="webcrypto";"webkitSubtle"in self.crypto&&(r="safari"),ap(r,new nc({name:r,crypto}))}}else if(typeof crypto<"u"&&"webcrypto"in crypto){const r="NodeJS ^15",e=crypto.webcrypto;ap(r,new nc({name:r,crypto:e}))}}jS();function $S(r){return String.fromCharCode(...r)}function Hg(r){return Uint8Array.from(r,e=>e.charCodeAt(0))}function KS(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function ws(r){return Hg(atob(r))}function fd(r){const e=r.replace(/-----BEGIN ((PRIVATE KEY)|(PUBLIC KEY)|(CERTIFICATE))-----/,"").replace(/-----END ((PRIVATE KEY)|(PUBLIC KEY)|(CERTIFICATE))-----/,"").replace(/\n/g,"");return ws(e)}var HS=Object.defineProperty,MS=Object.defineProperties,FS=Object.getOwnPropertyDescriptors,Sp=Object.getOwnPropertySymbols,JS=Object.prototype.hasOwnProperty,qS=Object.prototype.propertyIsEnumerable,Ap=(r,e,t)=>e in r?HS(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Tf=(r,e)=>{for(var t in e||(e={}))JS.call(e,t)&&Ap(r,t,e[t]);if(Sp)for(var t of Sp(e))qS.call(e,t)&&Ap(r,t,e[t]);return r},Np=(r,e)=>MS(r,FS(e));async function dd(r,e,t={}){return await self.crypto.subtle.decrypt(Tf({name:"AES-GCM"},t),e,r)}async function WS(r,e){return await self.crypto.subtle.decrypt({name:"RSA-OAEP"},e,r)}async function Mg(r){return await self.crypto.subtle.importKey("raw",r,{name:"AES-GCM",length:128},!0,["decrypt","encrypt"])}async function GS(r,e){return await self.crypto.subtle.importKey("spki",r,{name:"RSASSA-PKCS1-v1_5",hash:e},!0,["verify"])}async function zS(r){return await self.crypto.subtle.importKey("pkcs8",r,{name:"RSA-OAEP",hash:"SHA-256"},!0,["decrypt"])}async function _S(r){return new Uint8Array(await self.crypto.subtle.exportKey("raw",r))}async function XS(r){const e=await self.crypto.subtle.digest("SHA-256",r);return KS(new Uint8Array(e))}async function ZS(r,e){const t=new gw(r),s=await GS(fd(e),t.signatureAlgorithm.hash.name);return t.verify({publicKey:s},QS())}function QS(){return Np(Tf({},self.crypto),{subtle:Np(Tf({},self.crypto.subtle),{async verify(r,e,t,s){return self.crypto.subtle.verify(r,e,new Uint8Array(t),new Uint8Array(s))}})})}async function YS(r,e,t){const s=fe.fromBER(e),a=new st({schema:s.content}),n=a.signerInfos[0].sid.issuer.typesAndValues.find(({type:l})=>l==="2.5.4.3").value.valueBlock.value,u=t.find(({userId:l})=>l===n);if(u===void 0)throw new Error("Signer not found in the users array");const i=oe.fromBER(fd(u.certificate));return await a.verify({signer:0,trustedCerts:[i],data:r,checkChain:!0},tA())}class eA extends nc{verify(e,t,s,a){return super.verify(e,t,s,new Uint8Array(a))}}function tA(){return new eA({crypto:self.crypto})}var sA=Object.defineProperty,kp=Object.getOwnPropertySymbols,rA=Object.prototype.hasOwnProperty,aA=Object.prototype.propertyIsEnumerable,Cp=(r,e,t)=>e in r?sA(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,nA=(r,e)=>{for(var t in e||(e={}))rA.call(e,t)&&Cp(r,t,e[t]);if(kp)for(var t of kp(e))aA.call(e,t)&&Cp(r,t,e[t]);return r};async function iA(r,e){_e.debug("Decrypting private key",{privateKeyInfo:r,mnemonic:e});const t=await Promise.all([await Jm(e,r.salt,{hash:"SHA-256",iterations:6e5}),await Jm(e,r.salt,{hash:"SHA-1",iterations:1024}),await Jm(e,r.salt,{hash:"SHA-1",iterations:6e5})]);for(const s of t)try{const a=await dd(r.encryptedPrivateKey,s,{iv:r.iv,tagLength:128}),n=atob($S(new Uint8Array(a)));return zS(fd(n))}catch(a){}throw new Error("Failed to decrypt private key")}async function Jm(r,e,t){const s=await crypto.subtle.importKey("raw",new TextEncoder().encode(r.replaceAll(" ","")),{name:"PBKDF2"},!1,["deriveKey"]);return await crypto.subtle.deriveKey(nA({name:"PBKDF2",salt:e},t),s,{name:"AES-GCM",length:256},!0,["decrypt","encrypt"])}const qm="apps/end_to_end_encryption/api/v2",Fg={PrivateKey:qm+"/private-key",Metadata:qm+"/meta-data/{fileId}",ServerKey:qm+"/server-key"};async function oA(){const r=(await Bp.get(Pp(Fg.PrivateKey),{headers:{"X-E2EE-SUPPORTED":"true"}})).data.ocs.data["private-key"],[e,t,s]=r.split("|");return{encryptedPrivateKey:ws(e),iv:ws(t),salt:ws(s)}}async function uA(){return await(await Bp.get(Pp(Fg.ServerKey),{headers:{"X-E2EE-SUPPORTED":"true"}})).data.ocs.data["public-key"]}const lA={name:"AlertCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var cA=function(){var r=this,e=r._self._c;return e("span",r._b({staticClass:"material-design-icon alert-circle-outline-icon",attrs:{"aria-hidden":r.title?null:"true","aria-label":r.title,role:"img"},on:{click:function(t){return r.$emit("click",t)}}},"span",r.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:r.fillColor,width:r.size,height:r.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z"}},[r.title?e("title",[r._v(r._s(r.title))]):r._e()])])])},hA=[],mA=qh(lA,cA,hA,!1,null,null);const fA=mA.exports,dA={name:"NcInputField",components:{NcButton:Qg,AlertCircle:fA,Check:yw},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:{value:{type:[String,Number],default:void 0},modelValue:{type:[String,Number],default:void 0},type:{type:String,default:"text",validator:r=>["text","password","email","tel","url","search","number"].includes(r)},label:{type:String,default:void 0},labelOutside:{type:Boolean,default:!1},placeholder:{type:String,default:void 0},showTrailingButton:{type:Boolean,default:!1},trailingButtonLabel:{type:String,default:""},success:{type:Boolean,default:!1},error:{type:Boolean,default:!1},helperText:{type:String,default:""},disabled:{type:Boolean,default:!1},pill:{type:Boolean,default:!1},inputClass:{type:[Object,String],default:""}},emits:["update:value","update:modelValue","update:model-value","trailing-button-click"],setup(){return{model:Dp("value","update:value",!0)}},computed:{computedId(){return this.$attrs.id&&this.$attrs.id!==""?this.$attrs.id:this.inputName},inputName(){return"input"+Yg()},hasLeadingIcon(){return this.$slots.default},hasTrailingIcon(){return this.success},hasPlaceholder(){return this.placeholder!==""&&this.placeholder!==void 0},computedPlaceholder(){return this.hasPlaceholder?this.placeholder:this.label},isValidLabel(){const r=this.label||this.labelOutside;return r||console.warn("You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation."),r},ariaDescribedby(){const r=[];return this.helperText.length>0&&r.push("".concat(this.inputName,"-helper-text")),this.$attrs["aria-describedby"]&&r.push(this.$attrs["aria-describedby"]),r.join(" ")||null}},methods:{focus(){this.$refs.input.focus()},select(){this.$refs.input.select()},handleInput(r){const e=this.type==="number"&&typeof this.model=="number"?parseFloat(r.target.value,10):r.target.value;this.model=e},handleTrailingButtonClick(r){this.$emit("trailing-button-click",r)}}};var pA=function(){var t;var r=this,e=r._self._c;return e("div",{staticClass:"input-field",class:{"input-field--disabled":r.disabled,"input-field--label-outside":r.labelOutside||!r.isValidLabel,"input-field--leading-icon":r.hasLeadingIcon,"input-field--trailing-icon":r.showTrailingButton||r.hasTrailingIcon,"input-field--pill":r.pill}},[e("div",{staticClass:"input-field__main-wrapper"},[e("input",r._g(r._b({ref:"input",staticClass:"input-field__input",class:[r.inputClass,{"input-field__input--success":r.success,"input-field__input--error":r.error}],attrs:{id:r.computedId,type:r.type,disabled:r.disabled,placeholder:r.computedPlaceholder,"aria-describedby":r.ariaDescribedby,"aria-live":"polite"},domProps:{value:(t=r.model)==null?void 0:t.toString()},on:{input:r.handleInput}},"input",r.$attrs,!1),r.$listeners)),!r.labelOutside&&r.isValidLabel?e("label",{staticClass:"input-field__label",attrs:{for:r.computedId}},[r._v(" "+r._s(r.label)+" ")]):r._e(),e("div",{directives:[{name:"show",rawName:"v-show",value:r.hasLeadingIcon,expression:"hasLeadingIcon"}],staticClass:"input-field__icon input-field__icon--leading"},[r._t("default")],2),r.showTrailingButton?e("NcButton",{staticClass:"input-field__trailing-button",attrs:{type:"tertiary-no-background","aria-label":r.trailingButtonLabel,disabled:r.disabled},on:{click:r.handleTrailingButtonClick},scopedSlots:r._u([{key:"icon",fn:function(){return[r._t("trailing-button-icon")]},proxy:!0}],null,!0)}):r.success||r.error?e("div",{staticClass:"input-field__icon input-field__icon--trailing"},[r.success?e("Check",{staticStyle:{color:"var(--color-success-text)"},attrs:{size:20}}):r.error?e("AlertCircle",{staticStyle:{color:"var(--color-error-text)"},attrs:{size:20}}):r._e()],1):r._e()],1),r.helperText.length>0?e("p",{staticClass:"input-field__helper-text-message",class:{"input-field__helper-text-message--error":r.error,"input-field__helper-text-message--success":r.success},attrs:{id:"".concat(r.inputName,"-helper-text")}},[r.success?e("Check",{staticClass:"input-field__helper-text-message__icon",attrs:{size:18}}):r.error?e("AlertCircle",{staticClass:"input-field__helper-text-message__icon",attrs:{size:18}}):r._e(),r._v(" "+r._s(r.helperText)+" ")],1):r._e()])},gA=[],wA=qh(dA,pA,gA,!1,null,"e4fac465");const Rf=wA.exports,yA={name:"UndoVariantIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var vA=function(){var r=this,e=r._self._c;return e("span",r._b({staticClass:"material-design-icon undo-variant-icon",attrs:{"aria-hidden":r.title?null:"true","aria-label":r.title,role:"img"},on:{click:function(t){return r.$emit("click",t)}}},"span",r.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:r.fillColor,width:r.size,height:r.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z"}},[r.title?e("title",[r._v(r._s(r.title))]):r._e()])])])},bA=[],SA=qh(yA,vA,bA,!1,null,null);const AA=SA.exports;ew(rw,sw);const NA=new Set(Object.keys(Rf.props)),kA={name:"NcTextField",components:{NcInputField:Rf,Close:tw,ArrowRight:ww,Undo:AA},inheritAttrs:!1,model:{prop:"modelValue",event:"update:modelValue"},props:os(it({" ":{}},Rf.props),{trailingButtonLabel:{type:String,default:""},trailingButtonIcon:{type:String,default:"close",validator:r=>["close","arrowRight","undo"].includes(r)}}),emits:["update:value","update:modelValue","update:model-value"],setup(){return{model:Dp("value","update:value")}},computed:{propsAndAttrsToForward(){const r={undo:em("Undo changes"),close:em("Clear text"),arrowRight:em("Save changes")};return os(it(it({},this.$attrs),Object.fromEntries(Object.entries(this.$props).filter(([e])=>NA.has(e)))),{trailingButtonLabel:this.trailingButtonLabel||r[this.trailingButtonIcon]})}},methods:{focus(){this.$refs.inputField.focus()},select(){this.$refs.inputField.select()}}};var CA=function(){var r=this,e=r._self._c;return e("NcInputField",r._g(r._b({ref:"inputField",scopedSlots:r._u([r.type!=="search"?{key:"trailing-button-icon",fn:function(){return[r.trailingButtonIcon==="close"?e("Close",{attrs:{size:20}}):r.trailingButtonIcon==="arrowRight"?e("ArrowRight",{attrs:{size:20}}):r.trailingButtonIcon==="undo"?e("Undo",{attrs:{size:20}}):r._e()]},proxy:!0}:null],null,!0)},"NcInputField",r.propsAndAttrsToForward,!1),r.$listeners),[r._t("default")],2)},EA=[],xA=qh(kA,CA,EA,!1,null,null);const IA=xA.exports,VA=aw({__name:"MnemonicPromptDialog",emits:["close"],setup(r,{emit:e}){const t=tm(),s=tm(""),a=tm(!1),n=wd(()=>a.value===!0&&s.value.trim().split(/\s+/g).length===12);function u(){e("close",s.value)}const i=wd(()=>[{label:zm("end_to_en_encryption","Submit"),nativeType:"submit",type:"primary",disabled:!n.value,callback:u}]);return{__sfc:!0,emit:e,dialogRef:t,mnemonic:s,confirmToggle:a,isFormValid:n,submit:u,buttons:i,t:zm,NcDialog:nw,NcTextField:IA,NcNoteCard:iw,NcCheckboxRadioSwitch:vw}}});var BA=function(){var r=this,e=r._self._c,t=r._self._setupProxy;return e(t.NcDialog,{ref:"dialogRef",attrs:{name:t.t("end_to_end_encryption","Enter your 12 words mnemonic"),buttons:t.buttons,"is-form":!0},on:{submit:t.submit}},[e(t.NcNoteCard,{attrs:{type:"warning","show-alert":!0,heading:t.t("end_to_end_encryption","Decrypting your files in the browser can weaken security")}},[r._v(" "+r._s(t.t("end_to_end_encryption","The server could serve malicious source code to extract the secret that protects your files."))+" "),e(t.NcCheckboxRadioSwitch,{attrs:{required:!0,"data-cy-e2ee-mnemonic-prompt":"i_understand_the_risks",type:"switch"},model:{value:t.confirmToggle,callback:function(s){t.confirmToggle=s},expression:"confirmToggle"}},[r._v(" "+r._s(t.t("end_to_end_encryption","I understand the risks"))+" ")])],1),e(t.NcTextField,{attrs:{value:t.mnemonic,required:"true",pattern:"^(\\w+\\s+){11}\\w+$",label:t.t("end_to_end_encryption","Mnemonic"),autofocus:!0},on:{"update:value":function(s){t.mnemonic=s}}})],1)},PA=[],OA=ow(VA,BA,PA,!1,null,null);const DA=OA.exports;async function TA(){const r=Promise.withResolvers();return uw(DA,void 0,e=>{e!==void 0?r.resolve(e):r.reject()}),r.promise}async function RA(r,e){_e.debug("Decrypting metadata info",{metadata:r});const[t,s]=r.metadata.ciphertext.split("|"),a=await dd(ws(t),e,{iv:ws(s)}),n=JSON.parse(await jA(a));return LA(n,r),await UA(n,e),n}function LA(r,e){var t,s;if(((t=r.keyChecksums)==null?void 0:t.length)!==((s=e.users)==null?void 0:s.length))throw new Error("Key checksums length does not match users length")}async function UA(r,e){if(r.keyChecksums===void 0)return;const t=await _S(e),s=await XS(t);if(!r.keyChecksums.includes(s))throw new Error("Key checksum is not in keyChecksums")}async function jA(r){const e=new ReadableStream({start(t){t.enqueue(new Uint8Array(r)),t.close()}}).pipeThrough(new DecompressionStream("gzip"));return await new Response(e).text()}async function $A(r,e,t){var s;_e.debug("Getting metadata private key",{metadata:r,userId:e});const a=(s=r.users)==null?void 0:s.find(i=>i.userId===e);if(!a)throw new Error("User not found in metadata");const n=ws(a.encryptedMetadataKey),u=await WS(n,t);return await Mg(new Uint8Array(u))}async function Ep(r,e,t){const s=JSON.stringify(r,(n,u)=>{if(n!=="filedrop")return u}),a=await YS(Hg(btoa(s)),ws(e),t.users);if(!a)throw new Error("Metadata signature verification failed");return a}async function KA(r,e){const t=r.users.map(async({userId:s,certificate:a})=>{const n=await ZS(a,e);if(!n)throw new Error("Certificate verification failed for user ".concat(s));return n});return await Promise.all(t)}const HA=Qy(),ht={_userPrivateKey:void 0,_serverPublicKey:void 0,_metadataCache:{},async getUserPrivateKey(){var r;return(r=this._userPrivateKey)!=null||(this._userPrivateKey=await iA(await oA(),await TA())),this._userPrivateKey},async getServerPublicKeyPEM(){var r;return(r=this._serverPublicKey)!=null||(this._serverPublicKey=await uA()),this._serverPublicKey},async getMetadata(r){if(this._metadataCache[r])return _e.debug("Found metadata in cache",{path:r,state:ht}),this._metadataCache[r];if(_e.debug("Fetching PROPFIND for metadata",{path:r,state:ht}),await HA.stat(decodeURI(r).replace("remote.php/dav/",""),{details:!0,data:zy()}),this._metadataCache[r])return _e.debug("Found metadata in cache after PROPFIND",{path:r,state:ht}),this._metadataCache[r];throw new Error("Could not find metadata for ".concat(r))},async setMetadata(r,e,t){const s=JSON.parse(e);Jc(s)?(await Ep(s,t,s),await KA(s,await this.getServerPublicKeyPEM())):await Ep(s,t,await this.getRootMetadata(No.dirname(r))),this._metadataCache[r]=s,_e.debug("Added metadata in cache",{path:r,state:ht})},async getMetadataInfo(r){const e=await this.getMetadata(r),t=await this.getRootMetadata(r),s=Uf();if(s===null)throw new Error("No user logged in");return RA(e,await $A(t,s.uid,await ht.getUserPrivateKey()))},async getRootMetadata(r){const e=Object.entries(ht._metadataCache).filter(([t])=>r.startsWith(t)).map(([,t])=>t).find(t=>Jc(t));if(e)return _e.debug("Found root metadata in cache",{path:r,state:ht}),e;for(_e.debug("Looking for root metadata",{path:r,state:ht});r!=="/";){const t=await ht.getMetadata(r);if(Jc(t))return _e.debug("Fetched root metadata",{path:r,state:ht}),t;r=No.dirname(r)}throw new Error("Found no root metadata for ".concat(r))}};var MA=Object.defineProperty,FA=Object.defineProperties,JA=Object.getOwnPropertyDescriptors,xp=Object.getOwnPropertySymbols,qA=Object.prototype.hasOwnProperty,WA=Object.prototype.propertyIsEnumerable,Ip=(r,e,t)=>e in r?MA(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,GA=(r,e)=>{for(var t in e||(e={}))qA.call(e,t)&&Ip(r,t,e[t]);if(xp)for(var t of xp(e))WA.call(e,t)&&Ip(r,t,e[t]);return r},zA=(r,e)=>FA(r,JA(e));let Jh;function _A(){Jh=window.fetch,_e.debug("Setting up WebDAV decryption proxy"),window.fetch=async(r,e={})=>{let t=new Request(r,e);if(!(t.url.includes("/remote.php/dav/files/")&&(t.method==="GET"||t.method==="PROPFIND")))return Jh(t);_e.debug("Proxying ".concat(t.method," ").concat(t.url),{request:t});const s=new Headers(t.headers);switch(s.set("X-E2EE-SUPPORTED","true"),t=new Request(t,{headers:s}),t.method){case"PROPFIND":return ZA(t);case"GET":default:return XA(t)}}}async function XA(r){const e=new URL(r.url).pathname,t=Jh(r);try{const s=await ht.getMetadataInfo(No.dirname(e)),a=s.files[No.basename(r.url)];if(a===void 0)throw _e.debug("Could not find file in metadata",{path:e,metadataInfo:s}),new Error("Could not find file in metadata");return await QA(await t,a)}catch(s){return await t}}async function ZA(r){var e;_e.debug("Fetching raw PROPFIND",{request:r});const t=await Jh(r),s=new URL(r.url).pathname,a=await t.text(),n=await Jy(a),u=Fy(n,s,!0);if(((e=u.props)==null?void 0:e["e2ee-is-encrypted"])!==1)return _e.debug("Node is not e2ee",{xml:n}),new Response(a,t);if(u.type==="directory"){const i=u.props["e2ee-metadata"],l=u.props["e2ee-metadata-signature"];i!==void 0&&l!==void 0&&await ht.setMetadata(s,i,l);const o=await ht.getMetadata(s),c=await ht.getMetadataInfo(s);if(Jc(o))Wm(n,s,c);else{const m=await ht.getMetadataInfo(No.dirname(s));Wm(n,s,c,m)}}else if(u.type==="file"){const i=await ht.getMetadataInfo(No.dirname(s));if(i===void 0)return _e.debug("Cannot find metadata for parent folder",{path:s}),new Response(a,t);Wm(n,s,void 0,i)}return new Response(new Ib.XMLBuilder().build(n),t)}function Wm(r,e,t,s){_e.debug("Updating PROPFIND info",{path:e,decryptedMetadata:t,decryptedParentMetadata:s,xml:r}),r.multistatus.response.forEach(a=>{if(a.propstat===void 0)return;const n=a.href===e?s:t,u=a.propstat.prop.displayname;let i=u;n!==void 0&&(n.files[u]?(i=n.files[u].filename,a.propstat.prop.getcontenttype=n.files[u].mimetype):n.folders[u]&&(i=n.folders[u],a.propstat.prop.getcontenttype="httpd/unix-directory")),a.propstat.prop.displayname=i,a.propstat.prop.permissions=a.propstat.prop.permissions.replace(/(R)|(D)|(N)|(V)|(W)|(CK)/g,"")})}async function QA(r,e){_e.debug("Decrypting encrypted file",{response:r,fileEncryptionInfo:e});const t=await dd(new Uint8Array(await r.arrayBuffer()),await Mg(ws(e.key)),{iv:ws(e.nonce)}),s=new Headers(r.headers);return s.set("Content-Type",e.mimetype),new Response(t,zA(GA({},r),{headers:s}))}const YA='';function eN(r){if(!(r.permissions&rg.READ))return!1;if(r.attributes["share-attributes"]){const e=JSON.parse(r.attributes["share-attributes"]||"[]").find(({scope:t,key:s})=>t==="permissions"&&s==="download");if(e!==void 0)return e.value===!0}return!0}async function tN([r]){const e=await(await fetch(r.encodedSource)).arrayBuffer(),t=new Blob([e],{type:r.mime}),s=document.createElement("a");s.href=window.URL.createObjectURL(t),s.download=r.displayname,s.click()}const sN=new Yy({id:"download_unencrypted",default:Gf.DEFAULT,displayName:()=>zm("files","Download unencrypted"),iconSvgInline:()=>YA,enabled(r){return r.length!==1||r.some(e=>e.attributes["e2ee-is-encrypted"]!==1)||r.some(e=>!e.isDavRessource)||r.some(e=>e.type!==ag.File)?!1:r.every(eN)},async exec(r){return tN([r]),null},order:30}),rN=Lf("end_to_end_encryption","userConfig",{e2eeInBrowserEnabled:!1});rN.e2eeInBrowserEnabled&&(_A(),hm("nc:e2ee-is-encrypted",{nc:"http://nextcloud.org/ns"}),hm("nc:e2ee-metadata",{nc:"http://nextcloud.org/ns"}),hm("nc:e2ee-metadata-signature",{nc:"http://nextcloud.org/ns"}),ev(sN),Vp("download"),Vp("move-copy"));function Vp(r){_e.debug("Inhibiting ".concat(r," actions for e2ee files"));const e=tv().find(s=>s.id===r),t=e._action.enabled;e._action.enabled=(s,a)=>s.some(n=>n.attributes["e2ee-is-encrypted"]===1)?!1:t(s,a)} diff --git a/js/end_to_end_encryption-files.mjs.map b/js/end_to_end_encryption-files.mjs.map index e808b9a2..2c8f6c74 100644 --- a/js/end_to_end_encryption-files.mjs.map +++ b/js/end_to_end_encryption-files.mjs.map @@ -1 +1 @@ -{"version":3,"file":"end_to_end_encryption-files.mjs","sources":["../node_modules/cancelable-promise/esm/CancelablePromise.mjs","../node_modules/webdav/dist/web/index.js","../node_modules/@nextcloud/sharing/dist/public.mjs","../node_modules/@nextcloud/files/dist/chunks/dav-Co9y-hkg.mjs","../node_modules/@nextcloud/files/dist/index.mjs","../node_modules/fast-xml-parser/src/util.js","../node_modules/fast-xml-parser/src/validator.js","../node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","../node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","../node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","../node_modules/strnum/strnum.js","../node_modules/fast-xml-parser/src/ignoreAttributes.js","../node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","../node_modules/fast-xml-parser/src/xmlparser/node2json.js","../node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","../node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","../node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","../node_modules/fast-xml-parser/src/fxp.js","../src/models.ts","../src/services/logger.ts","../node_modules/bytestreamjs/build/mjs/byte_stream.js","../node_modules/bytestreamjs/build/mjs/seq_stream.js","../node_modules/@noble/hashes/esm/_assert.js","../node_modules/@noble/hashes/esm/utils.js","../node_modules/@noble/hashes/esm/_md.js","../node_modules/@noble/hashes/esm/sha1.js","../node_modules/@noble/hashes/esm/sha256.js","../node_modules/@noble/hashes/esm/_u64.js","../node_modules/@noble/hashes/esm/sha512.js","../node_modules/pkijs/build/index.es.js","../src/services/bufferUtils.ts","../src/services/crypto.ts","../src/services/privateKeyUtils.ts","../src/services/api.ts","../node_modules/@nextcloud/vue/dist/chunks/AlertCircleOutline-DBxbepLy.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcInputField-ixTTHy3h.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcTextField-gOk0FWcs.mjs","../src/components/MnemonicPromptDialog.vue","../src/services/mnemonicDialogs.ts","../src/services/metadataUtils.ts","../src/services/security.ts","../src/services/state.ts","../src/services/webDavProxy.ts","../node_modules/@mdi/svg/svg/arrow-down.svg?raw","../src/services/permissions.ts","../src/services/downloadUnencryptedAction.ts","../src/files.ts"],"sourcesContent":["function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\n\nfunction _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\n\nfunction _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\n\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\"attempted to \" + action + \" private field on non-instance\"); } return privateMap.get(receiver); }\n\nfunction _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } descriptor.value = value; } }\n\nvar toStringTag = typeof Symbol !== 'undefined' ? Symbol.toStringTag : '@@toStringTag';\n\nvar _internals = /*#__PURE__*/new WeakMap();\n\nvar _promise = /*#__PURE__*/new WeakMap();\n\nclass CancelablePromiseInternal {\n constructor(_ref) {\n var {\n executor = () => {},\n internals = defaultInternals(),\n promise = new Promise((resolve, reject) => executor(resolve, reject, onCancel => {\n internals.onCancelList.push(onCancel);\n }))\n } = _ref;\n\n _classPrivateFieldInitSpec(this, _internals, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldInitSpec(this, _promise, {\n writable: true,\n value: void 0\n });\n\n _defineProperty(this, toStringTag, 'CancelablePromise');\n\n this.cancel = this.cancel.bind(this);\n\n _classPrivateFieldSet(this, _internals, internals);\n\n _classPrivateFieldSet(this, _promise, promise || new Promise((resolve, reject) => executor(resolve, reject, onCancel => {\n internals.onCancelList.push(onCancel);\n })));\n }\n\n then(onfulfilled, onrejected) {\n return makeCancelable(_classPrivateFieldGet(this, _promise).then(createCallback(onfulfilled, _classPrivateFieldGet(this, _internals)), createCallback(onrejected, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n\n catch(onrejected) {\n return makeCancelable(_classPrivateFieldGet(this, _promise).catch(createCallback(onrejected, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n\n finally(onfinally, runWhenCanceled) {\n if (runWhenCanceled) {\n _classPrivateFieldGet(this, _internals).onCancelList.push(onfinally);\n }\n\n return makeCancelable(_classPrivateFieldGet(this, _promise).finally(createCallback(() => {\n if (onfinally) {\n if (runWhenCanceled) {\n _classPrivateFieldGet(this, _internals).onCancelList = _classPrivateFieldGet(this, _internals).onCancelList.filter(callback => callback !== onfinally);\n }\n\n return onfinally();\n }\n }, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n\n cancel() {\n _classPrivateFieldGet(this, _internals).isCanceled = true;\n\n var callbacks = _classPrivateFieldGet(this, _internals).onCancelList;\n\n _classPrivateFieldGet(this, _internals).onCancelList = [];\n\n for (var callback of callbacks) {\n if (typeof callback === 'function') {\n try {\n callback();\n } catch (err) {\n console.error(err);\n }\n }\n }\n }\n\n isCanceled() {\n return _classPrivateFieldGet(this, _internals).isCanceled === true;\n }\n\n}\n\nexport class CancelablePromise extends CancelablePromiseInternal {\n constructor(executor) {\n super({\n executor\n });\n }\n\n}\n\n_defineProperty(CancelablePromise, \"all\", function all(iterable) {\n return makeAllCancelable(iterable, Promise.all(iterable));\n});\n\n_defineProperty(CancelablePromise, \"allSettled\", function allSettled(iterable) {\n return makeAllCancelable(iterable, Promise.allSettled(iterable));\n});\n\n_defineProperty(CancelablePromise, \"any\", function any(iterable) {\n return makeAllCancelable(iterable, Promise.any(iterable));\n});\n\n_defineProperty(CancelablePromise, \"race\", function race(iterable) {\n return makeAllCancelable(iterable, Promise.race(iterable));\n});\n\n_defineProperty(CancelablePromise, \"resolve\", function resolve(value) {\n return cancelable(Promise.resolve(value));\n});\n\n_defineProperty(CancelablePromise, \"reject\", function reject(reason) {\n return cancelable(Promise.reject(reason));\n});\n\n_defineProperty(CancelablePromise, \"isCancelable\", isCancelablePromise);\n\nexport default CancelablePromise;\nexport function cancelable(promise) {\n return makeCancelable(promise, defaultInternals());\n}\nexport function isCancelablePromise(promise) {\n return promise instanceof CancelablePromise || promise instanceof CancelablePromiseInternal;\n}\n\nfunction createCallback(onResult, internals) {\n if (onResult) {\n return arg => {\n if (!internals.isCanceled) {\n var result = onResult(arg);\n\n if (isCancelablePromise(result)) {\n internals.onCancelList.push(result.cancel);\n }\n\n return result;\n }\n\n return arg;\n };\n }\n}\n\nfunction makeCancelable(promise, internals) {\n return new CancelablePromiseInternal({\n internals,\n promise\n });\n}\n\nfunction makeAllCancelable(iterable, promise) {\n var internals = defaultInternals();\n internals.onCancelList.push(() => {\n for (var resolvable of iterable) {\n if (isCancelablePromise(resolvable)) {\n resolvable.cancel();\n }\n }\n });\n return new CancelablePromiseInternal({\n internals,\n promise\n });\n}\n\nfunction defaultInternals() {\n return {\n isCanceled: false,\n onCancelList: []\n };\n}\n//# sourceMappingURL=CancelablePromise.mjs.map","/*! For license information please see index.js.LICENSE.txt */\nvar t={2:t=>{function e(t,e,o){t instanceof RegExp&&(t=n(t,o)),e instanceof RegExp&&(e=n(e,o));var i=r(t,e,o);return i&&{start:i[0],end:i[1],pre:o.slice(0,i[0]),body:o.slice(i[0]+t.length,i[1]),post:o.slice(i[1]+e.length)}}function n(t,e){var n=e.match(t);return n?n[0]:null}function r(t,e,n){var r,o,i,s,a,u=n.indexOf(t),c=n.indexOf(e,u+1),l=u;if(u>=0&&c>0){for(r=[],i=n.length;l>=0&&!a;)l==u?(r.push(l),u=n.indexOf(t,l+1)):1==r.length?a=[r.pop(),c]:((o=r.pop())=0?u:c;r.length&&(a=[i,s])}return a}t.exports=e,e.range=r},101:function(t,e,n){var r;t=n.nmd(t),function(o){var i=(t&&t.exports,\"object\"==typeof global&&global);i.global!==i&&i.window;var s=function(t){this.message=t};(s.prototype=new Error).name=\"InvalidCharacterError\";var a=function(t){throw new s(t)},u=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",c=/[\\t\\n\\f\\r ]/g,l={encode:function(t){t=String(t),/[^\\0-\\xFF]/.test(t)&&a(\"The string to be encoded contains characters outside of the Latin1 range.\");for(var e,n,r,o,i=t.length%3,s=\"\",c=-1,l=t.length-i;++c>18&63)+u.charAt(o>>12&63)+u.charAt(o>>6&63)+u.charAt(63&o);return 2==i?(e=t.charCodeAt(c)<<8,n=t.charCodeAt(++c),s+=u.charAt((o=e+n)>>10)+u.charAt(o>>4&63)+u.charAt(o<<2&63)+\"=\"):1==i&&(o=t.charCodeAt(c),s+=u.charAt(o>>2)+u.charAt(o<<4&63)+\"==\"),s},decode:function(t){var e=(t=String(t).replace(c,\"\")).length;e%4==0&&(e=(t=t.replace(/==?$/,\"\")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&a(\"Invalid character: the string to be decoded is not correctly encoded.\");for(var n,r,o=0,i=\"\",s=-1;++s>(-2*o&6)));return i},version:\"1.0.0\"};void 0===(r=function(){return l}.call(e,n,e,t))||(t.exports=r)}()},172:(t,e)=>{e.d=function(t){if(!t)return 0;for(var e=(t=t.toString()).length,n=t.length;n--;){var r=t.charCodeAt(n);56320<=r&&r<=57343&&n--,127{var e={utf8:{stringToBytes:function(t){return e.bin.stringToBytes(unescape(encodeURIComponent(t)))},bytesToString:function(t){return decodeURIComponent(escape(e.bin.bytesToString(t)))}},bin:{stringToBytes:function(t){for(var e=[],n=0;n{var e,n;e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",n={rotl:function(t,e){return t<>>32-e},rotr:function(t,e){return t<<32-e|t>>>e},endian:function(t){if(t.constructor==Number)return 16711935&n.rotl(t,8)|4278255360&n.rotl(t,24);for(var e=0;e0;t--)e.push(Math.floor(256*Math.random()));return e},bytesToWords:function(t){for(var e=[],n=0,r=0;n>>5]|=t[n]<<24-r%32;return e},wordsToBytes:function(t){for(var e=[],n=0;n<32*t.length;n+=8)e.push(t[n>>>5]>>>24-n%32&255);return e},bytesToHex:function(t){for(var e=[],n=0;n>>4).toString(16)),e.push((15&t[n]).toString(16));return e.join(\"\")},hexToBytes:function(t){for(var e=[],n=0;n>>6*(3-i)&63)):n.push(\"=\");return n.join(\"\")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\\/]/gi,\"\");for(var n=[],r=0,o=0;r>>6-2*o);return n}},t.exports=n},635:(t,e,n)=>{const r=n(31),o=n(338),i=n(221);t.exports={XMLParser:o,XMLValidator:r,XMLBuilder:i}},705:(t,e)=>{const n=\":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\",r=\"[\"+n+\"][\"+n+\"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*\",o=new RegExp(\"^\"+r+\"$\");e.isExist=function(t){return void 0!==t},e.isEmptyObject=function(t){return 0===Object.keys(t).length},e.merge=function(t,e,n){if(e){const r=Object.keys(e),o=r.length;for(let i=0;i{const r=n(705),o={allowBooleanAttributes:!1,unpairedTags:[]};function i(t){return\" \"===t||\"\\t\"===t||\"\\n\"===t||\"\\r\"===t}function s(t,e){const n=e;for(;e5&&\"xml\"===r)return d(\"InvalidXml\",\"XML declaration allowed only at the start of the document.\",m(t,e));if(\"?\"==t[e]&&\">\"==t[e+1]){e++;break}}return e}function a(t,e){if(t.length>e+5&&\"-\"===t[e+1]&&\"-\"===t[e+2]){for(e+=3;e\"===t[e+2]){e+=2;break}}else if(t.length>e+8&&\"D\"===t[e+1]&&\"O\"===t[e+2]&&\"C\"===t[e+3]&&\"T\"===t[e+4]&&\"Y\"===t[e+5]&&\"P\"===t[e+6]&&\"E\"===t[e+7]){let n=1;for(e+=8;e\"===t[e]&&(n--,0===n))break}else if(t.length>e+9&&\"[\"===t[e+1]&&\"C\"===t[e+2]&&\"D\"===t[e+3]&&\"A\"===t[e+4]&&\"T\"===t[e+5]&&\"A\"===t[e+6]&&\"[\"===t[e+7])for(e+=8;e\"===t[e+2]){e+=2;break}return e}e.validate=function(t,e){e=Object.assign({},o,e);const n=[];let u=!1,c=!1;\"\\ufeff\"===t[0]&&(t=t.substr(1));for(let o=0;o\"!==t[o]&&\" \"!==t[o]&&\"\\t\"!==t[o]&&\"\\n\"!==t[o]&&\"\\r\"!==t[o];o++)v+=t[o];if(v=v.trim(),\"/\"===v[v.length-1]&&(v=v.substring(0,v.length-1),o--),h=v,!r.isName(h)){let e;return e=0===v.trim().length?\"Invalid space after '<'.\":\"Tag '\"+v+\"' is an invalid name.\",d(\"InvalidTag\",e,m(t,o))}const b=l(t,o);if(!1===b)return d(\"InvalidAttr\",\"Attributes for '\"+v+\"' have open quote.\",m(t,o));let w=b.value;if(o=b.index,\"/\"===w[w.length-1]){const n=o-w.length;w=w.substring(0,w.length-1);const r=p(w,e);if(!0!==r)return d(r.err.code,r.err.msg,m(t,n+r.err.line));u=!0}else if(y){if(!b.tagClosed)return d(\"InvalidTag\",\"Closing tag '\"+v+\"' doesn't have proper closing.\",m(t,o));if(w.trim().length>0)return d(\"InvalidTag\",\"Closing tag '\"+v+\"' can't have attributes or invalid starting.\",m(t,g));if(0===n.length)return d(\"InvalidTag\",\"Closing tag '\"+v+\"' has not been opened.\",m(t,g));{const e=n.pop();if(v!==e.tagName){let n=m(t,e.tagStartPos);return d(\"InvalidTag\",\"Expected closing tag '\"+e.tagName+\"' (opened in line \"+n.line+\", col \"+n.col+\") instead of closing tag '\"+v+\"'.\",m(t,g))}0==n.length&&(c=!0)}}else{const r=p(w,e);if(!0!==r)return d(r.err.code,r.err.msg,m(t,o-w.length+r.err.line));if(!0===c)return d(\"InvalidXml\",\"Multiple possible root nodes found.\",m(t,o));-1!==e.unpairedTags.indexOf(v)||n.push({tagName:v,tagStartPos:g}),u=!0}for(o++;o0)||d(\"InvalidXml\",\"Invalid '\"+JSON.stringify(n.map((t=>t.tagName)),null,4).replace(/\\r?\\n/g,\"\")+\"' found.\",{line:1,col:1}):d(\"InvalidXml\",\"Start tag expected.\",1)};const u='\"',c=\"'\";function l(t,e){let n=\"\",r=\"\",o=!1;for(;e\"===t[e]&&\"\"===r){o=!0;break}n+=t[e]}return\"\"===r&&{value:n,index:e,tagClosed:o}}const h=new RegExp(\"(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\\\"])(([\\\\s\\\\S])*?)\\\\5)?\",\"g\");function p(t,e){const n=r.getAllMatches(t,h),o={};for(let t=0;t{const r=n(87),o={attributeNamePrefix:\"@_\",attributesGroupName:!1,textNodeName:\"#text\",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:\" \",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp(\"&\",\"g\"),val:\"&\"},{regex:new RegExp(\">\",\"g\"),val:\">\"},{regex:new RegExp(\"<\",\"g\"),val:\"<\"},{regex:new RegExp(\"'\",\"g\"),val:\"'\"},{regex:new RegExp('\"',\"g\"),val:\""\"}],processEntities:!0,stopNodes:[],oneListGroup:!1};function i(t){this.options=Object.assign({},o,t),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=u),this.processTextOrObjNode=s,this.options.format?(this.indentate=a,this.tagEndChar=\">\\n\",this.newLine=\"\\n\"):(this.indentate=function(){return\"\"},this.tagEndChar=\">\",this.newLine=\"\")}function s(t,e,n){const r=this.j2x(t,n+1);return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,r.attrStr,n):this.buildObjectNode(r.val,e,r.attrStr,n)}function a(t){return this.options.indentBy.repeat(t)}function u(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}i.prototype.build=function(t){return this.options.preserveOrder?r(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0).val)},i.prototype.j2x=function(t,e){let n=\"\",r=\"\";for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o))if(void 0===t[o])this.isAttribute(o)&&(r+=\"\");else if(null===t[o])this.isAttribute(o)?r+=\"\":\"?\"===o[0]?r+=this.indentate(e)+\"<\"+o+\"?\"+this.tagEndChar:r+=this.indentate(e)+\"<\"+o+\"/\"+this.tagEndChar;else if(t[o]instanceof Date)r+=this.buildTextValNode(t[o],o,\"\",e);else if(\"object\"!=typeof t[o]){const i=this.isAttribute(o);if(i)n+=this.buildAttrPairStr(i,\"\"+t[o]);else if(o===this.options.textNodeName){let e=this.options.tagValueProcessor(o,\"\"+t[o]);r+=this.replaceEntitiesValue(e)}else r+=this.buildTextValNode(t[o],o,\"\",e)}else if(Array.isArray(t[o])){const n=t[o].length;let i=\"\",s=\"\";for(let a=0;a\"+t+o}},i.prototype.closeTag=function(t){let e=\"\";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e=\"/\"):e=this.options.suppressEmptyNode?\"/\":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(r)+`\\x3c!--${t}--\\x3e`+this.newLine;if(\"?\"===e[0])return this.indentate(r)+\"<\"+e+n+\"?\"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),\"\"===o?this.indentate(r)+\"<\"+e+n+this.closeTag(e)+this.tagEndChar:this.indentate(r)+\"<\"+e+n+\">\"+o+\"0&&this.options.processEntities)for(let e=0;e{function e(t,s,a,u){let c=\"\",l=!1;for(let h=0;h`,l=!1;continue}if(f===s.commentPropName){c+=u+`\\x3c!--${p[f][0][s.textNodeName]}--\\x3e`,l=!0;continue}if(\"?\"===f[0]){const t=r(p[\":@\"],s),e=\"?xml\"===f?\"\":u;let n=p[f][0][s.textNodeName];n=0!==n.length?\" \"+n:\"\",c+=e+`<${f}${n}${t}?>`,l=!0;continue}let g=u;\"\"!==g&&(g+=s.indentBy);const m=u+`<${f}${r(p[\":@\"],s)}`,y=e(p[f],s,d,g);-1!==s.unpairedTags.indexOf(f)?s.suppressUnpairedNode?c+=m+\">\":c+=m+\"/>\":y&&0!==y.length||!s.suppressEmptyNode?y&&y.endsWith(\">\")?c+=m+`>${y}${u}`:(c+=m+\">\",y&&\"\"!==u&&(y.includes(\"/>\")||y.includes(\"`):c+=m+\"/>\",l=!0}return c}function n(t){const e=Object.keys(t);for(let n=0;n0&&e.processEntities)for(let n=0;n0&&(r=\"\\n\"),e(t,n,\"\",r)}},193:(t,e,n)=>{const r=n(705);function o(t,e){let n=\"\";for(;e\"===t[e]){if(p?\"-\"===t[e-1]&&\"-\"===t[e-2]&&(p=!1,r--):r--,0===r)break}else\"[\"===t[e]?h=!0:f+=t[e];else{if(h&&s(t,e))e+=7,[entityName,val,e]=o(t,e+1),-1===val.indexOf(\"&\")&&(n[l(entityName)]={regx:RegExp(`&${entityName};`,\"g\"),val});else if(h&&a(t,e))e+=8;else if(h&&u(t,e))e+=8;else if(h&&c(t,e))e+=9;else{if(!i)throw new Error(\"Invalid DOCTYPE\");p=!0}r++,f=\"\"}if(0!==r)throw new Error(\"Unclosed DOCTYPE\")}return{entities:n,i:e}}},63:(t,e)=>{const n={preserveOrder:!1,attributeNamePrefix:\"@_\",attributesGroupName:!1,textNodeName:\"#text\",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,n){return t}};e.buildOptions=function(t){return Object.assign({},n,t)},e.defaultOptions=n},299:(t,e,n)=>{const r=n(705),o=n(365),i=n(193),s=n(494);function a(t){const e=Object.keys(t);for(let n=0;n0)){s||(t=this.replaceEntitiesValue(t));const r=this.options.tagValueProcessor(e,t,n,o,i);return null==r?t:typeof r!=typeof t||r!==t?r:this.options.trimValues||t.trim()===t?w(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function c(t){if(this.options.removeNSPrefix){const e=t.split(\":\"),n=\"/\"===t.charAt(0)?\"/\":\"\";if(\"xmlns\"===e[0])return\"\";2===e.length&&(t=n+e[1])}return t}const l=new RegExp(\"([^\\\\s=]+)\\\\s*(=\\\\s*(['\\\"])([\\\\s\\\\S]*?)\\\\3)?\",\"gm\");function h(t,e,n){if(!this.options.ignoreAttributes&&\"string\"==typeof t){const n=r.getAllMatches(t,l),o=n.length,i={};for(let t=0;t\",a,\"Closing Tag is not closed.\");let o=t.substring(a+2,e).trim();if(this.options.removeNSPrefix){const t=o.indexOf(\":\");-1!==t&&(o=o.substr(t+1))}this.options.transformTagName&&(o=this.options.transformTagName(o)),n&&(r=this.saveTextToParentTag(r,n,s));const i=s.substring(s.lastIndexOf(\".\")+1);if(o&&-1!==this.options.unpairedTags.indexOf(o))throw new Error(`Unpaired tag can not be used as closing tag: `);let u=0;i&&-1!==this.options.unpairedTags.indexOf(i)?(u=s.lastIndexOf(\".\",s.lastIndexOf(\".\")-1),this.tagsNodeStack.pop()):u=s.lastIndexOf(\".\"),s=s.substring(0,u),n=this.tagsNodeStack.pop(),r=\"\",a=e}else if(\"?\"===t[a+1]){let e=v(t,a,!1,\"?>\");if(!e)throw new Error(\"Pi Tag is not closed.\");if(r=this.saveTextToParentTag(r,n,s),this.options.ignoreDeclaration&&\"?xml\"===e.tagName||this.options.ignorePiTags);else{const t=new o(e.tagName);t.add(this.options.textNodeName,\"\"),e.tagName!==e.tagExp&&e.attrExpPresent&&(t[\":@\"]=this.buildAttributesMap(e.tagExp,s,e.tagName)),this.addChild(n,t,s)}a=e.closeIndex+1}else if(\"!--\"===t.substr(a+1,3)){const e=y(t,\"--\\x3e\",a+4,\"Comment is not closed.\");if(this.options.commentPropName){const o=t.substring(a+4,e-2);r=this.saveTextToParentTag(r,n,s),n.add(this.options.commentPropName,[{[this.options.textNodeName]:o}])}a=e}else if(\"!D\"===t.substr(a+1,2)){const e=i(t,a);this.docTypeEntities=e.entities,a=e.i}else if(\"![\"===t.substr(a+1,2)){const e=y(t,\"]]>\",a,\"CDATA is not closed.\")-2,o=t.substring(a+9,e);r=this.saveTextToParentTag(r,n,s);let i=this.parseTextData(o,n.tagname,s,!0,!1,!0,!0);null==i&&(i=\"\"),this.options.cdataPropName?n.add(this.options.cdataPropName,[{[this.options.textNodeName]:o}]):n.add(this.options.textNodeName,i),a=e+2}else{let i=v(t,a,this.options.removeNSPrefix),u=i.tagName;const c=i.rawTagName;let l=i.tagExp,h=i.attrExpPresent,p=i.closeIndex;this.options.transformTagName&&(u=this.options.transformTagName(u)),n&&r&&\"!xml\"!==n.tagname&&(r=this.saveTextToParentTag(r,n,s,!1));const f=n;if(f&&-1!==this.options.unpairedTags.indexOf(f.tagname)&&(n=this.tagsNodeStack.pop(),s=s.substring(0,s.lastIndexOf(\".\"))),u!==e.tagname&&(s+=s?\".\"+u:u),this.isItStopNode(this.options.stopNodes,s,u)){let e=\"\";if(l.length>0&&l.lastIndexOf(\"/\")===l.length-1)\"/\"===u[u.length-1]?(u=u.substr(0,u.length-1),s=s.substr(0,s.length-1),l=u):l=l.substr(0,l.length-1),a=i.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(u))a=i.closeIndex;else{const n=this.readStopNodeData(t,c,p+1);if(!n)throw new Error(`Unexpected end of ${c}`);a=n.i,e=n.tagContent}const r=new o(u);u!==l&&h&&(r[\":@\"]=this.buildAttributesMap(l,s,u)),e&&(e=this.parseTextData(e,u,s,!0,h,!0,!0)),s=s.substr(0,s.lastIndexOf(\".\")),r.add(this.options.textNodeName,e),this.addChild(n,r,s)}else{if(l.length>0&&l.lastIndexOf(\"/\")===l.length-1){\"/\"===u[u.length-1]?(u=u.substr(0,u.length-1),s=s.substr(0,s.length-1),l=u):l=l.substr(0,l.length-1),this.options.transformTagName&&(u=this.options.transformTagName(u));const t=new o(u);u!==l&&h&&(t[\":@\"]=this.buildAttributesMap(l,s,u)),this.addChild(n,t,s),s=s.substr(0,s.lastIndexOf(\".\"))}else{const t=new o(u);this.tagsNodeStack.push(n),u!==l&&h&&(t[\":@\"]=this.buildAttributesMap(l,s,u)),this.addChild(n,t,s),n=t}r=\"\",a=p}}else r+=t[a];return e.child};function f(t,e,n){const r=this.options.updateTag(e.tagname,n,e[\":@\"]);!1===r||(\"string\"==typeof r?(e.tagname=r,t.addChild(e)):t.addChild(e))}const d=function(t){if(this.options.processEntities){for(let e in this.docTypeEntities){const n=this.docTypeEntities[e];t=t.replace(n.regx,n.val)}for(let e in this.lastEntities){const n=this.lastEntities[e];t=t.replace(n.regex,n.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){const n=this.htmlEntities[e];t=t.replace(n.regex,n.val)}t=t.replace(this.ampEntity.regex,this.ampEntity.val)}return t};function g(t,e,n,r){return t&&(void 0===r&&(r=0===Object.keys(e.child).length),void 0!==(t=this.parseTextData(t,e.tagname,n,!1,!!e[\":@\"]&&0!==Object.keys(e[\":@\"]).length,r))&&\"\"!==t&&e.add(this.options.textNodeName,t),t=\"\"),t}function m(t,e,n){const r=\"*.\"+n;for(const n in t){const o=t[n];if(r===o||e===o)return!0}return!1}function y(t,e,n,r){const o=t.indexOf(e,n);if(-1===o)throw new Error(r);return o+e.length-1}function v(t,e,n){const r=function(t,e){let n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\">\",o=\"\";for(let i=e;i3&&void 0!==arguments[3]?arguments[3]:\">\");if(!r)return;let o=r.data;const i=r.index,s=o.search(/\\s/);let a=o,u=!0;-1!==s&&(a=o.substring(0,s),o=o.substring(s+1).trimStart());const c=a;if(n){const t=a.indexOf(\":\");-1!==t&&(a=a.substr(t+1),u=a!==r.data.substr(t+1))}return{tagName:a,tagExp:o,closeIndex:i,attrExpPresent:u,rawTagName:c}}function b(t,e,n){const r=n;let o=1;for(;n\",n,`${e} is not closed`);if(t.substring(n+2,i).trim()===e&&(o--,0===o))return{tagContent:t.substring(r,n),i};n=i}else if(\"?\"===t[n+1])n=y(t,\"?>\",n+1,\"StopNode is not closed.\");else if(\"!--\"===t.substr(n+1,3))n=y(t,\"--\\x3e\",n+3,\"StopNode is not closed.\");else if(\"![\"===t.substr(n+1,2))n=y(t,\"]]>\",n,\"StopNode is not closed.\")-2;else{const r=v(t,n,\">\");r&&((r&&r.tagName)===e&&\"/\"!==r.tagExp[r.tagExp.length-1]&&o++,n=r.closeIndex)}}function w(t,e,n){if(e&&\"string\"==typeof t){const e=t.trim();return\"true\"===e||\"false\"!==e&&s(t,n)}return r.isExist(t)?t:\"\"}t.exports=class{constructor(t){this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:\"'\"},gt:{regex:/&(gt|#62|#x3E);/g,val:\">\"},lt:{regex:/&(lt|#60|#x3C);/g,val:\"<\"},quot:{regex:/&(quot|#34|#x22);/g,val:'\"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:\"&\"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:\" \"},cent:{regex:/&(cent|#162);/g,val:\"¢\"},pound:{regex:/&(pound|#163);/g,val:\"£\"},yen:{regex:/&(yen|#165);/g,val:\"¥\"},euro:{regex:/&(euro|#8364);/g,val:\"€\"},copyright:{regex:/&(copy|#169);/g,val:\"©\"},reg:{regex:/&(reg|#174);/g,val:\"®\"},inr:{regex:/&(inr|#8377);/g,val:\"₹\"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>String.fromCharCode(Number.parseInt(e,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>String.fromCharCode(Number.parseInt(e,16))}},this.addExternalEntities=a,this.parseXml=p,this.parseTextData=u,this.resolveNameSpace=c,this.buildAttributesMap=h,this.isItStopNode=m,this.replaceEntitiesValue=d,this.readStopNodeData=b,this.saveTextToParentTag=g,this.addChild=f}}},338:(t,e,n)=>{const{buildOptions:r}=n(63),o=n(299),{prettify:i}=n(728),s=n(31);t.exports=class{constructor(t){this.externalEntities={},this.options=r(t)}parse(t,e){if(\"string\"==typeof t);else{if(!t.toString)throw new Error(\"XML data is accepted in String or Bytes[] form.\");t=t.toString()}if(e){!0===e&&(e={});const n=s.validate(t,e);if(!0!==n)throw Error(`${n.err.msg}:${n.err.line}:${n.err.col}`)}const n=new o(this.options);n.addExternalEntities(this.externalEntities);const r=n.parseXml(t);return this.options.preserveOrder||void 0===r?r:i(r,this.options)}addEntity(t,e){if(-1!==e.indexOf(\"&\"))throw new Error(\"Entity value can't have '&'\");if(-1!==t.indexOf(\"&\")||-1!==t.indexOf(\";\"))throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\");if(\"&\"===e)throw new Error(\"An entity with value '&' is not permitted\");this.externalEntities[t]=e}}},728:(t,e)=>{function n(t,e,s){let a;const u={};for(let c=0;c0&&(u[e.textNodeName]=a):void 0!==a&&(u[e.textNodeName]=a),u}function r(t){const e=Object.keys(t);for(let t=0;t{t.exports=class{constructor(t){this.tagname=t,this.child=[],this[\":@\"]={}}add(t,e){\"__proto__\"===t&&(t=\"#__proto__\"),this.child.push({[t]:e})}addChild(t){\"__proto__\"===t.tagname&&(t.tagname=\"#__proto__\"),t[\":@\"]&&Object.keys(t[\":@\"]).length>0?this.child.push({[t.tagname]:t.child,\":@\":t[\":@\"]}):this.child.push({[t.tagname]:t.child})}}},135:t=>{function e(t){return!!t.constructor&&\"function\"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}t.exports=function(t){return null!=t&&(e(t)||function(t){return\"function\"==typeof t.readFloatLE&&\"function\"==typeof t.slice&&e(t.slice(0,0))}(t)||!!t._isBuffer)}},542:(t,e,n)=>{!function(){var e=n(298),r=n(526).utf8,o=n(135),i=n(526).bin,s=function(t,n){t.constructor==String?t=n&&\"binary\"===n.encoding?i.stringToBytes(t):r.stringToBytes(t):o(t)?t=Array.prototype.slice.call(t,0):Array.isArray(t)||t.constructor===Uint8Array||(t=t.toString());for(var a=e.bytesToWords(t),u=8*t.length,c=1732584193,l=-271733879,h=-1732584194,p=271733878,f=0;f>>24)|4278255360&(a[f]<<24|a[f]>>>8);a[u>>>5]|=128<>>9<<4)]=u;var d=s._ff,g=s._gg,m=s._hh,y=s._ii;for(f=0;f>>0,l=l+b>>>0,h=h+w>>>0,p=p+x>>>0}return e.endian([c,l,h,p])};s._ff=function(t,e,n,r,o,i,s){var a=t+(e&n|~e&r)+(o>>>0)+s;return(a<>>32-i)+e},s._gg=function(t,e,n,r,o,i,s){var a=t+(e&r|n&~r)+(o>>>0)+s;return(a<>>32-i)+e},s._hh=function(t,e,n,r,o,i,s){var a=t+(e^n^r)+(o>>>0)+s;return(a<>>32-i)+e},s._ii=function(t,e,n,r,o,i,s){var a=t+(n^(e|~r))+(o>>>0)+s;return(a<>>32-i)+e},s._blocksize=16,s._digestsize=16,t.exports=function(t,n){if(null==t)throw new Error(\"Illegal argument \"+t);var r=e.wordsToBytes(s(t,n));return n&&n.asBytes?r:n&&n.asString?i.bytesToString(r):e.bytesToHex(r)}}()},285:(t,e,n)=>{var r=n(2);t.exports=function(t){return t?(\"{}\"===t.substr(0,2)&&(t=\"\\\\{\\\\}\"+t.substr(2)),m(function(t){return t.split(\"\\\\\\\\\").join(o).split(\"\\\\{\").join(i).split(\"\\\\}\").join(s).split(\"\\\\,\").join(a).split(\"\\\\.\").join(u)}(t),!0).map(l)):[]};var o=\"\\0SLASH\"+Math.random()+\"\\0\",i=\"\\0OPEN\"+Math.random()+\"\\0\",s=\"\\0CLOSE\"+Math.random()+\"\\0\",a=\"\\0COMMA\"+Math.random()+\"\\0\",u=\"\\0PERIOD\"+Math.random()+\"\\0\";function c(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function l(t){return t.split(o).join(\"\\\\\").split(i).join(\"{\").split(s).join(\"}\").split(a).join(\",\").split(u).join(\".\")}function h(t){if(!t)return[\"\"];var e=[],n=r(\"{\",\"}\",t);if(!n)return t.split(\",\");var o=n.pre,i=n.body,s=n.post,a=o.split(\",\");a[a.length-1]+=\"{\"+i+\"}\";var u=h(s);return s.length&&(a[a.length-1]+=u.shift(),a.push.apply(a,u)),e.push.apply(e,a),e}function p(t){return\"{\"+t+\"}\"}function f(t){return/^-?0\\d/.test(t)}function d(t,e){return t<=e}function g(t,e){return t>=e}function m(t,e){var n=[],o=r(\"{\",\"}\",t);if(!o)return[t];var i=o.pre,a=o.post.length?m(o.post,!1):[\"\"];if(/\\$$/.test(o.pre))for(var u=0;u=0;if(!x&&!N)return o.post.match(/,.*\\}/)?m(t=o.pre+\"{\"+o.body+s+o.post):[t];if(x)y=o.body.split(/\\.\\./);else if(1===(y=h(o.body)).length&&1===(y=m(y[0],!1).map(p)).length)return a.map((function(t){return o.pre+y[0]+t}));if(x){var P=c(y[0]),A=c(y[1]),O=Math.max(y[0].length,y[1].length),E=3==y.length?Math.abs(c(y[2])):1,T=d;A0){var I=new Array(C+1).join(\"0\");$=S<0?\"-\"+I+$.slice(1):I+$}}v.push($)}}else{v=[];for(var k=0;k{function e(t){return e=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},e(t)}function n(t){var e=\"function\"==typeof Map?new Map:void 0;return n=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf(\"[native code]\")))return t;var n;if(\"function\"!=typeof t)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,s)}function s(){return r(t,arguments,i(this).constructor)}return s.prototype=Object.create(t.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),o(s,t)},n(t)}function r(t,e,n){return r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var i=new(Function.bind.apply(t,r));return n&&o(i,n.prototype),i},r.apply(null,arguments)}function o(t,e){return o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}var s=function(t){function n(t){var r;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,n),(r=function(t,n){return!n||\"object\"!==e(n)&&\"function\"!=typeof n?function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t):n}(this,i(n).call(this,t))).name=\"ObjectPrototypeMutationError\",r}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(n,t),n}(n(Error));function a(t,n){for(var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=n.split(\".\"),i=o.length,s=function(e){var n=o[e];if(!t)return{v:void 0};if(\"+\"===n){if(Array.isArray(t))return{v:t.map((function(n,i){var s=o.slice(e+1);return s.length>0?a(n,s.join(\".\"),r):r(t,i,o,e)}))};var i=o.slice(0,e).join(\".\");throw new Error(\"Object at wildcard (\".concat(i,\") is not an array\"))}t=r(t,n,o,e)},u=0;u2&&void 0!==arguments[2]?arguments[2]:{};if(\"object\"!=e(t)||null===t)return!1;if(void 0===n)return!1;if(\"number\"==typeof n)return n in t;try{var o=!1;return a(t,n,(function(t,e,n,i){if(!u(n,i))return t&&t[e];o=r.own?t.hasOwnProperty(e):e in t})),o}catch(t){return!1}},hasOwn:function(t,e,n){return this.has(t,e,n||{own:!0})},isIn:function(t,n,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(\"object\"!=e(t)||null===t)return!1;if(void 0===n)return!1;try{var i=!1,s=!1;return a(t,n,(function(t,n,o,a){return i=i||t===r||!!t&&t[n]===r,s=u(o,a)&&\"object\"===e(t)&&n in t,t&&t[n]})),o.validPath?i&&s:i}catch(t){return!1}},ObjectPrototypeMutationError:s}},47:(t,e,n)=>{var r=n(410),o=function(t){return\"string\"==typeof t};function i(t,e){for(var n=[],r=0;r=-1&&!e;n--){var r=n>=0?arguments[n]:process.cwd();if(!o(r))throw new TypeError(\"Arguments to path.resolve must be strings\");r&&(t=r+\"/\"+t,e=\"/\"===r.charAt(0))}return(e?\"/\":\"\")+(t=i(t.split(\"/\"),!e).join(\"/\"))||\".\"},a.normalize=function(t){var e=a.isAbsolute(t),n=\"/\"===t.substr(-1);return(t=i(t.split(\"/\"),!e).join(\"/\"))||e||(t=\".\"),t&&n&&(t+=\"/\"),(e?\"/\":\"\")+t},a.isAbsolute=function(t){return\"/\"===t.charAt(0)},a.join=function(){for(var t=\"\",e=0;e=0&&\"\"===t[n];n--);return e>n?[]:t.slice(e,n+1)}t=a.resolve(t).substr(1),e=a.resolve(e).substr(1);for(var r=n(t.split(\"/\")),o=n(e.split(\"/\")),i=Math.min(r.length,o.length),s=i,u=0;u{var n=Object.prototype.hasOwnProperty;function r(t){try{return decodeURIComponent(t.replace(/\\+/g,\" \"))}catch(t){return null}}function o(t){try{return encodeURIComponent(t)}catch(t){return null}}e.stringify=function(t,e){e=e||\"\";var r,i,s=[];for(i in\"string\"!=typeof e&&(e=\"?\"),t)if(n.call(t,i)){if((r=t[i])||null!=r&&!isNaN(r)||(r=\"\"),i=o(i),r=o(r),null===i||null===r)continue;s.push(i+\"=\"+r)}return s.length?e+s.join(\"&\"):\"\"},e.parse=function(t){for(var e,n=/([^=?#&]+)=?([^&]*)/g,o={};e=n.exec(t);){var i=r(e[1]),s=r(e[2]);null===i||null===s||i in o||(o[i]=s)}return o}},670:t=>{t.exports=function(t,e){if(e=e.split(\":\")[0],!(t=+t))return!1;switch(e){case\"http\":case\"ws\":return 80!==t;case\"https\":case\"wss\":return 443!==t;case\"ftp\":return 21!==t;case\"gopher\":return 70!==t;case\"file\":return!1}return 0!==t}},494:t=>{const e=/^[-+]?0x[a-fA-F0-9]+$/,n=/^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const r={hex:!0,leadingZeros:!0,decimalPoint:\".\",eNotation:!0};t.exports=function(t){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(o=Object.assign({},r,o),!t||\"string\"!=typeof t)return t;let i=t.trim();if(void 0!==o.skipLike&&o.skipLike.test(i))return t;if(o.hex&&e.test(i))return Number.parseInt(i,16);{const e=n.exec(i);if(e){const n=e[1],r=e[2];let a=(s=e[3])&&-1!==s.indexOf(\".\")?(\".\"===(s=s.replace(/0+$/,\"\"))?s=\"0\":\".\"===s[0]?s=\"0\"+s:\".\"===s[s.length-1]&&(s=s.substr(0,s.length-1)),s):s;const u=e[4]||e[6];if(!o.leadingZeros&&r.length>0&&n&&\".\"!==i[2])return t;if(!o.leadingZeros&&r.length>0&&!n&&\".\"!==i[1])return t;{const e=Number(i),s=\"\"+e;return-1!==s.search(/[eE]/)||u?o.eNotation?e:t:-1!==i.indexOf(\".\")?\"0\"===s&&\"\"===a||s===a||n&&s===\"-\"+a?e:t:r?a===s||n+a===s?e:t:i===s||i===n+s?e:t}}return t}var s}},737:(t,e,n)=>{var r=n(670),o=n(647),i=/^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/,s=/[\\n\\r\\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//,u=/:\\d+$/,c=/^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i,l=/^[a-zA-Z]:/;function h(t){return(t||\"\").toString().replace(i,\"\")}var p=[[\"#\",\"hash\"],[\"?\",\"query\"],function(t,e){return g(e.protocol)?t.replace(/\\\\/g,\"/\"):t},[\"/\",\"pathname\"],[\"@\",\"auth\",1],[NaN,\"host\",void 0,1,1],[/:(\\d*)$/,\"port\",void 0,1],[NaN,\"hostname\",void 0,1,1]],f={hash:1,query:1};function d(t){var e,n=(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{}).location||{},r={},o=typeof(t=t||n);if(\"blob:\"===t.protocol)r=new y(unescape(t.pathname),{});else if(\"string\"===o)for(e in r=new y(t,{}),f)delete r[e];else if(\"object\"===o){for(e in t)e in f||(r[e]=t[e]);void 0===r.slashes&&(r.slashes=a.test(t.href))}return r}function g(t){return\"file:\"===t||\"ftp:\"===t||\"http:\"===t||\"https:\"===t||\"ws:\"===t||\"wss:\"===t}function m(t,e){t=(t=h(t)).replace(s,\"\"),e=e||{};var n,r=c.exec(t),o=r[1]?r[1].toLowerCase():\"\",i=!!r[2],a=!!r[3],u=0;return i?a?(n=r[2]+r[3]+r[4],u=r[2].length+r[3].length):(n=r[2]+r[4],u=r[2].length):a?(n=r[3]+r[4],u=r[3].length):n=r[4],\"file:\"===o?u>=2&&(n=n.slice(2)):g(o)?n=r[4]:o?i&&(n=n.slice(2)):u>=2&&g(e.protocol)&&(n=r[4]),{protocol:o,slashes:i||g(o),slashesCount:u,rest:n}}function y(t,e,n){if(t=(t=h(t)).replace(s,\"\"),!(this instanceof y))return new y(t,e,n);var i,a,u,c,f,v,b=p.slice(),w=typeof e,x=this,N=0;for(\"object\"!==w&&\"string\"!==w&&(n=e,e=null),n&&\"function\"!=typeof n&&(n=o.parse),i=!(a=m(t||\"\",e=d(e))).protocol&&!a.slashes,x.slashes=a.slashes||i&&e.slashes,x.protocol=a.protocol||e.protocol||\"\",t=a.rest,(\"file:\"===a.protocol&&(2!==a.slashesCount||l.test(t))||!a.slashes&&(a.protocol||a.slashesCount<2||!g(x.protocol)))&&(b[3]=[/(.*)/,\"pathname\"]);N{},388:()=>{},805:()=>{},345:()=>{},800:()=>{}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={id:r,loaded:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.nmd=t=>(t.paths=[],t.children||(t.children=[]),t);var r={};n.d(r,{hT:()=>C,O4:()=>I,Kd:()=>S,YK:()=>$,UU:()=>en,Gu:()=>F,ky:()=>oe,h4:()=>ne,ch:()=>re,hq:()=>Xt,i5:()=>ie});var o=n(737),i=n.n(o);function s(t){if(!a(t))throw new Error(\"Parameter was not an error\")}function a(t){return!!t&&\"object\"==typeof t&&\"[object Error]\"===(e=t,Object.prototype.toString.call(e))||t instanceof Error;var e}class u extends Error{constructor(t,e){const n=[...arguments],{options:r,shortMessage:o}=function(t){let e,n=\"\";if(0===t.length)e={};else if(a(t[0]))e={cause:t[0]},n=t.slice(1).join(\" \")||\"\";else if(t[0]&&\"object\"==typeof t[0])e=Object.assign({},t[0]),n=t.slice(1).join(\" \")||\"\";else{if(\"string\"!=typeof t[0])throw new Error(\"Invalid arguments passed to Layerr\");e={},n=n=t.join(\" \")||\"\"}return{options:e,shortMessage:n}}(n);let i=o;if(r.cause&&(i=`${i}: ${r.cause.message}`),super(i),this.message=i,r.name&&\"string\"==typeof r.name?this.name=r.name:this.name=\"Layerr\",r.cause&&Object.defineProperty(this,\"_cause\",{value:r.cause}),Object.defineProperty(this,\"_info\",{value:{}}),r.info&&\"object\"==typeof r.info&&Object.assign(this._info,r.info),Error.captureStackTrace){const t=r.constructorOpt||this.constructor;Error.captureStackTrace(this,t)}}static cause(t){return s(t),t._cause&&a(t._cause)?t._cause:null}static fullStack(t){s(t);const e=u.cause(t);return e?`${t.stack}\\ncaused by: ${u.fullStack(e)}`:t.stack??\"\"}static info(t){s(t);const e={},n=u.cause(t);return n&&Object.assign(e,u.info(n)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}var c=n(47),l=n.n(c);const h=\"__PATH_SEPARATOR_POSIX__\",p=\"__PATH_SEPARATOR_WINDOWS__\";function f(t){try{const e=t.replace(/\\//g,h).replace(/\\\\\\\\/g,p);return encodeURIComponent(e).split(p).join(\"\\\\\\\\\").split(h).join(\"/\")}catch(t){throw new u(t,\"Failed encoding path\")}}function d(t){return t.startsWith(\"/\")?t:\"/\"+t}function g(t){let e=t;return\"/\"!==e[0]&&(e=\"/\"+e),/^.+\\/$/.test(e)&&(e=e.substr(0,e.length-1)),e}function m(t){let e=new(i())(t).pathname;return e.length<=0&&(e=\"/\"),g(e)}function y(){for(var t=arguments.length,e=new Array(t),n=0;n1){var n=t.shift();t[0]=n+t[0]}t[0].match(/^file:\\/\\/\\//)?t[0]=t[0].replace(/^([^/:]+):\\/*/,\"$1:///\"):t[0]=t[0].replace(/^([^/:]+):\\/*/,\"$1://\");for(var r=0;r0&&(o=o.replace(/^[\\/]+/,\"\")),o=r0?\"?\":\"\")+s.join(\"&\")}(\"object\"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}(e.reduce(((t,e,n)=>((0===n||\"/\"!==e||\"/\"===e&&\"/\"!==t[t.length-1])&&t.push(e),t)),[]))}var v=n(542),b=n.n(v);const w=\"abcdef0123456789\";function x(t,e){const n=t.url.replace(\"//\",\"\"),r=-1==n.indexOf(\"/\")?\"/\":n.slice(n.indexOf(\"/\")),o=t.method?t.method.toUpperCase():\"GET\",i=!!/(^|,)\\s*auth\\s*($|,)/.test(e.qop)&&\"auth\",s=`00000000${e.nc}`.slice(-8),a=function(t,e,n,r,o,i,s){const a=s||b()(`${e}:${n}:${r}`);return t&&\"md5-sess\"===t.toLowerCase()?b()(`${a}:${o}:${i}`):a}(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),u=b()(`${o}:${r}`),c=i?b()(`${a}:${e.nonce}:${s}:${e.cnonce}:${i}:${u}`):b()(`${a}:${e.nonce}:${u}`),l={username:e.username,realm:e.realm,nonce:e.nonce,uri:r,qop:i,response:c,nc:s,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},h=[];for(const t in l)l[t]&&(\"qop\"===t||\"nc\"===t||\"algorithm\"===t?h.push(`${t}=${l[t]}`):h.push(`${t}=\"${l[t]}\"`));return`Digest ${h.join(\", \")}`}function N(t){return\"digest\"===(t.headers&&t.headers.get(\"www-authenticate\")||\"\").split(/\\s/)[0].toLowerCase()}var P=n(101),A=n.n(P);function O(t){return A().decode(t)}function E(t,e){var n;return`Basic ${n=`${t}:${e}`,A().encode(n)}`}const T=\"undefined\"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:\"undefined\"!=typeof window?window:globalThis,j=T.fetch.bind(T),S=(T.Headers,T.Request),$=T.Response;let C=function(t){return t.Auto=\"auto\",t.Digest=\"digest\",t.None=\"none\",t.Password=\"password\",t.Token=\"token\",t}({}),I=function(t){return t.DataTypeNoLength=\"data-type-no-length\",t.InvalidAuthType=\"invalid-auth-type\",t.InvalidOutputFormat=\"invalid-output-format\",t.LinkUnsupportedAuthType=\"link-unsupported-auth\",t.InvalidUpdateRange=\"invalid-update-range\",t.NotSupported=\"not-supported\",t}({});function k(t,e,n,r,o){switch(t.authType){case C.Auto:e&&n&&(t.headers.Authorization=E(e,n));break;case C.Digest:t.digest=function(t,e,n){return{username:t,password:e,ha1:n,nc:0,algorithm:\"md5\",hasDigestAuth:!1}}(e,n,o);break;case C.None:break;case C.Password:t.headers.Authorization=E(e,n);break;case C.Token:t.headers.Authorization=`${(i=r).token_type} ${i.access_token}`;break;default:throw new u({info:{code:I.InvalidAuthType}},`Invalid auth type: ${t.authType}`)}var i}n(345),n(800);const R=\"@@HOTPATCHER\",L=()=>{};function _(t){return{original:t,methods:[t],final:!1}}class M{constructor(){this._configuration={registry:{},getEmptyAction:\"null\"},this.__type__=R}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(t){this.configuration.getEmptyAction=t}control(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!t||t.__type__!==R)throw new Error(\"Failed taking control of target HotPatcher instance: Invalid type or object\");return Object.keys(t.configuration.registry).forEach((n=>{this.configuration.registry.hasOwnProperty(n)?e&&(this.configuration.registry[n]=Object.assign({},t.configuration.registry[n])):this.configuration.registry[n]=Object.assign({},t.configuration.registry[n])})),t._configuration=this.configuration,this}execute(t){const e=this.get(t)||L;for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o0;)o=[e.shift().apply(i,o)];return o[0]}}(...e.methods)}isPatched(t){return!!this.configuration.registry[t]}patch(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{chain:r=!1}=n;if(this.configuration.registry[t]&&this.configuration.registry[t].final)throw new Error(`Failed patching '${t}': Method marked as being final`);if(\"function\"!=typeof e)throw new Error(`Failed patching '${t}': Provided method is not a function`);if(r)this.configuration.registry[t]?this.configuration.registry[t].methods.push(e):this.configuration.registry[t]=_(e);else if(this.isPatched(t)){const{original:n}=this.configuration.registry[t];this.configuration.registry[t]=Object.assign(_(e),{original:n})}else this.configuration.registry[t]=_(e);return this}patchInline(t,e){this.isPatched(t)||this.patch(t,e);for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o1?e-1:0),r=1;r{this.patch(t,e,{chain:!0})})),this}restore(t){if(!this.isPatched(t))throw new Error(`Failed restoring method: No method present for key: ${t}`);if(\"function\"!=typeof this.configuration.registry[t].original)throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${t}`);return this.configuration.registry[t].methods=[this.configuration.registry[t].original],this}setFinal(t){if(!this.configuration.registry.hasOwnProperty(t))throw new Error(`Failed marking '${t}' as final: No method found for key`);return this.configuration.registry[t].final=!0,this}}let U=null;function F(){return U||(U=new M),U}function D(t){return function(t){if(\"object\"!=typeof t||null===t||\"[object Object]\"!=Object.prototype.toString.call(t))return!1;if(null===Object.getPrototypeOf(t))return!0;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t)?Object.assign({},t):Object.setPrototypeOf(Object.assign({},t),Object.getPrototypeOf(t))}function B(){for(var t=arguments.length,e=new Array(t),n=0;n0;){const t=o.shift();r=r?W(r,t):D(t)}return r}function W(t,e){const n=D(t);return Object.keys(e).forEach((t=>{n.hasOwnProperty(t)?Array.isArray(e[t])?n[t]=Array.isArray(n[t])?[...n[t],...e[t]]:[...e[t]]:\"object\"==typeof e[t]&&e[t]?n[t]=\"object\"==typeof n[t]&&n[t]?W(n[t],e[t]):D(e[t]):n[t]=e[t]:n[t]=e[t]})),n}function V(t){const e={};for(const n of t.keys())e[n]=t.get(n);return e}function z(){for(var t=arguments.length,e=new Array(t),n=0;n(Object.keys(e).forEach((n=>{const o=n.toLowerCase();r.hasOwnProperty(o)?t[r[o]]=e[n]:(r[o]=n,t[n]=e[n])})),t)),{})}n(805);const G=\"function\"==typeof ArrayBuffer,{toString:q}=Object.prototype;function H(t){return G&&(t instanceof ArrayBuffer||\"[object ArrayBuffer]\"===q.call(t))}function X(t){return null!=t&&null!=t.constructor&&\"function\"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function Z(t){return function(){for(var e=[],n=0;ne.patchInline(\"fetch\",j,t.url,function(t){let e={};const n={method:t.method};if(t.headers&&(e=z(e,t.headers)),void 0!==t.data){const[r,o]=function(t){if(\"string\"==typeof t)return[t,{}];if(X(t))return[t,{}];if(H(t))return[t,{}];if(t&&\"object\"==typeof t)return[JSON.stringify(t),{\"content-type\":\"application/json\"}];throw new Error(\"Unable to convert request body: Unexpected body type: \"+typeof t)}(t.data);n.body=r,e=z(e,o)}return t.signal&&(n.signal=t.signal),t.withCredentials&&(n.credentials=\"include\"),n.headers=e,n}(t))),t)}var nt=n(285);const rt=t=>{if(\"string\"!=typeof t)throw new TypeError(\"invalid pattern\");if(t.length>65536)throw new TypeError(\"pattern is too long\")},ot={\"[:alnum:]\":[\"\\\\p{L}\\\\p{Nl}\\\\p{Nd}\",!0],\"[:alpha:]\":[\"\\\\p{L}\\\\p{Nl}\",!0],\"[:ascii:]\":[\"\\\\x00-\\\\x7f\",!1],\"[:blank:]\":[\"\\\\p{Zs}\\\\t\",!0],\"[:cntrl:]\":[\"\\\\p{Cc}\",!0],\"[:digit:]\":[\"\\\\p{Nd}\",!0],\"[:graph:]\":[\"\\\\p{Z}\\\\p{C}\",!0,!0],\"[:lower:]\":[\"\\\\p{Ll}\",!0],\"[:print:]\":[\"\\\\p{C}\",!0],\"[:punct:]\":[\"\\\\p{P}\",!0],\"[:space:]\":[\"\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f\",!0],\"[:upper:]\":[\"\\\\p{Lu}\",!0],\"[:word:]\":[\"\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}\",!0],\"[:xdigit:]\":[\"A-Fa-f0-9\",!1]},it=t=>t.replace(/[[\\]\\\\-]/g,\"\\\\$&\"),st=t=>t.join(\"\"),at=(t,e)=>{const n=e;if(\"[\"!==t.charAt(n))throw new Error(\"not in a brace expression\");const r=[],o=[];let i=n+1,s=!1,a=!1,u=!1,c=!1,l=n,h=\"\";t:for(;ih?r.push(it(h)+\"-\"+it(e)):e===h&&r.push(it(e)),h=\"\",i++):t.startsWith(\"-]\",i+1)?(r.push(it(e+\"-\")),i+=2):t.startsWith(\"-\",i+1)?(h=e,i+=2):(r.push(it(e)),i++)}else u=!0,i++}else c=!0,i++}if(l1&&void 0!==arguments[1]?arguments[1]:{};return e?t.replace(/\\[([^\\/\\\\])\\]/g,\"$1\"):t.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g,\"$1$2\").replace(/\\\\([^\\/])/g,\"$1\")},ct=new Set([\"!\",\"?\",\"+\",\"*\",\"@\"]),lt=t=>ct.has(t),ht=\"(?!\\\\.)\",pt=new Set([\"[\",\".\"]),ft=new Set([\"..\",\".\"]),dt=new Set(\"().*{}+?[]^$\\\\!\"),gt=\"[^/]\",mt=gt+\"*?\",yt=gt+\"+?\";class vt{type;#t;#e;#n=!1;#r=[];#o;#i;#s;#a=!1;#u;#c;#l=!1;constructor(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.type=t,t&&(this.#e=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#u=this.#t===this?n:this.#t.#u,this.#s=this.#t===this?[]:this.#t.#s,\"!\"!==t||this.#t.#a||this.#s.push(this),this.#i=this.#o?this.#o.#r.length:0}get hasMagic(){if(void 0!==this.#e)return this.#e;for(const t of this.#r)if(\"string\"!=typeof t&&(t.type||t.hasMagic))return this.#e=!0;return this.#e}toString(){return void 0!==this.#c?this.#c:this.type?this.#c=this.type+\"(\"+this.#r.map((t=>String(t))).join(\"|\")+\")\":this.#c=this.#r.map((t=>String(t))).join(\"\")}#h(){if(this!==this.#t)throw new Error(\"should only call on root\");if(this.#a)return this;let t;for(this.toString(),this.#a=!0;t=this.#s.pop();){if(\"!\"!==t.type)continue;let e=t,n=e.#o;for(;n;){for(let r=e.#i+1;!n.type&&r\"string\"==typeof t?t:t.toJSON())):[this.type,...this.#r.map((t=>t.toJSON()))];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&\"!\"===this.#o?.type)&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(0===this.#i)return!0;const t=this.#o;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:{};const n=new vt(null,void 0,e);return vt.#p(t,n,0,e),n}toMMPattern(){if(this!==this.#t)return this.#t.toMMPattern();const t=this.toString(),[e,n,r,o]=this.toRegExpSource();if(!(r||this.#e||this.#u.nocase&&!this.#u.nocaseMagicOnly&&t.toUpperCase()!==t.toLowerCase()))return n;const i=(this.#u.nocase?\"i\":\"\")+(o?\"u\":\"\");return Object.assign(new RegExp(`^${e}$`,i),{_src:e,_glob:t})}get options(){return this.#u}toRegExpSource(t){const e=t??!!this.#u.dot;if(this.#t===this&&this.#h(),!this.type){const n=this.isStart()&&this.isEnd(),r=this.#r.map((e=>{const[r,o,i,s]=\"string\"==typeof e?vt.#f(e,this.#e,n):e.toRegExpSource(t);return this.#e=this.#e||i,this.#n=this.#n||s,r})).join(\"\");let o=\"\";if(this.isStart()&&\"string\"==typeof this.#r[0]&&(1!==this.#r.length||!ft.has(this.#r[0]))){const n=pt,i=e&&n.has(r.charAt(0))||r.startsWith(\"\\\\.\")&&n.has(r.charAt(2))||r.startsWith(\"\\\\.\\\\.\")&&n.has(r.charAt(4)),s=!e&&!t&&n.has(r.charAt(0));o=i?\"(?!(?:^|/)\\\\.\\\\.?(?:$|/))\":s?ht:\"\"}let i=\"\";return this.isEnd()&&this.#t.#a&&\"!\"===this.#o?.type&&(i=\"(?:$|\\\\/)\"),[o+r+i,ut(r),this.#e=!!this.#e,this.#n]}const n=\"*\"===this.type||\"+\"===this.type,r=\"!\"===this.type?\"(?:(?!(?:\":\"(?:\";let o=this.#d(e);if(this.isStart()&&this.isEnd()&&!o&&\"!\"!==this.type){const t=this.toString();return this.#r=[t],this.type=null,this.#e=void 0,[t,ut(this.toString()),!1,!1]}let i=!n||t||e?\"\":this.#d(!0);i===o&&(i=\"\"),i&&(o=`(?:${o})(?:${i})*?`);let s=\"\";return s=\"!\"===this.type&&this.#l?(this.isStart()&&!e?ht:\"\")+yt:r+o+(\"!\"===this.type?\"))\"+(!this.isStart()||e||t?\"\":ht)+mt+\")\":\"@\"===this.type?\")\":\"?\"===this.type?\")?\":\"+\"===this.type&&i?\")\":\"*\"===this.type&&i?\")?\":`)${this.type}`),[s,ut(o),this.#e=!!this.#e,this.#n]}#d(t){return this.#r.map((e=>{if(\"string\"==typeof e)throw new Error(\"string type in extglob ast??\");const[n,r,o,i]=e.toRegExpSource(t);return this.#n=this.#n||i,n})).filter((t=>!(this.isStart()&&this.isEnd()&&!t))).join(\"|\")}static#f(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=!1,o=\"\",i=!1;for(let s=0;s2&&void 0!==arguments[2]?arguments[2]:{};return rt(e),!(!n.nocomment&&\"#\"===e.charAt(0))&&new Gt(e,n).match(t)},wt=/^\\*+([^+@!?\\*\\[\\(]*)$/,xt=t=>e=>!e.startsWith(\".\")&&e.endsWith(t),Nt=t=>e=>e.endsWith(t),Pt=t=>(t=t.toLowerCase(),e=>!e.startsWith(\".\")&&e.toLowerCase().endsWith(t)),At=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),Ot=/^\\*+\\.\\*+$/,Et=t=>!t.startsWith(\".\")&&t.includes(\".\"),Tt=t=>\".\"!==t&&\"..\"!==t&&t.includes(\".\"),jt=/^\\.\\*+$/,St=t=>\".\"!==t&&\"..\"!==t&&t.startsWith(\".\"),$t=/^\\*+$/,Ct=t=>0!==t.length&&!t.startsWith(\".\"),It=t=>0!==t.length&&\".\"!==t&&\"..\"!==t,kt=/^\\?+([^+@!?\\*\\[\\(]*)?$/,Rt=t=>{let[e,n=\"\"]=t;const r=Ut([e]);return n?(n=n.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(n)):r},Lt=t=>{let[e,n=\"\"]=t;const r=Ft([e]);return n?(n=n.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(n)):r},_t=t=>{let[e,n=\"\"]=t;const r=Ft([e]);return n?t=>r(t)&&t.endsWith(n):r},Mt=t=>{let[e,n=\"\"]=t;const r=Ut([e]);return n?t=>r(t)&&t.endsWith(n):r},Ut=t=>{let[e]=t;const n=e.length;return t=>t.length===n&&!t.startsWith(\".\")},Ft=t=>{let[e]=t;const n=e.length;return t=>t.length===n&&\".\"!==t&&\"..\"!==t},Dt=\"object\"==typeof process&&process?\"object\"==typeof process.env&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:\"posix\";bt.sep=\"win32\"===Dt?\"\\\\\":\"/\";const Bt=Symbol(\"globstar **\");bt.GLOBSTAR=Bt,bt.filter=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n=>bt(n,t,e)};const Wt=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.assign({},t,e)};bt.defaults=t=>{if(!t||\"object\"!=typeof t||!Object.keys(t).length)return bt;const e=bt;return Object.assign((function(n,r){return e(n,r,Wt(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}))}),{Minimatch:class extends e.Minimatch{constructor(e){super(e,Wt(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}))}static defaults(n){return e.defaults(Wt(t,n)).Minimatch}},AST:class extends e.AST{constructor(e,n){super(e,n,Wt(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}))}static fromGlob(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.AST.fromGlob(n,Wt(t,r))}},unescape:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.unescape(n,Wt(t,r))},escape:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.escape(n,Wt(t,r))},filter:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.filter(n,Wt(t,r))},defaults:n=>e.defaults(Wt(t,n)),makeRe:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.makeRe(n,Wt(t,r))},braceExpand:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.braceExpand(n,Wt(t,r))},match:function(n,r){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return e.match(n,r,Wt(t,o))},sep:e.sep,GLOBSTAR:Bt})};const Vt=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return rt(t),e.nobrace||!/\\{(?:(?!\\{).)*\\}/.test(t)?[t]:nt(t)};bt.braceExpand=Vt,bt.makeRe=function(t){return new Gt(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).makeRe()},bt.match=function(t,e){const n=new Gt(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{});return t=t.filter((t=>n.match(t))),n.options.nonull&&!t.length&&t.push(e),t};const zt=/[?*]|[+@!]\\(.*?\\)|\\[|\\]/;class Gt{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};rt(t),e=e||{},this.options=e,this.pattern=t,this.platform=e.platform||Dt,this.isWindows=\"win32\"===this.platform,this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||!1===e.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\\\/g,\"/\")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==e.windowsNoMagicRoot?e.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if(\"string\"!=typeof e)return!0;return!1}debug(){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&\"#\"===t.charAt(0))return void(this.comment=!0);if(!t)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=function(){return console.error(...arguments)}),this.debug(this.pattern,this.globSet);const n=this.globSet.map((t=>this.slashSplit(t)));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map(((t,e,n)=>{if(this.isWindows&&this.windowsNoMagicRoot){const e=!(\"\"!==t[0]||\"\"!==t[1]||\"?\"!==t[2]&&zt.test(t[2])||zt.test(t[3])),n=/^[a-z]:/i.test(t[0]);if(e)return[...t.slice(0,4),...t.slice(4).map((t=>this.parse(t)))];if(n)return[t[0],...t.slice(1).map((t=>this.parse(t)))]}return t.map((t=>this.parse(t)))}));if(this.debug(this.pattern,r),this.set=r.filter((t=>-1===t.indexOf(!1))),this.isWindows)for(let t=0;t=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):t=e>=1?this.levelOneOptimize(t):this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map((t=>{let e=-1;for(;-1!==(e=t.indexOf(\"**\",e+1));){let n=e;for(;\"**\"===t[n+1];)n++;n!==e&&t.splice(e,n-e)}return t}))}levelOneOptimize(t){return t.map((t=>0===(t=t.reduce(((t,e)=>{const n=t[t.length-1];return\"**\"===e&&\"**\"===n?t:\"..\"===e&&n&&\"..\"!==n&&\".\"!==n&&\"**\"!==n?(t.pop(),t):(t.push(e),t)}),[])).length?[\"\"]:t))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let n=1;nr&&n.splice(r+1,o-r);let i=n[r+1];const s=n[r+2],a=n[r+3];if(\"..\"!==i)continue;if(!s||\".\"===s||\"..\"===s||!a||\".\"===a||\"..\"===a)continue;e=!0,n.splice(r,1);const u=n.slice(0);u[r]=\"**\",t.push(u),r--}if(!this.preserveMultipleSlashes){for(let t=1;tt.length))}partsMatch(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=0,o=0,i=[],s=\"\";for(;r2&&void 0!==arguments[2]&&arguments[2];const r=this.options;if(this.isWindows){const n=\"string\"==typeof t[0]&&/^[a-z]:$/i.test(t[0]),r=!n&&\"\"===t[0]&&\"\"===t[1]&&\"?\"===t[2]&&/^[a-z]:$/i.test(t[3]),o=\"string\"==typeof e[0]&&/^[a-z]:$/i.test(e[0]),i=r?3:n?0:void 0,s=!o&&\"\"===e[0]&&\"\"===e[1]&&\"?\"===e[2]&&\"string\"==typeof e[3]&&/^[a-z]:$/i.test(e[3])?3:o?0:void 0;if(\"number\"==typeof i&&\"number\"==typeof s){const[n,r]=[t[i],e[s]];n.toLowerCase()===r.toLowerCase()&&(e[s]=n,s>i?e=e.slice(s):i>s&&(t=t.slice(i)))}}const{optimizationLevel:o=1}=this.options;o>=2&&(t=this.levelTwoFileOptimize(t)),this.debug(\"matchOne\",this,{file:t,pattern:e}),this.debug(\"matchOne\",t.length,e.length);for(var i=0,s=0,a=t.length,u=e.length;i>> no match, partial?\",t,h,e,p),h!==a))}let o;if(\"string\"==typeof c?(o=l===c,this.debug(\"string match\",c,l,o)):(o=c.test(l),this.debug(\"pattern match\",c,l,o)),!o)return!1}if(i===a&&s===u)return!0;if(i===a)return n;if(s===u)return i===a-1&&\"\"===t[i];throw new Error(\"wtf?\")}braceExpand(){return Vt(this.pattern,this.options)}parse(t){rt(t);const e=this.options;if(\"**\"===t)return Bt;if(\"\"===t)return\"\";let n,r=null;(n=t.match($t))?r=e.dot?It:Ct:(n=t.match(wt))?r=(e.nocase?e.dot?At:Pt:e.dot?Nt:xt)(n[1]):(n=t.match(kt))?r=(e.nocase?e.dot?Lt:Rt:e.dot?_t:Mt)(n):(n=t.match(Ot))?r=e.dot?Tt:Et:(n=t.match(jt))&&(r=St);const o=vt.fromGlob(t,this.options).toMMPattern();return r&&\"object\"==typeof o&&Reflect.defineProperty(o,\"test\",{value:r}),o}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;const t=this.set;if(!t.length)return this.regexp=!1,this.regexp;const e=this.options,n=e.noglobstar?\"[^/]*?\":e.dot?\"(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?\":\"(?:(?!(?:\\\\/|^)\\\\.).)*?\",r=new Set(e.nocase?[\"i\"]:[]);let o=t.map((t=>{const e=t.map((t=>{if(t instanceof RegExp)for(const e of t.flags.split(\"\"))r.add(e);return\"string\"==typeof t?t.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"):t===Bt?Bt:t._src}));return e.forEach(((t,r)=>{const o=e[r+1],i=e[r-1];t===Bt&&i!==Bt&&(void 0===i?void 0!==o&&o!==Bt?e[r+1]=\"(?:\\\\/|\"+n+\"\\\\/)?\"+o:e[r]=n:void 0===o?e[r-1]=i+\"(?:\\\\/|\"+n+\")?\":o!==Bt&&(e[r-1]=i+\"(?:\\\\/|\\\\/\"+n+\"\\\\/)\"+o,e[r+1]=Bt))})),e.filter((t=>t!==Bt)).join(\"/\")})).join(\"|\");const[i,s]=t.length>1?[\"(?:\",\")\"]:[\"\",\"\"];o=\"^\"+i+o+s+\"$\",this.negate&&(o=\"^(?!\"+o+\").+$\");try{this.regexp=new RegExp(o,[...r].join(\"\"))}catch(t){this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split(\"/\"):this.isWindows&&/^\\/\\/[^\\/]+/.test(t)?[\"\",...t.split(/\\/+/)]:t.split(/\\/+/)}match(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.partial;if(this.debug(\"match\",t,this.pattern),this.comment)return!1;if(this.empty)return\"\"===t;if(\"/\"===t&&e)return!0;const n=this.options;this.isWindows&&(t=t.split(\"\\\\\").join(\"/\"));const r=this.slashSplit(t);this.debug(this.pattern,\"split\",r);const o=this.set;this.debug(this.pattern,\"set\",o);let i=r[r.length-1];if(!i)for(let t=r.length-2;!i&&t>=0;t--)i=r[t];for(let t=0;t1&&void 0!==arguments[1]?arguments[1]:\"\"}Invalid response: ${t.status} ${t.statusText}`);return e.status=t.status,e.response=t,e}function Ht(t,e){const{status:n}=e;if(401===n&&t.digest)return e;if(n>=400)throw qt(e);return e}function Xt(t,e){return arguments.length>2&&void 0!==arguments[2]&&arguments[2]?{data:e,headers:t.headers?V(t.headers):{},status:t.status,statusText:t.statusText}:e}bt.AST=vt,bt.Minimatch=Gt,bt.escape=function(t){let{windowsPathsNoEscape:e=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e?t.replace(/[?*()[\\]]/g,\"[$&]\"):t.replace(/[?*()[\\]\\\\]/g,\"\\\\$&\")},bt.unescape=ut;const Zt=(Yt=function(t,e,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const o=tt({url:y(t.remoteURL,f(e)),method:\"COPY\",headers:{Destination:y(t.remoteURL,f(n)),Overwrite:!1===r.overwrite?\"F\":\"T\",Depth:r.shallow?\"0\":\"infinity\"}},t,r);return s=function(e){Ht(t,e)},(i=Q(o,t))&&i.then||(i=Promise.resolve(i)),s?i.then(s):i;var i,s},function(){for(var t=[],e=0;e2&&void 0!==arguments[2]?arguments[2]:te.Original;const r=Qt().get(t,e);return\"array\"===n&&!1===Array.isArray(r)?[r]:\"object\"===n&&Array.isArray(r)?r[0]:r}function ne(t){return new Promise((e=>{e(function(t){const{multistatus:e}=t;if(\"\"===e)return{multistatus:{response:[]}};if(!e)throw new Error(\"Invalid response: No root multistatus found\");const n={multistatus:Array.isArray(e)?e[0]:e};return Qt().set(n,\"multistatus.response\",ee(n,\"multistatus.response\",te.Array)),Qt().set(n,\"multistatus.response\",Qt().get(n,\"multistatus.response\").map((t=>function(t){const e=Object.assign({},t);return e.status?Qt().set(e,\"status\",ee(e,\"status\",te.Object)):(Qt().set(e,\"propstat\",ee(e,\"propstat\",te.Object)),Qt().set(e,\"propstat.prop\",ee(e,\"propstat.prop\",te.Object))),e}(t)))),n}(new Kt.XMLParser({removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1}}).parse(t)))}))}function re(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const{getlastmodified:r=null,getcontentlength:o=\"0\",resourcetype:i=null,getcontenttype:s=null,getetag:a=null}=t,u=i&&\"object\"==typeof i&&void 0!==i.collection?\"directory\":\"file\",c={filename:e,basename:l().basename(e),lastmod:r,size:parseInt(o,10),type:u,etag:\"string\"==typeof a?a.replace(/\"/g,\"\"):null};return\"file\"===u&&(c.mime=s&&\"string\"==typeof s?s.split(\";\")[0]:\"\"),n&&(void 0!==t.displayname&&(t.displayname=String(t.displayname)),c.props=t),c}function oe(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=null;try{t.multistatus.response[0].propstat&&(r=t.multistatus.response[0])}catch(t){}if(!r)throw new Error(\"Failed getting item stat: bad response\");const{propstat:{prop:o,status:i}}=r,[s,a,u]=i.split(\" \",3),c=parseInt(a,10);if(c>=400){const t=new Error(`Invalid response: ${c} ${u}`);throw t.status=c,t}return re(o,g(e),n)}function ie(t){switch(String(t)){case\"-3\":return\"unlimited\";case\"-2\":case\"-1\":return\"unknown\";default:return parseInt(String(t),10)}}function se(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}const ae=function(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const{details:r=!1}=n,o=tt({url:y(t.remoteURL,f(e)),method:\"PROPFIND\",headers:{Accept:\"text/plain,application/xml\",Depth:\"0\"}},t,n);return se(Q(o,t),(function(n){return Ht(t,n),se(n.text(),(function(t){return se(ne(t),(function(t){const o=oe(t,e,r);return Xt(n,o,r)}))}))}))}));function ue(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}const ce=le((function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=function(t){if(!t||\"/\"===t)return[];let e=t;const n=[];do{n.push(e),e=l().dirname(e)}while(e&&\"/\"!==e);return n}(g(e));r.sort(((t,e)=>t.length>e.length?1:e.length>t.length?-1:0));let o=!1;return function(t,e,n){if(\"function\"==typeof t[fe]){var r,o,i,s=t[fe]();function l(t){try{for(;!(r=s.next()).done;)if((t=e(r.value))&&t.then){if(!me(t))return void t.then(l,i||(i=de.bind(null,o=new ge,2)));t=t.v}o?de(o,1,t):o=t}catch(t){de(o||(o=new ge),2,t)}}if(l(),s.return){var a=function(t){try{r.done||s.return()}catch(t){}return t};if(o&&o.then)return o.then(a,(function(t){throw a(t)}));a()}return o}if(!(\"length\"in t))throw new TypeError(\"Object is not iterable\");for(var u=[],c=0;c2&&void 0!==arguments[2]?arguments[2]:{};if(!0===n.recursive)return ce(t,e,n);const r=tt({url:y(t.remoteURL,(o=f(e),o.endsWith(\"/\")?o:o+\"/\")),method:\"MKCOL\"},t,n);var o;return ue(Q(r,t),(function(e){Ht(t,e)}))}));var ve=n(388),be=n.n(ve);const we=function(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r={};if(\"object\"==typeof n.range&&\"number\"==typeof n.range.start){let t=`bytes=${n.range.start}-`;\"number\"==typeof n.range.end&&(t=`${t}${n.range.end}`),r.Range=t}const o=tt({url:y(t.remoteURL,f(e)),method:\"GET\",headers:r},t,n);return s=function(e){if(Ht(t,e),r.Range&&206!==e.status){const t=new Error(`Invalid response code for partial request: ${e.status}`);throw t.status=e.status,t}return n.callback&&setTimeout((()=>{n.callback(e)}),0),e.body},(i=Q(o,t))&&i.then||(i=Promise.resolve(i)),s?i.then(s):i;var i,s})),xe=()=>{},Ne=function(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=tt({url:y(t.remoteURL,f(e)),method:\"DELETE\"},t,n);return i=function(e){Ht(t,e)},(o=Q(r,t))&&o.then||(o=Promise.resolve(o)),i?o.then(i):o;var o,i})),Ae=function(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};return function(r,o){try{var i=(s=ae(t,e,n),a=function(){return!0},u?a?a(s):s:(s&&s.then||(s=Promise.resolve(s)),a?s.then(a):s))}catch(t){return o(t)}var s,a,u;return i&&i.then?i.then(void 0,o):i}(0,(function(t){if(404===t.status)return!1;throw t}))}));function Oe(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}const Ee=function(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=tt({url:y(t.remoteURL,f(e),\"/\"),method:\"PROPFIND\",headers:{Accept:\"text/plain,application/xml\",Depth:n.deep?\"infinity\":\"1\"}},t,n);return Oe(Q(r,t),(function(r){return Ht(t,r),Oe(r.text(),(function(o){if(!o)throw new Error(\"Failed parsing directory contents: Empty response\");return Oe(ne(o),(function(o){const i=d(e);let s=function(t,e,n){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];const i=l().join(e,\"/\"),{multistatus:{response:s}}=t,a=s.map((t=>{const e=function(t){try{return t.replace(/^https?:\\/\\/[^\\/]+/,\"\")}catch(t){throw new u(t,\"Failed normalising HREF\")}}(t.href),{propstat:{prop:n}}=t;return re(n,\"/\"===i?decodeURIComponent(g(e)):g(l().relative(decodeURIComponent(i),decodeURIComponent(e))),r)}));return o?a:a.filter((t=>t.basename&&(\"file\"===t.type||t.filename!==n.replace(/\\/$/,\"\"))))}(o,d(t.remoteBasePath||t.remotePath),i,n.details,n.includeSelf);return n.glob&&(s=function(t,e){return t.filter((t=>bt(t.filename,e,{matchBase:!0})))}(s,n.glob)),Xt(r,s,n.details)}))}))}))}));function Te(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=tt({url:y(t.remoteURL,f(e)),method:\"GET\",headers:{Accept:\"text/plain\"},transformResponse:[Ie]},t,n);return Se(Q(r,t),(function(e){return Ht(t,e),Se(e.text(),(function(t){return Xt(e,t,n.details)}))}))}));function Se(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}const $e=Te((function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=tt({url:y(t.remoteURL,f(e)),method:\"GET\"},t,n);return Se(Q(r,t),(function(e){let r;return Ht(t,e),function(t,e){var n=t();return n&&n.then?n.then(e):e()}((function(){return Se(e.arrayBuffer(),(function(t){r=t}))}),(function(){return Xt(e,r,n.details)}))}))})),Ce=Te((function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{format:r=\"binary\"}=n;if(\"binary\"!==r&&\"text\"!==r)throw new u({info:{code:I.InvalidOutputFormat}},`Invalid output format: ${r}`);return\"text\"===r?je(t,e,n):$e(t,e,n)})),Ie=t=>t;function ke(t){return new Kt.XMLBuilder({attributeNamePrefix:\"@_\",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(Re({lockinfo:{\"@_xmlns:d\":\"DAV:\",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:t}}},\"d\"))}function Re(t,e){const n={...t};for(const t in n)n.hasOwnProperty(t)&&(n[t]&&\"object\"==typeof n[t]&&-1===t.indexOf(\":\")?(n[`${e}:${t}`]=Re(n[t],e),delete n[t]):!1===/^@_/.test(t)&&(n[`${e}:${t}`]=n[t],delete n[t]));return n}function Le(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}function _e(t){return function(){for(var e=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const o=tt({url:y(t.remoteURL,f(e)),method:\"UNLOCK\",headers:{\"Lock-Token\":n}},t,r);return Le(Q(o,t),(function(e){if(Ht(t,e),204!==e.status&&200!==e.status)throw qt(e)}))})),Ue=_e((function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{refreshToken:r,timeout:o=Fe}=n,i={Accept:\"text/plain,application/xml\",Timeout:o};r&&(i.If=r);const s=tt({url:y(t.remoteURL,f(e)),method:\"LOCK\",headers:i,data:ke(t.contactHref)},t,n);return Le(Q(s,t),(function(e){return Ht(t,e),Le(e.text(),(function(t){const n=(i=t,new Kt.XMLParser({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(i)),r=Qt().get(n,\"prop.lockdiscovery.activelock.locktoken.href\"),o=Qt().get(n,\"prop.lockdiscovery.activelock.timeout\");var i;if(!r)throw qt(e,\"No lock token received: \");return{token:r,serverTimeout:o}}))}))})),Fe=\"Infinite, Second-4100000000\";function De(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}const Be=function(t){return function(){for(var e=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:{};const n=e.path||\"/\",r=tt({url:y(t.remoteURL,n),method:\"PROPFIND\",headers:{Accept:\"text/plain,application/xml\",Depth:\"0\"}},t,e);return De(Q(r,t),(function(n){return Ht(t,n),De(n.text(),(function(t){return De(ne(t),(function(t){const r=function(t){try{const[e]=t.multistatus.response,{propstat:{prop:{\"quota-used-bytes\":n,\"quota-available-bytes\":r}}}=e;return void 0!==n&&void 0!==r?{used:parseInt(String(n),10),available:ie(r)}:null}catch(t){}return null}(t);return Xt(n,r,e.details)}))}))}))}));function We(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}const Ve=function(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const{details:r=!1}=n,o=tt({url:y(t.remoteURL,f(e)),method:\"SEARCH\",headers:{Accept:\"text/plain,application/xml\",\"Content-Type\":t.headers[\"Content-Type\"]||\"application/xml; charset=utf-8\"}},t,n);return We(Q(o,t),(function(n){return Ht(t,n),We(n.text(),(function(t){return We(ne(t),(function(t){const o=function(t,e,n){const r={truncated:!1,results:[]};return r.truncated=t.multistatus.response.some((t=>\"507\"===(t.status||t.propstat?.status).split(\" \",3)?.[1]&&t.href.replace(/\\/$/,\"\").endsWith(f(e).replace(/\\/$/,\"\")))),t.multistatus.response.forEach((t=>{if(void 0===t.propstat)return;const e=t.href.split(\"/\").map(decodeURIComponent).join(\"/\");r.results.push(re(t.propstat.prop,e,n))})),r}(t,e,r);return Xt(n,o,r)}))}))}))})),ze=function(t){return function(){for(var e=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const o=tt({url:y(t.remoteURL,f(e)),method:\"MOVE\",headers:{Destination:y(t.remoteURL,f(n)),Overwrite:!1===r.overwrite?\"F\":\"T\"}},t,r);return s=function(e){Ht(t,e)},(i=Q(o,t))&&i.then||(i=Promise.resolve(i)),s?i.then(s):i;var i,s}));var Ge=n(172);const qe=function(t){return function(){for(var e=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const{contentLength:o=!0,overwrite:i=!0}=r,s={\"Content-Type\":\"application/octet-stream\"};!1===o||(s[\"Content-Length\"]=\"number\"==typeof o?`${o}`:`${function(t){if(H(t))return t.byteLength;if(X(t))return t.length;if(\"string\"==typeof t)return(0,Ge.d)(t);throw new u({info:{code:I.DataTypeNoLength}},\"Cannot calculate data length: Invalid type\")}(n)}`),i||(s[\"If-None-Match\"]=\"*\");const a=tt({url:y(t.remoteURL,f(e)),method:\"PUT\",headers:s,data:n},t,r);return l=function(e){try{Ht(t,e)}catch(t){const e=t;if(412!==e.status||i)throw e;return!1}return!0},(c=Q(a,t))&&c.then||(c=Promise.resolve(c)),l?c.then(l):c;var c,l})),He=function(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=tt({url:y(t.remoteURL,f(e)),method:\"OPTIONS\"},t,n);return i=function(e){try{Ht(t,e)}catch(t){throw t}return{compliance:(e.headers.get(\"DAV\")??\"\").split(\",\").map((t=>t.trim())),server:e.headers.get(\"Server\")??\"\"}},(o=Q(r,t))&&o.then||(o=Promise.resolve(o)),i?o.then(i):o;var o,i}));function Xe(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}const Ze=Je((function(t,e,n,r,o){let i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(n>r||n<0)throw new u({info:{code:I.InvalidUpdateRange}},`Invalid update range ${n} for partial update`);const s={\"Content-Type\":\"application/octet-stream\",\"Content-Length\":\"\"+(r-n+1),\"Content-Range\":`bytes ${n}-${r}/*`},a=tt({url:y(t.remoteURL,f(e)),method:\"PUT\",headers:s,data:o},t,i);return Xe(Q(a,t),(function(e){Ht(t,e)}))}));function Ye(t,e){var n=t();return n&&n.then?n.then(e):e(n)}const Ke=Je((function(t,e,n,r,o){let i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(n>r||n<0)throw new u({info:{code:I.InvalidUpdateRange}},`Invalid update range ${n} for partial update`);const s={\"Content-Type\":\"application/x-sabredav-partialupdate\",\"Content-Length\":\"\"+(r-n+1),\"X-Update-Range\":`bytes=${n}-${r}`},a=tt({url:y(t.remoteURL,f(e)),method:\"PATCH\",headers:s,data:o},t,i);return Xe(Q(a,t),(function(e){Ht(t,e)}))}));function Je(t){return function(){for(var e=[],n=0;n5&&void 0!==arguments[5]?arguments[5]:{};return Xe(He(t,e,i),(function(s){let a=!1;return Ye((function(){if(s.compliance.includes(\"sabredav-partialupdate\"))return Xe(Ke(t,e,n,r,o,i),(function(t){return a=!0,t}))}),(function(c){let l=!1;return a?c:Ye((function(){if(s.server.includes(\"Apache\")&&s.compliance.includes(\"\"))return Xe(Ze(t,e,n,r,o,i),(function(t){return l=!0,t}))}),(function(t){if(l)return t;throw new u({info:{code:I.NotSupported}},\"Not supported\")}))}))}))})),tn=\"https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md\";function en(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{authType:n=null,remoteBasePath:r,contactHref:o=tn,ha1:i,headers:s={},httpAgent:a,httpsAgent:c,password:l,token:h,username:p,withCredentials:d}=e;let g=n;g||(g=p||l?C.Password:C.None);const v={authType:g,remoteBasePath:r,contactHref:o,ha1:i,headers:Object.assign({},s),httpAgent:a,httpsAgent:c,password:l,remotePath:m(t),remoteURL:t,token:h,username:p,withCredentials:d};return k(v,p,l,h,i),{copyFile:(t,e,n)=>Zt(v,t,e,n),createDirectory:(t,e)=>ye(v,t,e),createReadStream:(t,e)=>function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=new(0,be().PassThrough);return we(t,e,n).then((t=>{t.pipe(r)})).catch((t=>{r.emit(\"error\",t)})),r}(v,t,e),createWriteStream:(t,e,n)=>function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:xe;const o=new(0,be().PassThrough),i={};!1===n.overwrite&&(i[\"If-None-Match\"]=\"*\");const s=tt({url:y(t.remoteURL,f(e)),method:\"PUT\",headers:i,data:o,maxRedirects:0},t,n);return Q(s,t).then((e=>Ht(t,e))).then((t=>{setTimeout((()=>{r(t)}),0)})).catch((t=>{o.emit(\"error\",t)})),o}(v,t,e,n),customRequest:(t,e)=>Ne(v,t,e),deleteFile:(t,e)=>Pe(v,t,e),exists:(t,e)=>Ae(v,t,e),getDirectoryContents:(t,e)=>Ee(v,t,e),getFileContents:(t,e)=>Ce(v,t,e),getFileDownloadLink:t=>function(t,e){let n=y(t.remoteURL,f(e));const r=/^https:/i.test(n)?\"https\":\"http\";switch(t.authType){case C.None:break;case C.Password:{const e=O(t.headers.Authorization.replace(/^Basic /i,\"\").trim());n=n.replace(/^https?:\\/\\//,`${r}://${e}@`);break}default:throw new u({info:{code:I.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return n}(v,t),getFileUploadLink:t=>function(t,e){let n=`${y(t.remoteURL,f(e))}?Content-Type=application/octet-stream`;const r=/^https:/i.test(n)?\"https\":\"http\";switch(t.authType){case C.None:break;case C.Password:{const e=O(t.headers.Authorization.replace(/^Basic /i,\"\").trim());n=n.replace(/^https?:\\/\\//,`${r}://${e}@`);break}default:throw new u({info:{code:I.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return n}(v,t),getHeaders:()=>Object.assign({},v.headers),getQuota:t=>Be(v,t),lock:(t,e)=>Ue(v,t,e),moveFile:(t,e,n)=>ze(v,t,e,n),putFileContents:(t,e,n)=>qe(v,t,e,n),partialUpdateFileContents:(t,e,n,r,o)=>Qe(v,t,e,n,r,o),getDAVCompliance:t=>He(v,t),search:(t,e)=>Ve(v,t,e),setHeaders:t=>{v.headers=Object.assign({},t)},stat:(t,e)=>ae(v,t,e),unlock:(t,e,n)=>Me(v,t,e,n)}}var nn=r.hT,rn=r.O4,on=r.Kd,sn=r.YK,an=r.UU,un=r.Gu,cn=r.ky,ln=r.h4,hn=r.ch,pn=r.hq,fn=r.i5;export{nn as AuthType,rn as ErrorCode,on as Request,sn as Response,an as createClient,un as getPatcher,cn as parseStat,ln as parseXML,hn as prepareFileFromProps,pn as processResponsePayload,fn as translateDiskSpace};","import { loadState } from \"@nextcloud/initial-state\";\nfunction isPublicShare() {\n return loadState(\"files_sharing\", \"isPublic\", null) ?? document.querySelector(\n 'input#isPublic[type=\"hidden\"][name=\"isPublic\"][value=\"1\"]'\n ) !== null;\n}\nfunction getSharingToken() {\n return loadState(\"files_sharing\", \"sharingToken\", null) ?? document.querySelector('input#sharingToken[type=\"hidden\"]')?.value ?? null;\n}\nexport {\n getSharingToken,\n isPublicShare\n};\n","import { join, basename, extname, dirname } from \"path\";\nimport { encodePath } from \"@nextcloud/paths\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { CancelablePromise } from \"cancelable-promise\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/files\").detectUser().build();\nvar Permission = /* @__PURE__ */ ((Permission2) => {\n Permission2[Permission2[\"NONE\"] = 0] = \"NONE\";\n Permission2[Permission2[\"CREATE\"] = 4] = \"CREATE\";\n Permission2[Permission2[\"READ\"] = 1] = \"READ\";\n Permission2[Permission2[\"UPDATE\"] = 2] = \"UPDATE\";\n Permission2[Permission2[\"DELETE\"] = 8] = \"DELETE\";\n Permission2[Permission2[\"SHARE\"] = 16] = \"SHARE\";\n Permission2[Permission2[\"ALL\"] = 31] = \"ALL\";\n return Permission2;\n})(Permission || {});\nvar FileType = /* @__PURE__ */ ((FileType2) => {\n FileType2[\"Folder\"] = \"folder\";\n FileType2[\"File\"] = \"file\";\n return FileType2;\n})(FileType || {});\nconst isDavResource = function(source, davService) {\n return source.match(davService) !== null;\n};\nconst validateData = (data, davService) => {\n if (data.id && typeof data.id !== \"number\") {\n throw new Error(\"Invalid id type of value\");\n }\n if (!data.source) {\n throw new Error(\"Missing mandatory source\");\n }\n try {\n new URL(data.source);\n } catch (e) {\n throw new Error(\"Invalid source format, source must be a valid URL\");\n }\n if (!data.source.startsWith(\"http\")) {\n throw new Error(\"Invalid source format, only http(s) is supported\");\n }\n if (data.displayname && typeof data.displayname !== \"string\") {\n throw new Error(\"Invalid displayname type\");\n }\n if (data.mtime && !(data.mtime instanceof Date)) {\n throw new Error(\"Invalid mtime type\");\n }\n if (data.crtime && !(data.crtime instanceof Date)) {\n throw new Error(\"Invalid crtime type\");\n }\n if (!data.mime || typeof data.mime !== \"string\" || !data.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi)) {\n throw new Error(\"Missing or invalid mandatory mime\");\n }\n if (\"size\" in data && typeof data.size !== \"number\" && data.size !== void 0) {\n throw new Error(\"Invalid size type\");\n }\n if (\"permissions\" in data && data.permissions !== void 0 && !(typeof data.permissions === \"number\" && data.permissions >= Permission.NONE && data.permissions <= Permission.ALL)) {\n throw new Error(\"Invalid permissions\");\n }\n if (data.owner && data.owner !== null && typeof data.owner !== \"string\") {\n throw new Error(\"Invalid owner type\");\n }\n if (data.attributes && typeof data.attributes !== \"object\") {\n throw new Error(\"Invalid attributes type\");\n }\n if (data.root && typeof data.root !== \"string\") {\n throw new Error(\"Invalid root type\");\n }\n if (data.root && !data.root.startsWith(\"/\")) {\n throw new Error(\"Root must start with a leading slash\");\n }\n if (data.root && !data.source.includes(data.root)) {\n throw new Error(\"Root must be part of the source\");\n }\n if (data.root && isDavResource(data.source, davService)) {\n const service = data.source.match(davService)[0];\n if (!data.source.includes(join(service, data.root))) {\n throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n }\n }\n if (data.status && !Object.values(NodeStatus).includes(data.status)) {\n throw new Error(\"Status must be a valid NodeStatus\");\n }\n};\nvar NodeStatus = /* @__PURE__ */ ((NodeStatus2) => {\n NodeStatus2[\"NEW\"] = \"new\";\n NodeStatus2[\"FAILED\"] = \"failed\";\n NodeStatus2[\"LOADING\"] = \"loading\";\n NodeStatus2[\"LOCKED\"] = \"locked\";\n return NodeStatus2;\n})(NodeStatus || {});\nclass Node {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n readonlyAttributes = Object.entries(Object.getOwnPropertyDescriptors(Node.prototype)).filter((e) => typeof e[1].get === \"function\" && e[0] !== \"__proto__\").map((e) => e[0]);\n handler = {\n set: (target, prop, value) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.set(target, prop, value);\n },\n deleteProperty: (target, prop) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.deleteProperty(target, prop);\n },\n // TODO: This is deprecated and only needed for files v3\n get: (target, prop, receiver) => {\n if (this.readonlyAttributes.includes(prop)) {\n logger.warn(`Accessing \"Node.attributes.${prop}\" is deprecated, access it directly on the Node instance.`);\n return Reflect.get(this, prop);\n }\n return Reflect.get(target, prop, receiver);\n }\n };\n constructor(data, davService) {\n validateData(data, davService || this._knownDavService);\n this._data = {\n // TODO: Remove with next major release, this is just for compatibility\n displayname: data.attributes?.displayname,\n ...data,\n attributes: {}\n };\n this._attributes = new Proxy(this._data.attributes, this.handler);\n this.update(data.attributes ?? {});\n if (davService) {\n this._knownDavService = davService;\n }\n }\n /**\n * Get the source url to this object\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get source() {\n return this._data.source.replace(/\\/$/i, \"\");\n }\n /**\n * Get the encoded source url to this object for requests purposes\n */\n get encodedSource() {\n const { origin } = new URL(this.source);\n return origin + encodePath(this.source.slice(origin.length));\n }\n /**\n * Get this object name\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get basename() {\n return basename(this.source);\n }\n /**\n * The nodes displayname\n * By default the display name and the `basename` are identical,\n * but it is possible to have a different name. This happens\n * on the files app for example for shared folders.\n */\n get displayname() {\n return this._data.displayname || this.basename;\n }\n /**\n * Set the displayname\n */\n set displayname(displayname) {\n this._data.displayname = displayname;\n }\n /**\n * Get this object's extension\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get extension() {\n return extname(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n *\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get dirname() {\n if (this.root) {\n let source = this.source;\n if (this.isDavResource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return dirname(source.slice(firstMatch + root.length) || \"/\");\n }\n const url = new URL(this.source);\n return dirname(url.pathname);\n }\n /**\n * Get the file mime\n * There is no setter as the mime is not meant to be changed\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Set the file modification time\n */\n set mtime(mtime) {\n this._data.mtime = mtime;\n }\n /**\n * Get the file creation time\n * There is no setter as the creation time is not meant to be changed\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Set the file size\n */\n set size(size) {\n this.updateMtime();\n this._data.size = size;\n }\n /**\n * Get the file attribute\n * This contains all additional attributes not provided by the Node class\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n if (this.owner === null && !this.isDavResource) {\n return Permission.READ;\n }\n return this._data.permissions !== void 0 ? this._data.permissions : Permission.NONE;\n }\n /**\n * Set the file permissions\n */\n set permissions(permissions) {\n this.updateMtime();\n this._data.permissions = permissions;\n }\n /**\n * Get the file owner\n * There is no setter as the owner is not meant to be changed\n */\n get owner() {\n if (!this.isDavResource) {\n return null;\n }\n return this._data.owner;\n }\n /**\n * Is this a dav-related resource ?\n */\n get isDavResource() {\n return isDavResource(this.source, this._knownDavService);\n }\n /**\n * @deprecated use `isDavResource` instead - will be removed in next major version.\n */\n get isDavRessource() {\n return this.isDavResource;\n }\n /**\n * Get the dav root of this object\n * There is no setter as the root is not meant to be changed\n */\n get root() {\n if (this._data.root) {\n return this._data.root.replace(/^(.+)\\/$/, \"$1\");\n }\n if (this.isDavResource) {\n const root = dirname(this.source);\n return root.split(this._knownDavService).pop() || null;\n }\n return null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n let source = this.source;\n if (this.isDavResource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return source.slice(firstMatch + root.length) || \"/\";\n }\n return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n }\n /**\n * Get the node id if defined.\n * There is no setter as the fileid is not meant to be changed\n */\n get fileid() {\n return this._data?.id;\n }\n /**\n * Get the node status.\n */\n get status() {\n return this._data?.status;\n }\n /**\n * Set the node status.\n */\n set status(status) {\n this._data.status = status;\n }\n /**\n * Get the node data\n */\n get data() {\n return structuredClone(this._data);\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(destination) {\n validateData({ ...this._data, source: destination }, this._knownDavService);\n const oldBasename = this.basename;\n this._data.source = destination;\n if (this.displayname === oldBasename && this.basename !== oldBasename) {\n this.displayname = this.basename;\n }\n this.updateMtime();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n *\n * @param basename The new name of the node\n */\n rename(basename2) {\n if (basename2.includes(\"/\")) {\n throw new Error(\"Invalid basename\");\n }\n this.move(dirname(this.source) + \"/\" + basename2);\n }\n /**\n * Update the mtime if exists\n */\n updateMtime() {\n if (this._data.mtime) {\n this._data.mtime = /* @__PURE__ */ new Date();\n }\n }\n /**\n * Update the attributes of the node\n * Warning, updating attributes will NOT automatically update the mtime.\n *\n * @param attributes The new attributes to update on the Node attributes\n */\n update(attributes) {\n for (const [name, value] of Object.entries(attributes)) {\n try {\n if (value === void 0) {\n delete this.attributes[name];\n } else {\n this.attributes[name] = value;\n }\n } catch (e) {\n if (e instanceof TypeError) {\n continue;\n }\n throw e;\n }\n }\n }\n}\nclass File extends Node {\n get type() {\n return FileType.File;\n }\n /**\n * Returns a clone of the file\n */\n clone() {\n return new File(this.data);\n }\n}\nclass Folder extends Node {\n constructor(data) {\n super({\n ...data,\n mime: \"httpd/unix-directory\"\n });\n }\n get type() {\n return FileType.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return \"httpd/unix-directory\";\n }\n /**\n * Returns a clone of the folder\n */\n clone() {\n return new Folder(this.data);\n }\n}\nconst parsePermissions = function(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"C\") || permString.includes(\"K\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\") || permString.includes(\"N\") || permString.includes(\"V\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n};\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nconst registerDavProperty = function(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n if (typeof window._nc_dav_properties === \"undefined\") {\n window._nc_dav_properties = [...defaultDavProperties];\n window._nc_dav_namespaces = { ...defaultDavNamespaces };\n }\n const namespaces = { ...window._nc_dav_namespaces, ...namespace };\n if (window._nc_dav_properties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n window._nc_dav_properties.push(prop);\n window._nc_dav_namespaces = namespaces;\n return true;\n};\nconst getDavProperties = function() {\n if (typeof window._nc_dav_properties === \"undefined\") {\n window._nc_dav_properties = [...defaultDavProperties];\n }\n return window._nc_dav_properties.map((prop) => `<${prop} />`).join(\" \");\n};\nconst getDavNameSpaces = function() {\n if (typeof window._nc_dav_namespaces === \"undefined\") {\n window._nc_dav_namespaces = { ...defaultDavNamespaces };\n }\n return Object.keys(window._nc_dav_namespaces).map((ns) => `xmlns:${ns}=\"${window._nc_dav_namespaces?.[ns]}\"`).join(\" \");\n};\nconst getDefaultPropfind = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n};\nconst getFavoritesReport = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n};\nconst getRecentSearch = function(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n};\nfunction getRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nconst getClient = function(remoteURL = defaultRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n};\nconst getFavoriteNodes = (davClient, path = \"/\", davRoot = defaultRootPath) => {\n const controller = new AbortController();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const contentsResponse = await davClient.getDirectoryContents(`${davRoot}${path}`, {\n signal: controller.signal,\n details: true,\n data: getFavoritesReport(),\n headers: {\n // see getClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n const nodes = contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n resolve(nodes);\n } catch (error) {\n reject(error);\n }\n });\n};\nconst resultToNode = function(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = parsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const mtime = new Date(Date.parse(node.lastmod));\n const crtime = new Date(Date.parse(props.creationdate));\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n};\nexport {\n FileType as F,\n Node as N,\n Permission as P,\n getRemoteURL as a,\n defaultRemoteURL as b,\n getClient as c,\n defaultRootPath as d,\n getFavoriteNodes as e,\n defaultDavProperties as f,\n getRootPath as g,\n defaultDavNamespaces as h,\n registerDavProperty as i,\n getDavProperties as j,\n getDavNameSpaces as k,\n getDefaultPropfind as l,\n getFavoritesReport as m,\n getRecentSearch as n,\n logger as o,\n parsePermissions as p,\n File as q,\n resultToNode as r,\n Folder as s,\n NodeStatus as t\n};\n","import { o as logger } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator$2 = {};\nvar util$3 = {};\n(function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a2, arrayMode) {\n if (a2) {\n const keys = Object.keys(a2);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n if (arrayMode === \"strict\") {\n target[keys[i2]] = [a2[keys[i2]]];\n } else {\n target[keys[i2]] = a2[keys[i2]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n})(util$3);\nconst util$2 = util$3;\nconst defaultOptions$2 = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n};\nvalidator$2.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions$2, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && xmlData[i2 + 1] === \"?\") {\n i2 += 2;\n i2 = readPI(xmlData, i2);\n if (i2.err) return i2;\n } else if (xmlData[i2] === \"<\") {\n let tagStartPos = i2;\n i2++;\n if (xmlData[i2] === \"!\") {\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i2] === \"/\") {\n closingTag = true;\n i2++;\n }\n let tagName = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== \">\" && xmlData[i2] !== \" \" && xmlData[i2] !== \"\t\" && xmlData[i2] !== \"\\n\" && xmlData[i2] !== \"\\r\"; i2++) {\n tagName += xmlData[i2];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i2--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i2));\n }\n const result = readAttributeStr(xmlData, i2);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i2));\n }\n let attrStr = result.value;\n i2 = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i2 - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i2));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i2 - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i2));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i2++; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"!\") {\n i2++;\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else if (xmlData[i2 + 1] === \"?\") {\n i2 = readPI(xmlData, ++i2);\n if (i2.err) return i2;\n } else {\n break;\n }\n } else if (xmlData[i2] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i2);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i2));\n i2 = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i2])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i2));\n }\n }\n }\n if (xmlData[i2] === \"<\") {\n i2--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i2])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i2] + \"' is not expected.\", getLineNumberForPosition(xmlData, i2));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t3) => t3.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n};\nfunction isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n}\nfunction readPI(xmlData, i2) {\n const start = i2;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] == \"?\" || xmlData[i2] == \" \") {\n const tagname = xmlData.substr(start, i2 - start);\n if (i2 > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i2));\n } else if (xmlData[i2] == \"?\" && xmlData[i2 + 1] == \">\") {\n i2++;\n break;\n } else {\n continue;\n }\n }\n }\n return i2;\n}\nfunction readCommentAndCDATA(xmlData, i2) {\n if (xmlData.length > i2 + 5 && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \"-\") {\n for (i2 += 3; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"-\" && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n } else if (xmlData.length > i2 + 8 && xmlData[i2 + 1] === \"D\" && xmlData[i2 + 2] === \"O\" && xmlData[i2 + 3] === \"C\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"Y\" && xmlData[i2 + 6] === \"P\" && xmlData[i2 + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i2] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i2 + 9 && xmlData[i2 + 1] === \"[\" && xmlData[i2 + 2] === \"C\" && xmlData[i2 + 3] === \"D\" && xmlData[i2 + 4] === \"A\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"A\" && xmlData[i2 + 7] === \"[\") {\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"]\" && xmlData[i2 + 1] === \"]\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n }\n return i2;\n}\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\nfunction readAttributeStr(xmlData, i2) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === doubleQuote || xmlData[i2] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i2];\n } else if (startChar !== xmlData[i2]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i2] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i2];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i2,\n tagClosed\n };\n}\nconst validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction validateAttributeString(attrStr, options) {\n const matches = util$2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i2 = 0; i2 < matches.length; i2++) {\n if (matches[i2][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] !== void 0 && matches[i2][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' is without value.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i2][2] + \"' is not allowed.\", getPositionFromMatch(matches[i2]));\n }\n const attrName = matches[i2][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i2]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i2]));\n }\n }\n return true;\n}\nfunction validateNumberAmpersand(xmlData, i2) {\n let re2 = /\\d/;\n if (xmlData[i2] === \"x\") {\n i2++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \";\")\n return i2;\n if (!xmlData[i2].match(re2))\n break;\n }\n return -1;\n}\nfunction validateAmpersand(xmlData, i2) {\n i2++;\n if (xmlData[i2] === \";\")\n return -1;\n if (xmlData[i2] === \"#\") {\n i2++;\n return validateNumberAmpersand(xmlData, i2);\n }\n let count = 0;\n for (; i2 < xmlData.length; i2++, count++) {\n if (xmlData[i2].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i2] === \";\")\n break;\n return -1;\n }\n return i2;\n}\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n}\nfunction validateAttrName(attrName) {\n return util$2.isName(attrName);\n}\nfunction validateTagName(tagname) {\n return util$2.isName(tagname);\n}\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\nvar OptionsBuilder = {};\nconst defaultOptions$1 = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val2) {\n return val2;\n },\n attributeValueProcessor: function(attrName, val2) {\n return val2;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n};\nconst buildOptions$1 = function(options) {\n return Object.assign({}, defaultOptions$1, options);\n};\nOptionsBuilder.buildOptions = buildOptions$1;\nOptionsBuilder.defaultOptions = defaultOptions$1;\nclass XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val2) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val2 });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n}\nvar xmlNode$1 = XmlNode;\nconst util$1 = util$3;\nfunction readDocType$1(xmlData, i2) {\n const entities = {};\n if (xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"C\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"Y\" && xmlData[i2 + 7] === \"P\" && xmlData[i2 + 8] === \"E\") {\n i2 = i2 + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i2)) {\n i2 += 7;\n [entityName, val, i2] = readEntityExp(xmlData, i2 + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i2)) i2 += 8;\n else if (hasBody && isAttlist(xmlData, i2)) i2 += 8;\n else if (hasBody && isNotation(xmlData, i2)) i2 += 9;\n else if (isComment) comment = true;\n else throw new Error(\"Invalid DOCTYPE\");\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i2] === \">\") {\n if (comment) {\n if (xmlData[i2 - 1] === \"-\" && xmlData[i2 - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i2] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i2];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i: i2 };\n}\nfunction readEntityExp(xmlData, i2) {\n let entityName2 = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName2 += xmlData[i2];\n }\n entityName2 = entityName2.trim();\n if (entityName2.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val2 = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val2 += xmlData[i2];\n }\n return [entityName2, val2, i2];\n}\nfunction isComment(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"-\" && xmlData[i2 + 3] === \"-\") return true;\n return false;\n}\nfunction isEntity(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"N\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"I\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"Y\") return true;\n return false;\n}\nfunction isElement(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"L\" && xmlData[i2 + 4] === \"E\" && xmlData[i2 + 5] === \"M\" && xmlData[i2 + 6] === \"E\" && xmlData[i2 + 7] === \"N\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n}\nfunction isAttlist(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"A\" && xmlData[i2 + 3] === \"T\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"L\" && xmlData[i2 + 6] === \"I\" && xmlData[i2 + 7] === \"S\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n}\nfunction isNotation(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"N\" && xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"A\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"I\" && xmlData[i2 + 8] === \"O\" && xmlData[i2 + 9] === \"N\") return true;\n return false;\n}\nfunction validateEntityName(name) {\n if (util$1.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\nvar DocTypeReader = readDocType$1;\nconst hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\nconst consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n};\nfunction toNumber$1(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n}\nfunction trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n}\nvar strnum = toNumber$1;\nfunction getIgnoreAttributesFn$2(ignoreAttributes2) {\n if (typeof ignoreAttributes2 === \"function\") {\n return ignoreAttributes2;\n }\n if (Array.isArray(ignoreAttributes2)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes2) {\n if (typeof pattern === \"string\" && attrName === pattern) {\n return true;\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true;\n }\n }\n };\n }\n return () => false;\n}\nvar ignoreAttributes = getIgnoreAttributesFn$2;\nconst util = util$3;\nconst xmlNode = xmlNode$1;\nconst readDocType = DocTypeReader;\nconst toNumber = strnum;\nconst getIgnoreAttributesFn$1 = ignoreAttributes;\nlet OrderedObjParser$1 = class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue$1;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn$1(this.options.ignoreAttributes);\n }\n};\nfunction addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i2 = 0; i2 < entKeys.length; i2++) {\n const ent = entKeys[i2];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n}\nfunction parseTextData(val2, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val2 !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val2 = val2.trim();\n }\n if (val2.length > 0) {\n if (!escapeEntities) val2 = this.replaceEntitiesValue(val2);\n const newval = this.options.tagValueProcessor(tagName, val2, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val2;\n } else if (typeof newval !== typeof val2 || newval !== val2) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val2.trim();\n if (trimmedVal === val2) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val2;\n }\n }\n }\n }\n}\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\nconst attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i2 = 0; i2 < len; i2++) {\n const attrName = this.resolveNameSpace(matches[i2][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue;\n }\n let oldVal = matches[i2][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n const ch = xmlData[i2];\n if (ch === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i2, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i2 = tagData.closeIndex + 1;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i2 + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i2 + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i2 = endIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i2);\n this.docTypeEntities = result.entities;\n i2 = result.i;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i2 + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val2 = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val2 == void 0) val2 = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val2);\n }\n i2 = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i2, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i2 = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i2 = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i2 = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i2 = closeIndex;\n }\n }\n } else {\n textData += xmlData[i2];\n }\n }\n return xmlObj.child;\n};\nfunction addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n}\nconst replaceEntitiesValue$1 = function(val2) {\n if (this.options.processEntities) {\n for (let entityName2 in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName2];\n val2 = val2.replace(entity.regx, entity.val);\n }\n for (let entityName2 in this.lastEntities) {\n const entity = this.lastEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName2 in this.htmlEntities) {\n const entity = this.htmlEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n }\n val2 = val2.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val2;\n};\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\nfunction isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n}\nfunction tagExpWithClosingIndex(xmlData, i2, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i2; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n}\nfunction findClosingIndex(xmlData, str, i2, errMsg) {\n const closingIndex = xmlData.indexOf(str, i2);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n}\nfunction readTagExp(xmlData, i2, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i2 + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n}\nfunction readStopNodeData(xmlData, tagName, i2) {\n const startIndex = i2;\n let openTagCount = 1;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i2),\n i: closeIndex\n };\n }\n }\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i2 + 1, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i2 + 3, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"StopNode is not closed.\") - 2;\n i2 = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i2, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i2 = tagData.closeIndex;\n }\n }\n }\n }\n}\nfunction parseValue(val2, shouldParse, options) {\n if (shouldParse && typeof val2 === \"string\") {\n const newval = val2.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val2, options);\n } else {\n if (util.isExist(val2)) {\n return val2;\n } else {\n return \"\";\n }\n }\n}\nvar OrderedObjParser_1 = OrderedObjParser$1;\nvar node2json = {};\nfunction prettify$1(node, options) {\n return compress(node, options);\n}\nfunction compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const property = propName$1(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val2 = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val2, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val2, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val2).length === 1 && val2[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val2 = val2[options.textNodeName];\n } else if (Object.keys(val2).length === 0) {\n if (options.alwaysCreateTextNode) val2[options.textNodeName] = \"\";\n else val2 = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val2);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val2];\n } else {\n compressedObj[property] = val2;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\nfunction propName$1(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (key !== \":@\") return key;\n }\n}\nfunction assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n const atrrName = keys[i2];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\nfunction isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n}\nnode2json.prettify = prettify$1;\nconst { buildOptions } = OptionsBuilder;\nconst OrderedObjParser2 = OrderedObjParser_1;\nconst { prettify } = node2json;\nconst validator$1 = validator$2;\nlet XMLParser$1 = class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator$1.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser2(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n};\nvar XMLParser_1 = XMLParser$1;\nconst EOL = \"\\n\";\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n}\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i2 = 0; i2 < options.entities.length; i2++) {\n const entity = options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nvar orderedJs2Xml = toXml;\nconst buildFromOrderedJs = orderedJs2Xml;\nconst getIgnoreAttributesFn = ignoreAttributes;\nconst defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a2) {\n return a2;\n },\n attributeValueProcessor: function(attrName, a2) {\n return a2;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n}\nBuilder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0, []).val;\n }\n};\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val2 = \"\";\n const jPath = ajPath.join(\".\");\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val2 += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val2 += \"\";\n } else if (key[0] === \"?\") {\n val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else if (!attr) {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val2 += this.replaceEntitiesValue(newval);\n } else {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j2 = 0; j2 < arrLen; j2++) {\n const item = jObj[key][j2];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val2 += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j2 = 0; j2 < L; j2++) {\n attrStr += this.buildAttrPairStr(Ks[j2], \"\" + jObj[key][Ks[j2]]);\n }\n } else {\n val2 += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val: val2 };\n};\nBuilder.prototype.buildAttrPairStr = function(attrName, val2) {\n val2 = this.options.attributeValueProcessor(attrName, \"\" + val2);\n val2 = this.replaceEntitiesValue(val2);\n if (this.options.suppressBooleanAttributes && val2 === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val2 + '\"';\n};\nfunction processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\nBuilder.prototype.buildObjectNode = function(val2, key, attrStr, level) {\n if (val2 === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"\" + val2 + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val2 + this.indentate(level) + tagEndExp;\n }\n }\n};\nBuilder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val2);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \" 0 && this.options.processEntities) {\n for (let i2 = 0; i2 < this.options.entities.length; i2++) {\n const entity = this.options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n};\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\nfunction isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}\nvar json2xml = Builder;\nconst validator = validator$2;\nconst XMLParser2 = XMLParser_1;\nconst XMLBuilder = json2xml;\nvar fxp = {\n XMLParser: XMLParser2,\n XMLValidator: validator,\n XMLBuilder\n};\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxp.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxp.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nconst debug$1 = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n};\nvar debug_1 = debug$1;\nconst SEMVER_SPEC_VERSION = \"2.0.0\";\nconst MAX_LENGTH$1 = 256;\nconst MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n9007199254740991;\nconst MAX_SAFE_COMPONENT_LENGTH = 16;\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;\nconst RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n];\nvar constants = {\n MAX_LENGTH: MAX_LENGTH$1,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n};\nvar re$1 = { exports: {} };\n(function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH: MAX_SAFE_COMPONENT_LENGTH2,\n MAX_SAFE_BUILD_LENGTH: MAX_SAFE_BUILD_LENGTH2,\n MAX_LENGTH: MAX_LENGTH2\n } = constants;\n const debug2 = debug_1;\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t3 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH2],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH2]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug2(name, index, value);\n t3[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t3.NUMERICIDENTIFIER]})\\\\.(${src[t3.NUMERICIDENTIFIER]})\\\\.(${src[t3.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t3.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t3.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t3.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t3.NUMERICIDENTIFIER]}|${src[t3.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t3.NUMERICIDENTIFIERLOOSE]}|${src[t3.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t3.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t3.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t3.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t3.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t3.BUILDIDENTIFIER]}(?:\\\\.${src[t3.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t3.MAINVERSION]}${src[t3.PRERELEASE]}?${src[t3.BUILD]}?`);\n createToken(\"FULL\", `^${src[t3.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t3.MAINVERSIONLOOSE]}${src[t3.PRERELEASELOOSE]}?${src[t3.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t3.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t3.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t3.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t3.XRANGEIDENTIFIER]})(?:\\\\.(${src[t3.XRANGEIDENTIFIER]})(?:\\\\.(${src[t3.XRANGEIDENTIFIER]})(?:${src[t3.PRERELEASE]})?${src[t3.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:${src[t3.PRERELEASELOOSE]})?${src[t3.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t3.GTLT]}\\\\s*${src[t3.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t3.GTLT]}\\\\s*${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH2}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?`);\n createToken(\"COERCE\", `${src[t3.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t3.COERCEPLAIN] + `(?:${src[t3.PRERELEASE]})?(?:${src[t3.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t3.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t3.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t3.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t3.LONETILDE]}${src[t3.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t3.LONETILDE]}${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t3.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t3.LONECARET]}${src[t3.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t3.LONECARET]}${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t3.GTLT]}\\\\s*(${src[t3.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t3.GTLT]}\\\\s*(${src[t3.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t3.GTLT]}\\\\s*(${src[t3.LOOSEPLAIN]}|${src[t3.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t3.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t3.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t3.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t3.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n})(re$1, re$1.exports);\nvar reExports = re$1.exports;\nconst looseOption = Object.freeze({ loose: true });\nconst emptyOpts = Object.freeze({});\nconst parseOptions$1 = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n};\nvar parseOptions_1 = parseOptions$1;\nconst numeric = /^[0-9]+$/;\nconst compareIdentifiers$1 = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n};\nconst rcompareIdentifiers = (a2, b2) => compareIdentifiers$1(b2, a2);\nvar identifiers = {\n compareIdentifiers: compareIdentifiers$1,\n rcompareIdentifiers\n};\nconst debug = debug_1;\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = constants;\nconst { safeRe: re, t: t2 } = reExports;\nconst parseOptions = parseOptions_1;\nconst { compareIdentifiers } = identifiers;\nlet SemVer$2 = class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re[t2.LOOSE] : re[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n};\nvar semver = SemVer$2;\nconst SemVer$1 = semver;\nconst parse$1 = (version, options, throwErrors = false) => {\n if (version instanceof SemVer$1) {\n return version;\n }\n try {\n return new SemVer$1(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n};\nvar parse_1 = parse$1;\nconst parse = parse_1;\nconst valid = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n};\nvar valid_1 = valid;\nconst valid$1 = /* @__PURE__ */ getDefaultExportFromCjs(valid_1);\nconst SemVer2 = semver;\nconst major = (a2, loose) => new SemVer2(a2, loose).major;\nvar major_1 = major;\nconst major$1 = /* @__PURE__ */ getDefaultExportFromCjs(major_1);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid$1(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major$1(bus2.getVersion()) !== major$1(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h2) => {\n try {\n h2(event);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;","'use strict';\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;","const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n \n //read EntityName\n let entityName = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n // if(xmlData[i] === \" \") continue;\n // else \n entityName += xmlData[i];\n }\n entityName = entityName.trim();\n if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n //read Entity Value\n const startChar = xmlData[i++];\n let val = \"\"\n for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n val += xmlData[i];\n }\n return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === '-' &&\n xmlData[i+3] === '-') return true\n return false\n}\nfunction isEntity(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'N' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'I' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'Y') return true\n return false\n}\nfunction isElement(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'L' &&\n xmlData[i+4] === 'E' &&\n xmlData[i+5] === 'M' &&\n xmlData[i+6] === 'E' &&\n xmlData[i+7] === 'N' &&\n xmlData[i+8] === 'T') return true\n return false\n}\n\nfunction isAttlist(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'A' &&\n xmlData[i+3] === 'T' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'L' &&\n xmlData[i+6] === 'I' &&\n xmlData[i+7] === 'S' &&\n xmlData[i+8] === 'T') return true\n return false\n}\nfunction isNotation(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'N' &&\n xmlData[i+3] === 'O' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'A' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'I' &&\n xmlData[i+8] === 'O' &&\n xmlData[i+9] === 'N') return true\n return false\n}\n\nfunction validateEntityName(name){\n if (util.isName(name))\n\treturn name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\n \nconst consider = {\n hex : true,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true\n //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n // const options = Object.assign({}, consider);\n // if(opt.leadingZeros === false){\n // options.leadingZeros = false;\n // }else if(opt.hex === false){\n // options.hex = false;\n // }\n\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n // if(trimmedStr === \"0.0\") return 0;\n // else if(trimmedStr === \"+0.0\") return 0;\n // else if(trimmedStr === \"-0.0\") return -0;\n\n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n // } else if (options.parseOct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n if(match){\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n //trim ending zeros for floating number\n \n const eNotation = match[4] || match[6];\n if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(eNotation){ //given number has enotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n // const decimalPart = match[5].substr(1);\n // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n \n // const p = numStr.indexOf(\".\");\n // const givenIntPart = numStr.substr(0,p);\n // const givenDecPart = numStr.substr(p+1);\n if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n else return str;\n }\n \n if(leadingZeros){\n // if(numTrimmedByZeros === numStr){\n // if(options.leadingZeros) return num;\n // else return str;\n // }else return str;\n if(numTrimmedByZeros === numStr) return num;\n else if(sign+numTrimmedByZeros === numStr) return num;\n else return str;\n }\n\n if(trimmedStr === numStr) return num;\n else if(trimmedStr === sign+numStr) return num;\n // else{\n // //number with +/- sign\n // trimmedStr.test(/[-+][0-9]);\n\n // }\n return str;\n }\n // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n \n }else{ //non-numeric string\n return str;\n }\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substr(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\nmodule.exports = toNumber\n","function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}\n\nmodule.exports = getIgnoreAttributesFn","'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\nconst getIgnoreAttributesFn = require('../ignoreAttributes')\n\n// const regx =\n// '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n// .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 16)) },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue\n }\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if(val == undefined) val = \"\";\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n \n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath)\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n }else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode);\n }else{\n currentNode.addChild(childNode);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n\n const rawTagName = tagName;\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n","'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\nexports.prettify = prettify;\n","const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;","const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if(tagName === undefined) continue;\n\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if(!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nmodule.exports = toXml;\n","'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\nconst getIgnoreAttributesFn = require('../ignoreAttributes')\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0, []).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = '';\n let val = '';\n const jPath = ajPath.join('.')\n for (let key in jObj) {\n if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n } else if (!attr) {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if(this.options.oneListGroup){\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr\n }\n }else{\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n }\n if(this.options.oneListGroup){\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities){\n for (let i=0; i,\n\tversion: '2.0',\n}\n\nexport type RootMetadata = Metadata & {\n\tusers: UserWithAccess[],\n}\n\nexport type FileEncryptionInfo = {\n\tauthenticationTag: string // Example: 'nJHAcpZwSS1BCIkGbmtbNg==',\n\tfilename: string // Example: 'test.txt',\n\tkey: string // Example: 'Hj+q7e53ZeQdHKPyF7FKeg==',\n\tmimetype: string // Example: 'text/plain',\n\tnonce: string // Example: 'sqqtY0eRjhuwf+qTv5Kg2g=='\n}\n\nexport type MetadataInfo = {\n\tcounter: number, // Example: 3\n\tfiles: Record, // Example: 'ad3b12554e0d4364854ae3e21b170152'\n\tfolders: Record, // TODO: Example: { fa666d819a6c4315abba421172f0a0b1: 'Test' }\n\tkeyChecksums?: string[] // Example: ['9a60be9846978884033fcdfb978fbdd428221b20583bca6bfcb425f1b540152a']\n}\n\nexport type PrivateKeyInfo = {\n\tencryptedPrivateKey: Uint8Array,\n\tiv: Uint8Array,\n\tsalt: Uint8Array,\n}\n\nexport function isRootMetadata(metadata: Metadata): metadata is RootMetadata {\n\treturn metadata.users !== undefined\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('end_to_end_encryption')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('end_to_end_encryption')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","export class ByteStream {\n constructor(parameters = {}) {\n if (\"view\" in parameters) {\n this.fromUint8Array(parameters.view);\n }\n else if (\"buffer\" in parameters) {\n this.fromArrayBuffer(parameters.buffer);\n }\n else if (\"string\" in parameters) {\n this.fromString(parameters.string);\n }\n else if (\"hexstring\" in parameters) {\n this.fromHexString(parameters.hexstring);\n }\n else {\n if (\"length\" in parameters && parameters.length > 0) {\n this.length = parameters.length;\n if (parameters.stub) {\n for (let i = 0; i < this._view.length; i++) {\n this._view[i] = parameters.stub;\n }\n }\n }\n else {\n this.length = 0;\n }\n }\n }\n set buffer(value) {\n this._buffer = value;\n this._view = new Uint8Array(this._buffer);\n }\n get buffer() {\n return this._buffer;\n }\n set view(value) {\n this._buffer = new ArrayBuffer(value.length);\n this._view = new Uint8Array(this._buffer);\n this._view.set(value);\n }\n get view() {\n return this._view;\n }\n get length() {\n return this.view.byteLength;\n }\n set length(value) {\n this._buffer = new ArrayBuffer(value);\n this._view = new Uint8Array(this._buffer);\n }\n clear() {\n this._buffer = new ArrayBuffer(0);\n this._view = new Uint8Array(this._buffer);\n }\n fromArrayBuffer(array) {\n this._buffer = array;\n this._view = new Uint8Array(this._buffer);\n }\n fromUint8Array(array) {\n this.fromArrayBuffer(new Uint8Array(array).buffer);\n }\n fromString(string) {\n const stringLength = string.length;\n this.length = stringLength;\n for (let i = 0; i < stringLength; i++)\n this.view[i] = string.charCodeAt(i);\n }\n toString(start = 0, length = (this.view.length - start)) {\n let result = \"\";\n if ((start >= this.view.length) || (start < 0)) {\n start = 0;\n }\n if ((length >= this.view.length) || (length < 0)) {\n length = this.view.length - start;\n }\n for (let i = start; i < (start + length); i++)\n result += String.fromCharCode(this.view[i]);\n return result;\n }\n fromHexString(hexString) {\n const stringLength = hexString.length;\n this.buffer = new ArrayBuffer(stringLength >> 1);\n this.view = new Uint8Array(this.buffer);\n const hexMap = new Map();\n hexMap.set(\"0\", 0x00);\n hexMap.set(\"1\", 0x01);\n hexMap.set(\"2\", 0x02);\n hexMap.set(\"3\", 0x03);\n hexMap.set(\"4\", 0x04);\n hexMap.set(\"5\", 0x05);\n hexMap.set(\"6\", 0x06);\n hexMap.set(\"7\", 0x07);\n hexMap.set(\"8\", 0x08);\n hexMap.set(\"9\", 0x09);\n hexMap.set(\"A\", 0x0A);\n hexMap.set(\"a\", 0x0A);\n hexMap.set(\"B\", 0x0B);\n hexMap.set(\"b\", 0x0B);\n hexMap.set(\"C\", 0x0C);\n hexMap.set(\"c\", 0x0C);\n hexMap.set(\"D\", 0x0D);\n hexMap.set(\"d\", 0x0D);\n hexMap.set(\"E\", 0x0E);\n hexMap.set(\"e\", 0x0E);\n hexMap.set(\"F\", 0x0F);\n hexMap.set(\"f\", 0x0F);\n let j = 0;\n let temp = 0x00;\n for (let i = 0; i < stringLength; i++) {\n if (!(i % 2)) {\n temp = hexMap.get(hexString.charAt(i)) << 4;\n }\n else {\n temp |= hexMap.get(hexString.charAt(i));\n this.view[j] = temp;\n j++;\n }\n }\n }\n toHexString(start = 0, length = (this.view.length - start)) {\n let result = \"\";\n if ((start >= this.view.length) || (start < 0)) {\n start = 0;\n }\n if ((length >= this.view.length) || (length < 0)) {\n length = this.view.length - start;\n }\n for (let i = start; i < (start + length); i++) {\n const str = this.view[i].toString(16).toUpperCase();\n result = result + ((str.length == 1) ? \"0\" : \"\") + str;\n }\n return result;\n }\n copy(start = 0, length = (this.length - start)) {\n if (!start && !this.length) {\n return new ByteStream();\n }\n if ((start < 0) || (start > (this.length - 1))) {\n throw new Error(`Wrong start position: ${start}`);\n }\n const stream = new ByteStream({\n buffer: this._buffer.slice(start, start + length)\n });\n return stream;\n }\n slice(start = 0, end = this.length) {\n if (!start && !this.length) {\n return new ByteStream();\n }\n if ((start < 0) || (start > (this.length - 1))) {\n throw new Error(`Wrong start position: ${start}`);\n }\n const stream = new ByteStream({\n buffer: this._buffer.slice(start, end),\n });\n return stream;\n }\n realloc(size) {\n const buffer = new ArrayBuffer(size);\n const view = new Uint8Array(buffer);\n if (size > this._view.length)\n view.set(this._view);\n else {\n view.set(new Uint8Array(this._buffer, 0, size));\n }\n this._buffer = buffer;\n this._view = new Uint8Array(this._buffer);\n }\n append(stream) {\n const initialSize = this.length;\n const streamViewLength = stream.length;\n const subarrayView = stream._view.subarray();\n this.realloc(initialSize + streamViewLength);\n this._view.set(subarrayView, initialSize);\n }\n insert(stream, start = 0, length = (this.length - start)) {\n if (start > (this.length - 1))\n return false;\n if (length > (this.length - start)) {\n length = this.length - start;\n }\n if (length > stream.length) {\n length = stream.length;\n }\n if (length == stream.length)\n this._view.set(stream._view, start);\n else {\n this._view.set(stream._view.subarray(0, length), start);\n }\n return true;\n }\n isEqual(stream) {\n if (this.length != stream.length)\n return false;\n for (let i = 0; i < stream.length; i++) {\n if (this.view[i] != stream.view[i])\n return false;\n }\n return true;\n }\n isEqualView(view) {\n if (view.length != this.view.length)\n return false;\n for (let i = 0; i < view.length; i++) {\n if (this.view[i] != view[i])\n return false;\n }\n return true;\n }\n findPattern(pattern, start_, length_, backward_) {\n const { start, length, backward } = this.prepareFindParameters(start_, length_, backward_);\n const patternLength = pattern.length;\n if (patternLength > length) {\n return (-1);\n }\n const patternArray = [];\n for (let i = 0; i < patternLength; i++)\n patternArray.push(pattern.view[i]);\n for (let i = 0; i <= (length - patternLength); i++) {\n let equal = true;\n const equalStart = (backward) ? (start - patternLength - i) : (start + i);\n for (let j = 0; j < patternLength; j++) {\n if (this.view[j + equalStart] != patternArray[j]) {\n equal = false;\n break;\n }\n }\n if (equal) {\n return (backward) ? (start - patternLength - i) : (start + patternLength + i);\n }\n }\n return (-1);\n }\n findFirstIn(patterns, start_, length_, backward_) {\n const { start, length, backward } = this.prepareFindParameters(start_, length_, backward_);\n const result = {\n id: (-1),\n position: (backward) ? 0 : (start + length),\n length: 0\n };\n for (let i = 0; i < patterns.length; i++) {\n const position = this.findPattern(patterns[i], start, length, backward);\n if (position != (-1)) {\n let valid = false;\n const patternLength = patterns[i].length;\n if (backward) {\n if ((position - patternLength) >= (result.position - result.length))\n valid = true;\n }\n else {\n if ((position - patternLength) <= (result.position - result.length))\n valid = true;\n }\n if (valid) {\n result.position = position;\n result.id = i;\n result.length = patternLength;\n }\n }\n }\n return result;\n }\n findAllIn(patterns, start_, length_) {\n let { start, length } = this.prepareFindParameters(start_, length_);\n const result = [];\n let patternFound = {\n id: (-1),\n position: start\n };\n do {\n const position = patternFound.position;\n patternFound = this.findFirstIn(patterns, patternFound.position, length);\n if (patternFound.id == (-1)) {\n break;\n }\n length -= (patternFound.position - position);\n result.push({\n id: patternFound.id,\n position: patternFound.position\n });\n } while (true);\n return result;\n }\n findAllPatternIn(pattern, start_, length_) {\n const { start, length } = this.prepareFindParameters(start_, length_);\n const result = [];\n const patternLength = pattern.length;\n if (patternLength > length) {\n return (-1);\n }\n const patternArray = Array.from(pattern.view);\n for (let i = 0; i <= (length - patternLength); i++) {\n let equal = true;\n const equalStart = start + i;\n for (let j = 0; j < patternLength; j++) {\n if (this.view[j + equalStart] != patternArray[j]) {\n equal = false;\n break;\n }\n }\n if (equal) {\n result.push(start + patternLength + i);\n i += (patternLength - 1);\n }\n }\n return result;\n }\n findFirstNotIn(patterns, start_, length_, backward_) {\n let { start, length, backward } = this.prepareFindParameters(start_, length_, backward_);\n const result = {\n left: {\n id: (-1),\n position: start\n },\n right: {\n id: (-1),\n position: 0\n },\n value: new ByteStream()\n };\n let currentLength = length;\n while (currentLength > 0) {\n result.right = this.findFirstIn(patterns, (backward) ? (start - length + currentLength) : (start + length - currentLength), currentLength, backward);\n if (result.right.id == (-1)) {\n length = currentLength;\n if (backward) {\n start -= length;\n }\n else {\n start = result.left.position;\n }\n result.value = new ByteStream({\n buffer: this._buffer.slice(start, start + length),\n });\n break;\n }\n if (result.right.position != ((backward) ? (result.left.position - patterns[result.right.id].length) : (result.left.position + patterns[result.right.id].length))) {\n if (backward) {\n start = result.right.position + patterns[result.right.id].length;\n length = result.left.position - result.right.position - patterns[result.right.id].length;\n }\n else {\n start = result.left.position;\n length = result.right.position - result.left.position - patterns[result.right.id].length;\n }\n result.value = new ByteStream({\n buffer: this._buffer.slice(start, start + length),\n });\n break;\n }\n result.left = result.right;\n currentLength -= patterns[result.right.id].length;\n }\n if (backward) {\n const temp = result.right;\n result.right = result.left;\n result.left = temp;\n }\n return result;\n }\n findAllNotIn(patterns, start_, length_) {\n let { start, length } = this.prepareFindParameters(start_, length_);\n const result = [];\n let patternFound = {\n left: {\n id: (-1),\n position: start\n },\n right: {\n id: (-1),\n position: start\n },\n value: new ByteStream()\n };\n do {\n const position = patternFound.right.position;\n patternFound = this.findFirstNotIn(patterns, patternFound.right.position, length);\n length -= (patternFound.right.position - position);\n result.push({\n left: {\n id: patternFound.left.id,\n position: patternFound.left.position\n },\n right: {\n id: patternFound.right.id,\n position: patternFound.right.position\n },\n value: patternFound.value\n });\n } while (patternFound.right.id != (-1));\n return result;\n }\n findFirstSequence(patterns, start_, length_, backward_) {\n let { start, length, backward } = this.prepareFindParameters(start_, length_, backward_);\n const firstIn = this.skipNotPatterns(patterns, start, length, backward);\n if (firstIn == (-1)) {\n return {\n position: (-1),\n value: new ByteStream()\n };\n }\n const firstNotIn = this.skipPatterns(patterns, firstIn, length - ((backward) ? (start - firstIn) : (firstIn - start)), backward);\n if (backward) {\n start = firstNotIn;\n length = (firstIn - firstNotIn);\n }\n else {\n start = firstIn;\n length = (firstNotIn - firstIn);\n }\n const value = new ByteStream({\n buffer: this._buffer.slice(start, start + length),\n });\n return {\n position: firstNotIn,\n value\n };\n }\n findAllSequences(patterns, start_, length_) {\n let { start, length } = this.prepareFindParameters(start_, length_);\n const result = [];\n let patternFound = {\n position: start,\n value: new ByteStream()\n };\n do {\n const position = patternFound.position;\n patternFound = this.findFirstSequence(patterns, patternFound.position, length);\n if (patternFound.position != (-1)) {\n length -= (patternFound.position - position);\n result.push({\n position: patternFound.position,\n value: patternFound.value,\n });\n }\n } while (patternFound.position != (-1));\n return result;\n }\n findPairedPatterns(leftPattern, rightPattern, start_, length_) {\n const result = [];\n if (leftPattern.isEqual(rightPattern))\n return result;\n const { start, length } = this.prepareFindParameters(start_, length_);\n let currentPositionLeft = 0;\n const leftPatterns = this.findAllPatternIn(leftPattern, start, length);\n if (!Array.isArray(leftPatterns) || leftPatterns.length == 0) {\n return result;\n }\n const rightPatterns = this.findAllPatternIn(rightPattern, start, length);\n if (!Array.isArray(rightPatterns) || rightPatterns.length == 0) {\n return result;\n }\n while (currentPositionLeft < leftPatterns.length) {\n if (rightPatterns.length == 0) {\n break;\n }\n if (leftPatterns[0] == rightPatterns[0]) {\n result.push({\n left: leftPatterns[0],\n right: rightPatterns[0]\n });\n leftPatterns.splice(0, 1);\n rightPatterns.splice(0, 1);\n continue;\n }\n if (leftPatterns[currentPositionLeft] > rightPatterns[0]) {\n break;\n }\n while (leftPatterns[currentPositionLeft] < rightPatterns[0]) {\n currentPositionLeft++;\n if (currentPositionLeft >= leftPatterns.length) {\n break;\n }\n }\n result.push({\n left: leftPatterns[currentPositionLeft - 1],\n right: rightPatterns[0]\n });\n leftPatterns.splice(currentPositionLeft - 1, 1);\n rightPatterns.splice(0, 1);\n currentPositionLeft = 0;\n }\n result.sort((a, b) => (a.left - b.left));\n return result;\n }\n findPairedArrays(inputLeftPatterns, inputRightPatterns, start_, length_) {\n const { start, length } = this.prepareFindParameters(start_, length_);\n const result = [];\n let currentPositionLeft = 0;\n const leftPatterns = this.findAllIn(inputLeftPatterns, start, length);\n if (leftPatterns.length == 0)\n return result;\n const rightPatterns = this.findAllIn(inputRightPatterns, start, length);\n if (rightPatterns.length == 0)\n return result;\n while (currentPositionLeft < leftPatterns.length) {\n if (rightPatterns.length == 0) {\n break;\n }\n if (leftPatterns[0].position == rightPatterns[0].position) {\n result.push({\n left: leftPatterns[0],\n right: rightPatterns[0]\n });\n leftPatterns.splice(0, 1);\n rightPatterns.splice(0, 1);\n continue;\n }\n if (leftPatterns[currentPositionLeft].position > rightPatterns[0].position) {\n break;\n }\n while (leftPatterns[currentPositionLeft].position < rightPatterns[0].position) {\n currentPositionLeft++;\n if (currentPositionLeft >= leftPatterns.length) {\n break;\n }\n }\n result.push({\n left: leftPatterns[currentPositionLeft - 1],\n right: rightPatterns[0]\n });\n leftPatterns.splice(currentPositionLeft - 1, 1);\n rightPatterns.splice(0, 1);\n currentPositionLeft = 0;\n }\n result.sort((a, b) => (a.left.position - b.left.position));\n return result;\n }\n replacePattern(searchPattern, replacePattern, start_, length_, findAllResult = null) {\n let result = [];\n let i;\n const output = {\n status: (-1),\n searchPatternPositions: [],\n replacePatternPositions: []\n };\n const { start, length } = this.prepareFindParameters(start_, length_);\n if (findAllResult == null) {\n result = this.findAllIn([searchPattern], start, length);\n if (result.length == 0) {\n return output;\n }\n }\n else {\n result = findAllResult;\n }\n output.searchPatternPositions.push(...Array.from(result, element => element.position));\n const patternDifference = searchPattern.length - replacePattern.length;\n const changedBuffer = new ArrayBuffer(this.view.length - (result.length * patternDifference));\n const changedView = new Uint8Array(changedBuffer);\n changedView.set(new Uint8Array(this.buffer, 0, start));\n for (i = 0; i < result.length; i++) {\n const currentPosition = (i == 0) ? start : result[i - 1].position;\n changedView.set(new Uint8Array(this.buffer, currentPosition, result[i].position - searchPattern.length - currentPosition), currentPosition - i * patternDifference);\n changedView.set(replacePattern.view, result[i].position - searchPattern.length - i * patternDifference);\n output.replacePatternPositions.push(result[i].position - searchPattern.length - i * patternDifference);\n }\n i--;\n changedView.set(new Uint8Array(this.buffer, result[i].position, this.length - result[i].position), result[i].position - searchPattern.length + replacePattern.length - i * patternDifference);\n this.buffer = changedBuffer;\n this.view = new Uint8Array(this.buffer);\n output.status = 1;\n return output;\n }\n skipPatterns(patterns, start_, length_, backward_) {\n const { start, length, backward } = this.prepareFindParameters(start_, length_, backward_);\n let result = start;\n for (let k = 0; k < patterns.length; k++) {\n const patternLength = patterns[k].length;\n const equalStart = (backward) ? (result - patternLength) : (result);\n let equal = true;\n for (let j = 0; j < patternLength; j++) {\n if (this.view[j + equalStart] != patterns[k].view[j]) {\n equal = false;\n break;\n }\n }\n if (equal) {\n k = (-1);\n if (backward) {\n result -= patternLength;\n if (result <= 0)\n return result;\n }\n else {\n result += patternLength;\n if (result >= (start + length))\n return result;\n }\n }\n }\n return result;\n }\n skipNotPatterns(patterns, start_, length_, backward_) {\n const { start, length, backward } = this.prepareFindParameters(start_, length_, backward_);\n let result = (-1);\n for (let i = 0; i < length; i++) {\n for (let k = 0; k < patterns.length; k++) {\n const patternLength = patterns[k].length;\n const equalStart = (backward) ? (start - i - patternLength) : (start + i);\n let equal = true;\n for (let j = 0; j < patternLength; j++) {\n if (this.view[j + equalStart] != patterns[k].view[j]) {\n equal = false;\n break;\n }\n }\n if (equal) {\n result = (backward) ? (start - i) : (start + i);\n break;\n }\n }\n if (result != (-1)) {\n break;\n }\n }\n return result;\n }\n prepareFindParameters(start = null, length = null, backward = false) {\n if (start === null) {\n start = (backward) ? this.length : 0;\n }\n if (start > this.length) {\n start = this.length;\n }\n if (backward) {\n if (length === null) {\n length = start;\n }\n if (length > start) {\n length = start;\n }\n }\n else {\n if (length === null) {\n length = this.length - start;\n }\n if (length > (this.length - start)) {\n length = this.length - start;\n }\n }\n return { start, length, backward };\n }\n}\n","import { ByteStream } from \"./byte_stream\";\nconst pow2_24 = 16777216;\nexport class SeqStream {\n constructor(parameters = {}) {\n this._stream = new ByteStream();\n this._length = 0;\n this._start = 0;\n this.backward = false;\n this.appendBlock = 0;\n this.prevLength = 0;\n this.prevStart = 0;\n if (\"view\" in parameters) {\n this.stream = new ByteStream({ view: parameters.view });\n }\n else if (\"buffer\" in parameters) {\n this.stream = new ByteStream({ buffer: parameters.buffer });\n }\n else if (\"string\" in parameters) {\n this.stream = new ByteStream({ string: parameters.string });\n }\n else if (\"hexstring\" in parameters) {\n this.stream = new ByteStream({ hexstring: parameters.hexstring });\n }\n else if (\"stream\" in parameters) {\n this.stream = parameters.stream.slice();\n }\n else {\n this.stream = new ByteStream();\n }\n if (\"backward\" in parameters && parameters.backward) {\n this.backward = parameters.backward;\n this._start = this.stream.length;\n }\n if (\"length\" in parameters && parameters.length > 0) {\n this._length = parameters.length;\n }\n if (\"start\" in parameters && parameters.start && parameters.start > 0) {\n this._start = parameters.start;\n }\n if (\"appendBlock\" in parameters && parameters.appendBlock && parameters.appendBlock > 0) {\n this.appendBlock = parameters.appendBlock;\n }\n }\n set stream(value) {\n this._stream = value;\n this.prevLength = this._length;\n this._length = value.length;\n this.prevStart = this._start;\n this._start = 0;\n }\n get stream() {\n return this._stream;\n }\n set length(value) {\n this.prevLength = this._length;\n this._length = value;\n }\n get length() {\n if (this.appendBlock) {\n return this.start;\n }\n return this._length;\n }\n set start(value) {\n if (value > this.stream.length)\n return;\n this.prevStart = this._start;\n this.prevLength = this._length;\n this._length -= (this.backward) ? (this._start - value) : (value - this._start);\n this._start = value;\n }\n get start() {\n return this._start;\n }\n get buffer() {\n return this._stream.buffer.slice(0, this._length);\n }\n resetPosition() {\n this._start = this.prevStart;\n this._length = this.prevLength;\n }\n findPattern(pattern, gap = null) {\n if ((gap == null) || (gap > this.length)) {\n gap = this.length;\n }\n const result = this.stream.findPattern(pattern, this.start, this.length, this.backward);\n if (result == (-1))\n return result;\n if (this.backward) {\n if (result < (this.start - pattern.length - gap)) {\n return (-1);\n }\n }\n else {\n if (result > (this.start + pattern.length + gap)) {\n return (-1);\n }\n }\n this.start = result;\n return result;\n }\n findFirstIn(patterns, gap = null) {\n if ((gap == null) || (gap > this.length)) {\n gap = this.length;\n }\n const result = this.stream.findFirstIn(patterns, this.start, this.length, this.backward);\n if (result.id == (-1))\n return result;\n if (this.backward) {\n if (result.position < (this.start - patterns[result.id].length - gap)) {\n return {\n id: (-1),\n position: (this.backward) ? 0 : (this.start + this.length)\n };\n }\n }\n else {\n if (result.position > (this.start + patterns[result.id].length + gap)) {\n return {\n id: (-1),\n position: (this.backward) ? 0 : (this.start + this.length)\n };\n }\n }\n this.start = result.position;\n return result;\n }\n findAllIn(patterns) {\n const start = (this.backward) ? (this.start - this.length) : this.start;\n return this.stream.findAllIn(patterns, start, this.length);\n }\n findFirstNotIn(patterns, gap = null) {\n if ((gap == null) || (gap > this._length)) {\n gap = this._length;\n }\n const result = this._stream.findFirstNotIn(patterns, this._start, this._length, this.backward);\n if ((result.left.id == (-1)) && (result.right.id == (-1))) {\n return result;\n }\n if (this.backward) {\n if (result.right.id != (-1)) {\n if (result.right.position < (this._start - patterns[result.right.id].length - gap)) {\n return {\n left: {\n id: (-1),\n position: this._start\n },\n right: {\n id: (-1),\n position: 0\n },\n value: new ByteStream()\n };\n }\n }\n }\n else {\n if (result.left.id != (-1)) {\n if (result.left.position > (this._start + patterns[result.left.id].length + gap)) {\n return {\n left: {\n id: (-1),\n position: this._start\n },\n right: {\n id: (-1),\n position: 0\n },\n value: new ByteStream()\n };\n }\n }\n }\n if (this.backward) {\n if (result.left.id == (-1)) {\n this.start = 0;\n }\n else {\n this.start = result.left.position;\n }\n }\n else {\n if (result.right.id == (-1)) {\n this.start = (this._start + this._length);\n }\n else {\n this.start = result.right.position;\n }\n }\n return result;\n }\n findAllNotIn(patterns) {\n const start = (this.backward) ? (this._start - this._length) : this._start;\n return this._stream.findAllNotIn(patterns, start, this._length);\n }\n findFirstSequence(patterns, length = null, gap = null) {\n if ((length == null) || (length > this._length)) {\n length = this._length;\n }\n if ((gap == null) || (gap > length)) {\n gap = length;\n }\n const result = this._stream.findFirstSequence(patterns, this._start, length, this.backward);\n if (result.value.length == 0) {\n return result;\n }\n if (this.backward) {\n if (result.position < (this._start - result.value.length - gap)) {\n return {\n position: (-1),\n value: new ByteStream()\n };\n }\n }\n else {\n if (result.position > (this._start + result.value.length + gap)) {\n return {\n position: (-1),\n value: new ByteStream()\n };\n }\n }\n this.start = result.position;\n return result;\n }\n findAllSequences(patterns) {\n const start = (this.backward) ? (this.start - this.length) : this.start;\n return this.stream.findAllSequences(patterns, start, this.length);\n }\n findPairedPatterns(leftPattern, rightPattern, gap = null) {\n if ((gap == null) || (gap > this.length)) {\n gap = this.length;\n }\n const start = (this.backward) ? (this.start - this.length) : this.start;\n const result = this.stream.findPairedPatterns(leftPattern, rightPattern, start, this.length);\n if (result.length) {\n if (this.backward) {\n if (result[0].right < (this.start - rightPattern.length - gap)) {\n return [];\n }\n }\n else {\n if (result[0].left > (this.start + leftPattern.length + gap)) {\n return [];\n }\n }\n }\n return result;\n }\n findPairedArrays(leftPatterns, rightPatterns, gap = null) {\n if ((gap == null) || (gap > this.length)) {\n gap = this.length;\n }\n const start = (this.backward) ? (this.start - this.length) : this.start;\n const result = this.stream.findPairedArrays(leftPatterns, rightPatterns, start, this.length);\n if (result.length) {\n if (this.backward) {\n if (result[0].right.position < (this.start - rightPatterns[result[0].right.id].length - gap)) {\n return [];\n }\n }\n else {\n if (result[0].left.position > (this.start + leftPatterns[result[0].left.id].length + gap)) {\n return [];\n }\n }\n }\n return result;\n }\n replacePattern(searchPattern, replacePattern) {\n const start = (this.backward) ? (this.start - this.length) : this.start;\n return this.stream.replacePattern(searchPattern, replacePattern, start, this.length);\n }\n skipPatterns(patterns) {\n const result = this.stream.skipPatterns(patterns, this.start, this.length, this.backward);\n this.start = result;\n return result;\n }\n skipNotPatterns(patterns) {\n const result = this.stream.skipNotPatterns(patterns, this.start, this.length, this.backward);\n if (result == (-1))\n return (-1);\n this.start = result;\n return result;\n }\n append(stream) {\n this.beforeAppend(stream.length);\n this._stream.view.set(stream.view, this._start);\n this._length += (stream.length * 2);\n this.start = (this._start + stream.length);\n this.prevLength -= (stream.length * 2);\n }\n appendView(view) {\n this.beforeAppend(view.length);\n this._stream.view.set(view, this._start);\n this._length += (view.length * 2);\n this.start = (this._start + view.length);\n this.prevLength -= (view.length * 2);\n }\n appendChar(char) {\n this.beforeAppend(1);\n this._stream.view[this._start] = char;\n this._length += 2;\n this.start = (this._start + 1);\n this.prevLength -= 2;\n }\n appendUint16(number) {\n this.beforeAppend(2);\n const value = new Uint16Array([number]);\n const view = new Uint8Array(value.buffer);\n this.stream.view[this._start] = view[1];\n this._stream.view[this._start + 1] = view[0];\n this._length += 4;\n this.start = this._start + 2;\n this.prevLength -= 4;\n }\n appendUint24(number) {\n this.beforeAppend(3);\n const value = new Uint32Array([number]);\n const view = new Uint8Array(value.buffer);\n this._stream.view[this._start] = view[2];\n this._stream.view[this._start + 1] = view[1];\n this._stream.view[this._start + 2] = view[0];\n this._length += 6;\n this.start = (this._start + 3);\n this.prevLength -= 6;\n }\n appendUint32(number) {\n this.beforeAppend(4);\n const value = new Uint32Array([number]);\n const view = new Uint8Array(value.buffer);\n this._stream.view[this._start] = view[3];\n this._stream.view[this._start + 1] = view[2];\n this._stream.view[this._start + 2] = view[1];\n this._stream.view[this._start + 3] = view[0];\n this._length += 8;\n this.start = (this._start + 4);\n this.prevLength -= 8;\n }\n appendInt16(number) {\n this.beforeAppend(2);\n const value = new Int16Array([number]);\n const view = new Uint8Array(value.buffer);\n this._stream.view[this._start] = view[1];\n this._stream.view[this._start + 1] = view[0];\n this._length += 4;\n this.start = (this._start + 2);\n this.prevLength -= 4;\n }\n appendInt32(number) {\n this.beforeAppend(4);\n const value = new Int32Array([number]);\n const view = new Uint8Array(value.buffer);\n this._stream.view[this._start] = view[3];\n this._stream.view[this._start + 1] = view[2];\n this._stream.view[this._start + 2] = view[1];\n this._stream.view[this._start + 3] = view[0];\n this._length += 8;\n this.start = (this._start + 4);\n this.prevLength -= 8;\n }\n getBlock(size, changeLength = true) {\n if (this._length <= 0) {\n return new Uint8Array(0);\n }\n if (this._length < size) {\n size = this._length;\n }\n let result;\n if (this.backward) {\n const view = this._stream.view.subarray(this._length - size, this._length);\n result = new Uint8Array(size);\n for (let i = 0; i < size; i++) {\n result[size - 1 - i] = view[i];\n }\n }\n else {\n result = this._stream.view.subarray(this._start, this._start + size);\n }\n if (changeLength) {\n this.start += ((this.backward) ? ((-1) * size) : size);\n }\n return result;\n }\n getUint16(changeLength = true) {\n const block = this.getBlock(2, changeLength);\n if (block.length < 2)\n return 0;\n return (block[0] << 8) | block[1];\n }\n getInt16(changeLength = true) {\n const num = this.getUint16(changeLength);\n const negative = 0x8000;\n if (num & negative) {\n return -(negative - (num ^ negative));\n }\n return num;\n }\n getUint24(changeLength = true) {\n const block = this.getBlock(4, changeLength);\n if (block.length < 3)\n return 0;\n return (block[0] << 16) |\n (block[1] << 8) |\n block[2];\n }\n getUint32(changeLength = true) {\n const block = this.getBlock(4, changeLength);\n if (block.length < 4)\n return 0;\n return (block[0] * pow2_24) +\n (block[1] << 16) +\n (block[2] << 8) +\n block[3];\n }\n getInt32(changeLength = true) {\n const num = this.getUint32(changeLength);\n const negative = 0x80000000;\n if (num & negative) {\n return -(negative - (num ^ negative));\n }\n return num;\n }\n beforeAppend(size) {\n if ((this._start + size) > this._stream.length) {\n if (size > this.appendBlock) {\n this.appendBlock = size + SeqStream.APPEND_BLOCK;\n }\n this._stream.realloc(this._stream.length + this.appendBlock);\n }\n }\n}\nSeqStream.APPEND_BLOCK = 1000;\n","/**\n * Assertion helpers\n * @module\n */\nfunction anumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error('positive integer expected, got ' + n);\n}\n// copied from utils\nfunction isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\nfunction abytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\nfunction ahash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\nfunction aexists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction aoutput(out, instance) {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\nexport { anumber, abytes, ahash, aexists, aoutput };\n//# sourceMappingURL=_assert.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nimport { abytes } from './_assert.js';\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nexport function isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n/** The rotate right (circular right shift) operation for uint32 */\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n/** The rotate left (circular left shift) operation for uint32 */\nexport const rotl = (word, shift) => (word << shift) | ((word >>> (32 - shift)) >>> 0);\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n// The byte swap operation for uint32\nexport const byteSwap = (word) => ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff);\n/** Conditionally byte swap if on a big-endian platform */\nexport const byteSwapIfBE = isLE\n ? (n) => n\n : (n) => byteSwap(n);\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9)\n return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F)\n return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f)\n return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * Convert hex string to byte array.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * Convert JS string to byte array.\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error('utf8ToBytes expected string, got ' + typeof str);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return crypto.randomBytes(bytesLength);\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { aexists, aoutput } from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n/**\n * Merkle-Damgard hash utils.\n * @module\n */\n/**\n * Polyfill for Safari 14\n */\nexport function setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n/**\n * Choice: a ? b : c\n */\nexport const Chi = (a, b, c) => (a & b) ^ (~a & c);\n/**\n * Majority function, true if any two inputs is true\n */\nexport const Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n aexists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_md.js.map","import { HashMD, Chi, Maj } from './_md.js';\nimport { rotl, wrapConstructor } from './utils.js';\n/**\n * SHA1 (RFC 3174) legacy hash function.\n * @module\n */\n// Initial state\nconst SHA1_IV = /* @__PURE__ */ new Uint32Array([\n 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0,\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA1_W = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA1 extends HashMD {\n constructor() {\n super(64, 20, 8, false);\n this.A = SHA1_IV[0] | 0;\n this.B = SHA1_IV[1] | 0;\n this.C = SHA1_IV[2] | 0;\n this.D = SHA1_IV[3] | 0;\n this.E = SHA1_IV[4] | 0;\n }\n get() {\n const { A, B, C, D, E } = this;\n return [A, B, C, D, E];\n }\n set(A, B, C, D, E) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n SHA1_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 80; i++)\n SHA1_W[i] = rotl(SHA1_W[i - 3] ^ SHA1_W[i - 8] ^ SHA1_W[i - 14] ^ SHA1_W[i - 16], 1);\n // Compression function main loop, 80 rounds\n let { A, B, C, D, E } = this;\n for (let i = 0; i < 80; i++) {\n let F, K;\n if (i < 20) {\n F = Chi(B, C, D);\n K = 0x5a827999;\n }\n else if (i < 40) {\n F = B ^ C ^ D;\n K = 0x6ed9eba1;\n }\n else if (i < 60) {\n F = Maj(B, C, D);\n K = 0x8f1bbcdc;\n }\n else {\n F = B ^ C ^ D;\n K = 0xca62c1d6;\n }\n const T = (rotl(A, 5) + F + E + K + SHA1_W[i]) | 0;\n E = D;\n D = C;\n C = rotl(B, 30);\n B = A;\n A = T;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n this.set(A, B, C, D, E);\n }\n roundClean() {\n SHA1_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/** SHA1 (RFC 3174) legacy hash function. It was cryptographically broken. */\nexport const sha1 = /* @__PURE__ */ wrapConstructor(() => new SHA1());\n//# sourceMappingURL=sha1.js.map","import { HashMD, Chi, Maj } from './_md.js';\nimport { rotr, wrapConstructor } from './utils.js';\n/**\n * SHA2-256 a.k.a. sha256. In JS, it is the fastest hash, even faster than Blake3.\n *\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n *\n * Check out [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\n/** Round constants: first 32 bits of fractional parts of the cube roots of the first 64 primes 2..311). */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Initial state: first 32 bits of fractional parts of the square roots of the first 8 primes 2..19. */\n// prettier-ignore\nconst SHA256_IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n/**\n * Temporary buffer, not used to store anything between runs.\n * Named this way because it matches specification.\n */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = SHA256_IV[0] | 0;\n this.B = SHA256_IV[1] | 0;\n this.C = SHA256_IV[2] | 0;\n this.D = SHA256_IV[3] | 0;\n this.E = SHA256_IV[4] | 0;\n this.F = SHA256_IV[5] | 0;\n this.G = SHA256_IV[6] | 0;\n this.H = SHA256_IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/**\n * Constants taken from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf.\n */\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/** SHA2-256 hash function */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\n/** SHA2-224 hash function */\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n/**\n * BigUint64Array is too slow as per 2024, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { HashMD } from './_md.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n/**\n * SHA2-512 a.k.a. sha512 and sha384. It is slower than sha256 in js because u64 operations are slow.\n *\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [the paper on truncated SHA512/256](https://eprint.iacr.org/2010/548.pdf).\n * @module\n */\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nexport class SHA512_224 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x8c3d37c8 | 0;\n this.Al = 0x19544da2 | 0;\n this.Bh = 0x73e19966 | 0;\n this.Bl = 0x89dcd4d6 | 0;\n this.Ch = 0x1dfab7ae | 0;\n this.Cl = 0x32ff9c82 | 0;\n this.Dh = 0x679dd514 | 0;\n this.Dl = 0x582f9fcf | 0;\n this.Eh = 0x0f6d2b69 | 0;\n this.El = 0x7bd44da8 | 0;\n this.Fh = 0x77e36f73 | 0;\n this.Fl = 0x04c48942 | 0;\n this.Gh = 0x3f9d85a8 | 0;\n this.Gl = 0x6a1d36c8 | 0;\n this.Hh = 0x1112e6ad | 0;\n this.Hl = 0x91d692a1 | 0;\n this.outputLen = 28;\n }\n}\nexport class SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nexport class SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\n/** SHA2-512 hash function. */\nexport const sha512 = /* @__PURE__ */ wrapConstructor(() => new SHA512());\n/** SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks. */\nexport const sha512_224 = /* @__PURE__ */ wrapConstructor(() => new SHA512_224());\n/** SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks. */\nexport const sha512_256 = /* @__PURE__ */ wrapConstructor(() => new SHA512_256());\n/** SHA2-384 hash function. */\nexport const sha384 = /* @__PURE__ */ wrapConstructor(() => new SHA384());\n//# sourceMappingURL=sha512.js.map","/*!\n * Copyright (c) 2014, GlobalSign\n * Copyright (c) 2015-2019, Peculiar Ventures\n * All rights reserved.\n * \n * Author 2014-2019, Yury Strozhevsky\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * * Redistributions in binary form must reproduce the above copyright notice, this\n * list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * \n * * Neither the name of the {organization} nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\n * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n */\n\nimport * as asn1js from 'asn1js';\nimport * as pvtsutils from 'pvtsutils';\nimport { BufferSourceConverter } from 'pvtsutils';\nimport * as pvutils from 'pvutils';\nimport * as bs from 'bytestreamjs';\nimport { sha1 } from '@noble/hashes/sha1';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { sha512, sha384 } from '@noble/hashes/sha512';\n\nconst EMPTY_BUFFER = new ArrayBuffer(0);\nconst EMPTY_STRING = \"\";\n\nclass ArgumentError extends TypeError {\n constructor() {\n super(...arguments);\n this.name = ArgumentError.NAME;\n }\n static isType(value, type) {\n if (typeof type === \"string\") {\n if (type === \"Array\" && Array.isArray(value)) {\n return true;\n }\n else if (type === \"ArrayBuffer\" && value instanceof ArrayBuffer) {\n return true;\n }\n else if (type === \"ArrayBufferView\" && ArrayBuffer.isView(value)) {\n return true;\n }\n else if (typeof value === type) {\n return true;\n }\n }\n else if (value instanceof type) {\n return true;\n }\n return false;\n }\n static assert(value, name, ...types) {\n for (const type of types) {\n if (this.isType(value, type)) {\n return;\n }\n }\n const typeNames = types.map(o => o instanceof Function && \"name\" in o ? o.name : `${o}`);\n throw new ArgumentError(`Parameter '${name}' is not of type ${typeNames.length > 1 ? `(${typeNames.join(\" or \")})` : typeNames[0]}`);\n }\n}\nArgumentError.NAME = \"ArgumentError\";\n\nclass ParameterError extends TypeError {\n static assert(...args) {\n let target = null;\n let params;\n let fields;\n if (typeof args[0] === \"string\") {\n target = args[0];\n params = args[1];\n fields = args.slice(2);\n }\n else {\n params = args[0];\n fields = args.slice(1);\n }\n ArgumentError.assert(params, \"parameters\", \"object\");\n for (const field of fields) {\n const value = params[field];\n if (value === undefined || value === null) {\n throw new ParameterError(field, target);\n }\n }\n }\n static assertEmpty(value, name, target) {\n if (value === undefined || value === null) {\n throw new ParameterError(name, target);\n }\n }\n constructor(field, target = null, message) {\n super();\n this.name = ParameterError.NAME;\n this.field = field;\n if (target) {\n this.target = target;\n }\n if (message) {\n this.message = message;\n }\n else {\n this.message = `Absent mandatory parameter '${field}' ${target ? ` in '${target}'` : EMPTY_STRING}`;\n }\n }\n}\nParameterError.NAME = \"ParameterError\";\n\nclass AsnError extends Error {\n static assertSchema(asn1, target) {\n if (!asn1.verified) {\n throw new Error(`Object's schema was not verified against input data for ${target}`);\n }\n }\n static assert(asn, target) {\n if (asn.offset === -1) {\n throw new AsnError(`Error during parsing of ASN.1 data. Data is not correct for '${target}'.`);\n }\n }\n constructor(message) {\n super(message);\n this.name = \"AsnError\";\n }\n}\n\nclass PkiObject {\n static blockName() {\n return this.CLASS_NAME;\n }\n static fromBER(raw) {\n const asn1 = asn1js.fromBER(raw);\n AsnError.assert(asn1, this.name);\n try {\n return new this({ schema: asn1.result });\n }\n catch (e) {\n throw new AsnError(`Cannot create '${this.CLASS_NAME}' from ASN.1 object`);\n }\n }\n static defaultValues(memberName) {\n throw new Error(`Invalid member name for ${this.CLASS_NAME} class: ${memberName}`);\n }\n static schema(parameters = {}) {\n throw new Error(`Method '${this.CLASS_NAME}.schema' should be overridden`);\n }\n get className() {\n return this.constructor.CLASS_NAME;\n }\n toString(encoding = \"hex\") {\n let schema;\n try {\n schema = this.toSchema();\n }\n catch {\n schema = this.toSchema(true);\n }\n return pvtsutils.Convert.ToString(schema.toBER(), encoding);\n }\n}\nPkiObject.CLASS_NAME = \"PkiObject\";\n\nfunction stringPrep(inputString) {\n let isSpace = false;\n let cutResult = EMPTY_STRING;\n const result = inputString.trim();\n for (let i = 0; i < result.length; i++) {\n if (result.charCodeAt(i) === 32) {\n if (isSpace === false)\n isSpace = true;\n }\n else {\n if (isSpace) {\n cutResult += \" \";\n isSpace = false;\n }\n cutResult += result[i];\n }\n }\n return cutResult.toLowerCase();\n}\n\nconst TYPE$5 = \"type\";\nconst VALUE$6 = \"value\";\nclass AttributeTypeAndValue extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.type = pvutils.getParametersValue(parameters, TYPE$5, AttributeTypeAndValue.defaultValues(TYPE$5));\n this.value = pvutils.getParametersValue(parameters, VALUE$6, AttributeTypeAndValue.defaultValues(VALUE$6));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TYPE$5:\n return EMPTY_STRING;\n case VALUE$6:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.type || EMPTY_STRING) }),\n new asn1js.Any({ name: (names.value || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n TYPE$5,\n \"typeValue\"\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, AttributeTypeAndValue.schema({\n names: {\n type: TYPE$5,\n value: \"typeValue\"\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.type = asn1.result.type.valueBlock.toString();\n this.value = asn1.result.typeValue;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.type }),\n this.value\n ]\n }));\n }\n toJSON() {\n const _object = {\n type: this.type\n };\n if (Object.keys(this.value).length !== 0) {\n _object.value = (this.value).toJSON();\n }\n else {\n _object.value = this.value;\n }\n return _object;\n }\n isEqual(compareTo) {\n const stringBlockNames = [\n asn1js.Utf8String.blockName(),\n asn1js.BmpString.blockName(),\n asn1js.UniversalString.blockName(),\n asn1js.NumericString.blockName(),\n asn1js.PrintableString.blockName(),\n asn1js.TeletexString.blockName(),\n asn1js.VideotexString.blockName(),\n asn1js.IA5String.blockName(),\n asn1js.GraphicString.blockName(),\n asn1js.VisibleString.blockName(),\n asn1js.GeneralString.blockName(),\n asn1js.CharacterString.blockName()\n ];\n if (compareTo instanceof ArrayBuffer) {\n return pvtsutils.BufferSourceConverter.isEqual(this.value.valueBeforeDecodeView, compareTo);\n }\n if (compareTo.constructor.blockName() === AttributeTypeAndValue.blockName()) {\n if (this.type !== compareTo.type)\n return false;\n const isStringPair = [false, false];\n const thisName = this.value.constructor.blockName();\n for (const name of stringBlockNames) {\n if (thisName === name) {\n isStringPair[0] = true;\n }\n if (compareTo.value.constructor.blockName() === name) {\n isStringPair[1] = true;\n }\n }\n if (isStringPair[0] !== isStringPair[1]) {\n return false;\n }\n const isString = (isStringPair[0] && isStringPair[1]);\n if (isString) {\n const value1 = stringPrep(this.value.valueBlock.value);\n const value2 = stringPrep(compareTo.value.valueBlock.value);\n if (value1.localeCompare(value2) !== 0)\n return false;\n }\n else {\n if (!pvtsutils.BufferSourceConverter.isEqual(this.value.valueBeforeDecodeView, compareTo.value.valueBeforeDecodeView))\n return false;\n }\n return true;\n }\n return false;\n }\n}\nAttributeTypeAndValue.CLASS_NAME = \"AttributeTypeAndValue\";\n\nconst TYPE_AND_VALUES = \"typesAndValues\";\nconst VALUE_BEFORE_DECODE = \"valueBeforeDecode\";\nconst RDN = \"RDN\";\nclass RelativeDistinguishedNames extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.typesAndValues = pvutils.getParametersValue(parameters, TYPE_AND_VALUES, RelativeDistinguishedNames.defaultValues(TYPE_AND_VALUES));\n this.valueBeforeDecode = pvutils.getParametersValue(parameters, VALUE_BEFORE_DECODE, RelativeDistinguishedNames.defaultValues(VALUE_BEFORE_DECODE));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TYPE_AND_VALUES:\n return [];\n case VALUE_BEFORE_DECODE:\n return EMPTY_BUFFER;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TYPE_AND_VALUES:\n return (memberValue.length === 0);\n case VALUE_BEFORE_DECODE:\n return (memberValue.byteLength === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.repeatedSequence || EMPTY_STRING),\n value: new asn1js.Set({\n value: [\n new asn1js.Repeated({\n name: (names.repeatedSet || EMPTY_STRING),\n value: AttributeTypeAndValue.schema(names.typeAndValue || {})\n })\n ]\n })\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n RDN,\n TYPE_AND_VALUES\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, RelativeDistinguishedNames.schema({\n names: {\n blockName: RDN,\n repeatedSet: TYPE_AND_VALUES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (TYPE_AND_VALUES in asn1.result) {\n this.typesAndValues = Array.from(asn1.result.typesAndValues, element => new AttributeTypeAndValue({ schema: element }));\n }\n this.valueBeforeDecode = asn1.result.RDN.valueBeforeDecodeView.slice().buffer;\n }\n toSchema() {\n if (this.valueBeforeDecode.byteLength === 0) {\n return (new asn1js.Sequence({\n value: [new asn1js.Set({\n value: Array.from(this.typesAndValues, o => o.toSchema())\n })]\n }));\n }\n const asn1 = asn1js.fromBER(this.valueBeforeDecode);\n AsnError.assert(asn1, \"RelativeDistinguishedNames\");\n if (!(asn1.result instanceof asn1js.Sequence)) {\n throw new Error(\"ASN.1 result should be SEQUENCE\");\n }\n return asn1.result;\n }\n toJSON() {\n return {\n typesAndValues: Array.from(this.typesAndValues, o => o.toJSON())\n };\n }\n isEqual(compareTo) {\n if (compareTo instanceof RelativeDistinguishedNames) {\n if (this.typesAndValues.length !== compareTo.typesAndValues.length)\n return false;\n for (const [index, typeAndValue] of this.typesAndValues.entries()) {\n if (typeAndValue.isEqual(compareTo.typesAndValues[index]) === false)\n return false;\n }\n return true;\n }\n if (compareTo instanceof ArrayBuffer) {\n return pvutils.isEqualBuffer(this.valueBeforeDecode, compareTo);\n }\n return false;\n }\n}\nRelativeDistinguishedNames.CLASS_NAME = \"RelativeDistinguishedNames\";\n\nconst TYPE$4 = \"type\";\nconst VALUE$5 = \"value\";\nfunction builtInStandardAttributes(parameters = {}, optional = false) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n optional,\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 2,\n tagNumber: 1\n },\n name: (names.country_name || EMPTY_STRING),\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.NumericString(),\n new asn1js.PrintableString()\n ]\n })\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 2,\n tagNumber: 2\n },\n name: (names.administration_domain_name || EMPTY_STRING),\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.NumericString(),\n new asn1js.PrintableString()\n ]\n })\n ]\n }),\n new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n name: (names.network_address || EMPTY_STRING),\n isHexOnly: true\n }),\n new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n name: (names.terminal_identifier || EMPTY_STRING),\n isHexOnly: true\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n name: (names.private_domain_name || EMPTY_STRING),\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.NumericString(),\n new asn1js.PrintableString()\n ]\n })\n ]\n }),\n new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n name: (names.organization_name || EMPTY_STRING),\n isHexOnly: true\n }),\n new asn1js.Primitive({\n optional: true,\n name: (names.numeric_user_identifier || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 4\n },\n isHexOnly: true\n }),\n new asn1js.Constructed({\n optional: true,\n name: (names.personal_name || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 5\n },\n value: [\n new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n isHexOnly: true\n }),\n new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n isHexOnly: true\n }),\n new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n isHexOnly: true\n }),\n new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n isHexOnly: true\n })\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n name: (names.organizational_unit_names || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 6\n },\n value: [\n new asn1js.Repeated({\n value: new asn1js.PrintableString()\n })\n ]\n })\n ]\n }));\n}\nfunction builtInDomainDefinedAttributes(optional = false) {\n return (new asn1js.Sequence({\n optional,\n value: [\n new asn1js.PrintableString(),\n new asn1js.PrintableString()\n ]\n }));\n}\nfunction extensionAttributes(optional = false) {\n return (new asn1js.Set({\n optional,\n value: [\n new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n isHexOnly: true\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [new asn1js.Any()]\n })\n ]\n }));\n}\nclass GeneralName extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.type = pvutils.getParametersValue(parameters, TYPE$4, GeneralName.defaultValues(TYPE$4));\n this.value = pvutils.getParametersValue(parameters, VALUE$5, GeneralName.defaultValues(VALUE$5));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TYPE$4:\n return 9;\n case VALUE$5:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TYPE$4:\n return (memberValue === GeneralName.defaultValues(memberName));\n case VALUE$5:\n return (Object.keys(memberValue).length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Choice({\n value: [\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier(),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Any()]\n })\n ]\n }),\n new asn1js.Primitive({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n }\n }),\n new asn1js.Primitive({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n }\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n name: (names.blockName || EMPTY_STRING),\n value: [\n builtInStandardAttributes((names.builtInStandardAttributes || {}), false),\n builtInDomainDefinedAttributes(true),\n extensionAttributes(true)\n ]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 4\n },\n name: (names.blockName || EMPTY_STRING),\n value: [RelativeDistinguishedNames.schema(names.directoryName || {})]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 5\n },\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.TeletexString(),\n new asn1js.PrintableString(),\n new asn1js.UniversalString(),\n new asn1js.Utf8String(),\n new asn1js.BmpString()\n ]\n })\n ]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.TeletexString(),\n new asn1js.PrintableString(),\n new asn1js.UniversalString(),\n new asn1js.Utf8String(),\n new asn1js.BmpString()\n ]\n })\n ]\n })\n ]\n }),\n new asn1js.Primitive({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 6\n }\n }),\n new asn1js.Primitive({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 7\n }\n }),\n new asn1js.Primitive({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 8\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n \"blockName\",\n \"otherName\",\n \"rfc822Name\",\n \"dNSName\",\n \"x400Address\",\n \"directoryName\",\n \"ediPartyName\",\n \"uniformResourceIdentifier\",\n \"iPAddress\",\n \"registeredID\"\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, GeneralName.schema({\n names: {\n blockName: \"blockName\",\n otherName: \"otherName\",\n rfc822Name: \"rfc822Name\",\n dNSName: \"dNSName\",\n x400Address: \"x400Address\",\n directoryName: {\n names: {\n blockName: \"directoryName\"\n }\n },\n ediPartyName: \"ediPartyName\",\n uniformResourceIdentifier: \"uniformResourceIdentifier\",\n iPAddress: \"iPAddress\",\n registeredID: \"registeredID\"\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.type = asn1.result.blockName.idBlock.tagNumber;\n switch (this.type) {\n case 0:\n this.value = asn1.result.blockName;\n break;\n case 1:\n case 2:\n case 6:\n {\n const value = asn1.result.blockName;\n value.idBlock.tagClass = 1;\n value.idBlock.tagNumber = 22;\n const valueBER = value.toBER(false);\n const asnValue = asn1js.fromBER(valueBER);\n AsnError.assert(asnValue, \"GeneralName value\");\n this.value = asnValue.result.valueBlock.value;\n }\n break;\n case 3:\n this.value = asn1.result.blockName;\n break;\n case 4:\n this.value = new RelativeDistinguishedNames({ schema: asn1.result.directoryName });\n break;\n case 5:\n this.value = asn1.result.ediPartyName;\n break;\n case 7:\n this.value = new asn1js.OctetString({ valueHex: asn1.result.blockName.valueBlock.valueHex });\n break;\n case 8:\n {\n const value = asn1.result.blockName;\n value.idBlock.tagClass = 1;\n value.idBlock.tagNumber = 6;\n const valueBER = value.toBER(false);\n const asnValue = asn1js.fromBER(valueBER);\n AsnError.assert(asnValue, \"GeneralName registeredID\");\n this.value = asnValue.result.valueBlock.toString();\n }\n break;\n }\n }\n toSchema() {\n switch (this.type) {\n case 0:\n case 3:\n case 5:\n return new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: this.type\n },\n value: [\n this.value\n ]\n });\n case 1:\n case 2:\n case 6:\n {\n const value = new asn1js.IA5String({ value: this.value });\n value.idBlock.tagClass = 3;\n value.idBlock.tagNumber = this.type;\n return value;\n }\n case 4:\n return new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 4\n },\n value: [this.value.toSchema()]\n });\n case 7:\n {\n const value = this.value;\n value.idBlock.tagClass = 3;\n value.idBlock.tagNumber = this.type;\n return value;\n }\n case 8:\n {\n const value = new asn1js.ObjectIdentifier({ value: this.value });\n value.idBlock.tagClass = 3;\n value.idBlock.tagNumber = this.type;\n return value;\n }\n default:\n return GeneralName.schema();\n }\n }\n toJSON() {\n const _object = {\n type: this.type,\n value: EMPTY_STRING\n };\n if ((typeof this.value) === \"string\")\n _object.value = this.value;\n else {\n try {\n _object.value = this.value.toJSON();\n }\n catch (ex) {\n }\n }\n return _object;\n }\n}\nGeneralName.CLASS_NAME = \"GeneralName\";\n\nconst ACCESS_METHOD = \"accessMethod\";\nconst ACCESS_LOCATION = \"accessLocation\";\nconst CLEAR_PROPS$1v = [\n ACCESS_METHOD,\n ACCESS_LOCATION,\n];\nclass AccessDescription extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.accessMethod = pvutils.getParametersValue(parameters, ACCESS_METHOD, AccessDescription.defaultValues(ACCESS_METHOD));\n this.accessLocation = pvutils.getParametersValue(parameters, ACCESS_LOCATION, AccessDescription.defaultValues(ACCESS_LOCATION));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ACCESS_METHOD:\n return EMPTY_STRING;\n case ACCESS_LOCATION:\n return new GeneralName();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.accessMethod || EMPTY_STRING) }),\n GeneralName.schema(names.accessLocation || {})\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1v);\n const asn1 = asn1js.compareSchema(schema, schema, AccessDescription.schema({\n names: {\n accessMethod: ACCESS_METHOD,\n accessLocation: {\n names: {\n blockName: ACCESS_LOCATION\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.accessMethod = asn1.result.accessMethod.valueBlock.toString();\n this.accessLocation = new GeneralName({ schema: asn1.result.accessLocation });\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.accessMethod }),\n this.accessLocation.toSchema()\n ]\n }));\n }\n toJSON() {\n return {\n accessMethod: this.accessMethod,\n accessLocation: this.accessLocation.toJSON()\n };\n }\n}\nAccessDescription.CLASS_NAME = \"AccessDescription\";\n\nconst SECONDS = \"seconds\";\nconst MILLIS = \"millis\";\nconst MICROS = \"micros\";\nclass Accuracy extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (SECONDS in parameters) {\n this.seconds = pvutils.getParametersValue(parameters, SECONDS, Accuracy.defaultValues(SECONDS));\n }\n if (MILLIS in parameters) {\n this.millis = pvutils.getParametersValue(parameters, MILLIS, Accuracy.defaultValues(MILLIS));\n }\n if (MICROS in parameters) {\n this.micros = pvutils.getParametersValue(parameters, MICROS, Accuracy.defaultValues(MICROS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case SECONDS:\n case MILLIS:\n case MICROS:\n return 0;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case SECONDS:\n case MILLIS:\n case MICROS:\n return (memberValue === Accuracy.defaultValues(memberName));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n optional: true,\n value: [\n new asn1js.Integer({\n optional: true,\n name: (names.seconds || EMPTY_STRING)\n }),\n new asn1js.Primitive({\n name: (names.millis || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n }\n }),\n new asn1js.Primitive({\n name: (names.micros || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n SECONDS,\n MILLIS,\n MICROS,\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, Accuracy.schema({\n names: {\n seconds: SECONDS,\n millis: MILLIS,\n micros: MICROS,\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (\"seconds\" in asn1.result) {\n this.seconds = asn1.result.seconds.valueBlock.valueDec;\n }\n if (\"millis\" in asn1.result) {\n const intMillis = new asn1js.Integer({ valueHex: asn1.result.millis.valueBlock.valueHex });\n this.millis = intMillis.valueBlock.valueDec;\n }\n if (\"micros\" in asn1.result) {\n const intMicros = new asn1js.Integer({ valueHex: asn1.result.micros.valueBlock.valueHex });\n this.micros = intMicros.valueBlock.valueDec;\n }\n }\n toSchema() {\n const outputArray = [];\n if (this.seconds !== undefined)\n outputArray.push(new asn1js.Integer({ value: this.seconds }));\n if (this.millis !== undefined) {\n const intMillis = new asn1js.Integer({ value: this.millis });\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n valueHex: intMillis.valueBlock.valueHexView\n }));\n }\n if (this.micros !== undefined) {\n const intMicros = new asn1js.Integer({ value: this.micros });\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n valueHex: intMicros.valueBlock.valueHexView\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const _object = {};\n if (this.seconds !== undefined)\n _object.seconds = this.seconds;\n if (this.millis !== undefined)\n _object.millis = this.millis;\n if (this.micros !== undefined)\n _object.micros = this.micros;\n return _object;\n }\n}\nAccuracy.CLASS_NAME = \"Accuracy\";\n\nconst ALGORITHM_ID = \"algorithmId\";\nconst ALGORITHM_PARAMS = \"algorithmParams\";\nconst ALGORITHM$2 = \"algorithm\";\nconst PARAMS = \"params\";\nconst CLEAR_PROPS$1u = [\n ALGORITHM$2,\n PARAMS\n];\nclass AlgorithmIdentifier extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.algorithmId = pvutils.getParametersValue(parameters, ALGORITHM_ID, AlgorithmIdentifier.defaultValues(ALGORITHM_ID));\n if (ALGORITHM_PARAMS in parameters) {\n this.algorithmParams = pvutils.getParametersValue(parameters, ALGORITHM_PARAMS, AlgorithmIdentifier.defaultValues(ALGORITHM_PARAMS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ALGORITHM_ID:\n return EMPTY_STRING;\n case ALGORITHM_PARAMS:\n return new asn1js.Any();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case ALGORITHM_ID:\n return (memberValue === EMPTY_STRING);\n case ALGORITHM_PARAMS:\n return (memberValue instanceof asn1js.Any);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n optional: (names.optional || false),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.algorithmIdentifier || EMPTY_STRING) }),\n new asn1js.Any({ name: (names.algorithmParams || EMPTY_STRING), optional: true })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1u);\n const asn1 = asn1js.compareSchema(schema, schema, AlgorithmIdentifier.schema({\n names: {\n algorithmIdentifier: ALGORITHM$2,\n algorithmParams: PARAMS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.algorithmId = asn1.result.algorithm.valueBlock.toString();\n if (PARAMS in asn1.result) {\n this.algorithmParams = asn1.result.params;\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.algorithmId }));\n if (this.algorithmParams && !(this.algorithmParams instanceof asn1js.Any)) {\n outputArray.push(this.algorithmParams);\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const object = {\n algorithmId: this.algorithmId\n };\n if (this.algorithmParams && !(this.algorithmParams instanceof asn1js.Any)) {\n object.algorithmParams = this.algorithmParams.toJSON();\n }\n return object;\n }\n isEqual(algorithmIdentifier) {\n if (!(algorithmIdentifier instanceof AlgorithmIdentifier)) {\n return false;\n }\n if (this.algorithmId !== algorithmIdentifier.algorithmId) {\n return false;\n }\n if (this.algorithmParams) {\n if (algorithmIdentifier.algorithmParams) {\n return JSON.stringify(this.algorithmParams) === JSON.stringify(algorithmIdentifier.algorithmParams);\n }\n return false;\n }\n if (algorithmIdentifier.algorithmParams) {\n return false;\n }\n return true;\n }\n}\nAlgorithmIdentifier.CLASS_NAME = \"AlgorithmIdentifier\";\n\nconst ALT_NAMES = \"altNames\";\nconst CLEAR_PROPS$1t = [\n ALT_NAMES\n];\nclass AltName extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.altNames = pvutils.getParametersValue(parameters, ALT_NAMES, AltName.defaultValues(ALT_NAMES));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ALT_NAMES:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.altNames || EMPTY_STRING),\n value: GeneralName.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1t);\n const asn1 = asn1js.compareSchema(schema, schema, AltName.schema({\n names: {\n altNames: ALT_NAMES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (ALT_NAMES in asn1.result) {\n this.altNames = Array.from(asn1.result.altNames, element => new GeneralName({ schema: element }));\n }\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.altNames, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n altNames: Array.from(this.altNames, o => o.toJSON())\n };\n }\n}\nAltName.CLASS_NAME = \"AltName\";\n\nconst TYPE$3 = \"type\";\nconst VALUES$1 = \"values\";\nconst CLEAR_PROPS$1s = [\n TYPE$3,\n VALUES$1\n];\nclass Attribute extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.type = pvutils.getParametersValue(parameters, TYPE$3, Attribute.defaultValues(TYPE$3));\n this.values = pvutils.getParametersValue(parameters, VALUES$1, Attribute.defaultValues(VALUES$1));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TYPE$3:\n return EMPTY_STRING;\n case VALUES$1:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TYPE$3:\n return (memberValue === EMPTY_STRING);\n case VALUES$1:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.type || EMPTY_STRING) }),\n new asn1js.Set({\n name: (names.setName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.values || EMPTY_STRING),\n value: new asn1js.Any()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1s);\n const asn1 = asn1js.compareSchema(schema, schema, Attribute.schema({\n names: {\n type: TYPE$3,\n values: VALUES$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.type = asn1.result.type.valueBlock.toString();\n this.values = asn1.result.values;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.type }),\n new asn1js.Set({\n value: this.values\n })\n ]\n }));\n }\n toJSON() {\n return {\n type: this.type,\n values: Array.from(this.values, o => o.toJSON())\n };\n }\n}\nAttribute.CLASS_NAME = \"Attribute\";\n\nconst NOT_BEFORE_TIME = \"notBeforeTime\";\nconst NOT_AFTER_TIME = \"notAfterTime\";\nconst CLEAR_PROPS$1r = [\n NOT_BEFORE_TIME,\n NOT_AFTER_TIME,\n];\nclass AttCertValidityPeriod extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.notBeforeTime = pvutils.getParametersValue(parameters, NOT_BEFORE_TIME, AttCertValidityPeriod.defaultValues(NOT_BEFORE_TIME));\n this.notAfterTime = pvutils.getParametersValue(parameters, NOT_AFTER_TIME, AttCertValidityPeriod.defaultValues(NOT_AFTER_TIME));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case NOT_BEFORE_TIME:\n case NOT_AFTER_TIME:\n return new Date(0, 0, 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.GeneralizedTime({ name: (names.notBeforeTime || EMPTY_STRING) }),\n new asn1js.GeneralizedTime({ name: (names.notAfterTime || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1r);\n const asn1 = asn1js.compareSchema(schema, schema, AttCertValidityPeriod.schema({\n names: {\n notBeforeTime: NOT_BEFORE_TIME,\n notAfterTime: NOT_AFTER_TIME\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.notBeforeTime = asn1.result.notBeforeTime.toDate();\n this.notAfterTime = asn1.result.notAfterTime.toDate();\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.GeneralizedTime({ valueDate: this.notBeforeTime }),\n new asn1js.GeneralizedTime({ valueDate: this.notAfterTime }),\n ]\n }));\n }\n toJSON() {\n return {\n notBeforeTime: this.notBeforeTime,\n notAfterTime: this.notAfterTime\n };\n }\n}\nAttCertValidityPeriod.CLASS_NAME = \"AttCertValidityPeriod\";\n\nconst NAMES = \"names\";\nconst GENERAL_NAMES = \"generalNames\";\nclass GeneralNames extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.names = pvutils.getParametersValue(parameters, NAMES, GeneralNames.defaultValues(NAMES));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case \"names\":\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}, optional = false) {\n const names = pvutils.getParametersValue(parameters, NAMES, {});\n return (new asn1js.Sequence({\n optional,\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.generalNames || EMPTY_STRING),\n value: GeneralName.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n NAMES,\n GENERAL_NAMES\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, GeneralNames.schema({\n names: {\n blockName: NAMES,\n generalNames: GENERAL_NAMES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.names = Array.from(asn1.result.generalNames, element => new GeneralName({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.names, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n names: Array.from(this.names, o => o.toJSON())\n };\n }\n}\nGeneralNames.CLASS_NAME = \"GeneralNames\";\n\nconst id_SubjectDirectoryAttributes = \"2.5.29.9\";\nconst id_SubjectKeyIdentifier = \"2.5.29.14\";\nconst id_KeyUsage = \"2.5.29.15\";\nconst id_PrivateKeyUsagePeriod = \"2.5.29.16\";\nconst id_SubjectAltName = \"2.5.29.17\";\nconst id_IssuerAltName = \"2.5.29.18\";\nconst id_BasicConstraints = \"2.5.29.19\";\nconst id_CRLNumber = \"2.5.29.20\";\nconst id_BaseCRLNumber = \"2.5.29.27\";\nconst id_CRLReason = \"2.5.29.21\";\nconst id_InvalidityDate = \"2.5.29.24\";\nconst id_IssuingDistributionPoint = \"2.5.29.28\";\nconst id_CertificateIssuer = \"2.5.29.29\";\nconst id_NameConstraints = \"2.5.29.30\";\nconst id_CRLDistributionPoints = \"2.5.29.31\";\nconst id_FreshestCRL = \"2.5.29.46\";\nconst id_CertificatePolicies = \"2.5.29.32\";\nconst id_AnyPolicy = \"2.5.29.32.0\";\nconst id_MicrosoftAppPolicies = \"1.3.6.1.4.1.311.21.10\";\nconst id_PolicyMappings = \"2.5.29.33\";\nconst id_AuthorityKeyIdentifier = \"2.5.29.35\";\nconst id_PolicyConstraints = \"2.5.29.36\";\nconst id_ExtKeyUsage = \"2.5.29.37\";\nconst id_InhibitAnyPolicy = \"2.5.29.54\";\nconst id_AuthorityInfoAccess = \"1.3.6.1.5.5.7.1.1\";\nconst id_SubjectInfoAccess = \"1.3.6.1.5.5.7.1.11\";\nconst id_SignedCertificateTimestampList = \"1.3.6.1.4.1.11129.2.4.2\";\nconst id_MicrosoftCertTemplateV1 = \"1.3.6.1.4.1.311.20.2\";\nconst id_MicrosoftPrevCaCertHash = \"1.3.6.1.4.1.311.21.2\";\nconst id_MicrosoftCertTemplateV2 = \"1.3.6.1.4.1.311.21.7\";\nconst id_MicrosoftCaVersion = \"1.3.6.1.4.1.311.21.1\";\nconst id_QCStatements = \"1.3.6.1.5.5.7.1.3\";\nconst id_ContentType_Data = \"1.2.840.113549.1.7.1\";\nconst id_ContentType_SignedData = \"1.2.840.113549.1.7.2\";\nconst id_ContentType_EnvelopedData = \"1.2.840.113549.1.7.3\";\nconst id_ContentType_EncryptedData = \"1.2.840.113549.1.7.6\";\nconst id_eContentType_TSTInfo = \"1.2.840.113549.1.9.16.1.4\";\nconst id_CertBag_X509Certificate = \"1.2.840.113549.1.9.22.1\";\nconst id_CertBag_SDSICertificate = \"1.2.840.113549.1.9.22.2\";\nconst id_CertBag_AttributeCertificate = \"1.2.840.113549.1.9.22.3\";\nconst id_CRLBag_X509CRL = \"1.2.840.113549.1.9.23.1\";\nconst id_pkix = \"1.3.6.1.5.5.7\";\nconst id_ad = `${id_pkix}.48`;\nconst id_PKIX_OCSP_Basic = `${id_ad}.1.1`;\nconst id_ad_caIssuers = `${id_ad}.2`;\nconst id_ad_ocsp = `${id_ad}.1`;\nconst id_sha1 = \"1.3.14.3.2.26\";\nconst id_sha256 = \"2.16.840.1.101.3.4.2.1\";\nconst id_sha384 = \"2.16.840.1.101.3.4.2.2\";\nconst id_sha512 = \"2.16.840.1.101.3.4.2.3\";\n\nconst KEY_IDENTIFIER$1 = \"keyIdentifier\";\nconst AUTHORITY_CERT_ISSUER = \"authorityCertIssuer\";\nconst AUTHORITY_CERT_SERIAL_NUMBER = \"authorityCertSerialNumber\";\nconst CLEAR_PROPS$1q = [\n KEY_IDENTIFIER$1,\n AUTHORITY_CERT_ISSUER,\n AUTHORITY_CERT_SERIAL_NUMBER,\n];\nclass AuthorityKeyIdentifier extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (KEY_IDENTIFIER$1 in parameters) {\n this.keyIdentifier = pvutils.getParametersValue(parameters, KEY_IDENTIFIER$1, AuthorityKeyIdentifier.defaultValues(KEY_IDENTIFIER$1));\n }\n if (AUTHORITY_CERT_ISSUER in parameters) {\n this.authorityCertIssuer = pvutils.getParametersValue(parameters, AUTHORITY_CERT_ISSUER, AuthorityKeyIdentifier.defaultValues(AUTHORITY_CERT_ISSUER));\n }\n if (AUTHORITY_CERT_SERIAL_NUMBER in parameters) {\n this.authorityCertSerialNumber = pvutils.getParametersValue(parameters, AUTHORITY_CERT_SERIAL_NUMBER, AuthorityKeyIdentifier.defaultValues(AUTHORITY_CERT_SERIAL_NUMBER));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case KEY_IDENTIFIER$1:\n return new asn1js.OctetString();\n case AUTHORITY_CERT_ISSUER:\n return [];\n case AUTHORITY_CERT_SERIAL_NUMBER:\n return new asn1js.Integer();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Primitive({\n name: (names.keyIdentifier || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n }\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.Repeated({\n name: (names.authorityCertIssuer || EMPTY_STRING),\n value: GeneralName.schema()\n })\n ]\n }),\n new asn1js.Primitive({\n name: (names.authorityCertSerialNumber || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1q);\n const asn1 = asn1js.compareSchema(schema, schema, AuthorityKeyIdentifier.schema({\n names: {\n keyIdentifier: KEY_IDENTIFIER$1,\n authorityCertIssuer: AUTHORITY_CERT_ISSUER,\n authorityCertSerialNumber: AUTHORITY_CERT_SERIAL_NUMBER\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (KEY_IDENTIFIER$1 in asn1.result)\n this.keyIdentifier = new asn1js.OctetString({ valueHex: asn1.result.keyIdentifier.valueBlock.valueHex });\n if (AUTHORITY_CERT_ISSUER in asn1.result)\n this.authorityCertIssuer = Array.from(asn1.result.authorityCertIssuer, o => new GeneralName({ schema: o }));\n if (AUTHORITY_CERT_SERIAL_NUMBER in asn1.result)\n this.authorityCertSerialNumber = new asn1js.Integer({ valueHex: asn1.result.authorityCertSerialNumber.valueBlock.valueHex });\n }\n toSchema() {\n const outputArray = [];\n if (this.keyIdentifier) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n valueHex: this.keyIdentifier.valueBlock.valueHexView\n }));\n }\n if (this.authorityCertIssuer) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: Array.from(this.authorityCertIssuer, o => o.toSchema())\n }));\n }\n if (this.authorityCertSerialNumber) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n valueHex: this.authorityCertSerialNumber.valueBlock.valueHexView\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const object = {};\n if (this.keyIdentifier) {\n object.keyIdentifier = this.keyIdentifier.toJSON();\n }\n if (this.authorityCertIssuer) {\n object.authorityCertIssuer = Array.from(this.authorityCertIssuer, o => o.toJSON());\n }\n if (this.authorityCertSerialNumber) {\n object.authorityCertSerialNumber = this.authorityCertSerialNumber.toJSON();\n }\n return object;\n }\n}\nAuthorityKeyIdentifier.CLASS_NAME = \"AuthorityKeyIdentifier\";\n\nconst PATH_LENGTH_CONSTRAINT = \"pathLenConstraint\";\nconst CA = \"cA\";\nclass BasicConstraints extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.cA = pvutils.getParametersValue(parameters, CA, false);\n if (PATH_LENGTH_CONSTRAINT in parameters) {\n this.pathLenConstraint = pvutils.getParametersValue(parameters, PATH_LENGTH_CONSTRAINT, 0);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CA:\n return false;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Boolean({\n optional: true,\n name: (names.cA || EMPTY_STRING)\n }),\n new asn1js.Integer({\n optional: true,\n name: (names.pathLenConstraint || EMPTY_STRING)\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n CA,\n PATH_LENGTH_CONSTRAINT\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, BasicConstraints.schema({\n names: {\n cA: CA,\n pathLenConstraint: PATH_LENGTH_CONSTRAINT\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (CA in asn1.result) {\n this.cA = asn1.result.cA.valueBlock.value;\n }\n if (PATH_LENGTH_CONSTRAINT in asn1.result) {\n if (asn1.result.pathLenConstraint.valueBlock.isHexOnly) {\n this.pathLenConstraint = asn1.result.pathLenConstraint;\n }\n else {\n this.pathLenConstraint = asn1.result.pathLenConstraint.valueBlock.valueDec;\n }\n }\n }\n toSchema() {\n const outputArray = [];\n if (this.cA !== BasicConstraints.defaultValues(CA))\n outputArray.push(new asn1js.Boolean({ value: this.cA }));\n if (PATH_LENGTH_CONSTRAINT in this) {\n if (this.pathLenConstraint instanceof asn1js.Integer) {\n outputArray.push(this.pathLenConstraint);\n }\n else {\n outputArray.push(new asn1js.Integer({ value: this.pathLenConstraint }));\n }\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const object = {};\n if (this.cA !== BasicConstraints.defaultValues(CA)) {\n object.cA = this.cA;\n }\n if (PATH_LENGTH_CONSTRAINT in this) {\n if (this.pathLenConstraint instanceof asn1js.Integer) {\n object.pathLenConstraint = this.pathLenConstraint.toJSON();\n }\n else {\n object.pathLenConstraint = this.pathLenConstraint;\n }\n }\n return object;\n }\n}\nBasicConstraints.CLASS_NAME = \"BasicConstraints\";\n\nconst CERTIFICATE_INDEX = \"certificateIndex\";\nconst KEY_INDEX = \"keyIndex\";\nclass CAVersion extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.certificateIndex = pvutils.getParametersValue(parameters, CERTIFICATE_INDEX, CAVersion.defaultValues(CERTIFICATE_INDEX));\n this.keyIndex = pvutils.getParametersValue(parameters, KEY_INDEX, CAVersion.defaultValues(KEY_INDEX));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CERTIFICATE_INDEX:\n case KEY_INDEX:\n return 0;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema() {\n return (new asn1js.Integer());\n }\n fromSchema(schema) {\n if (schema.constructor.blockName() !== asn1js.Integer.blockName()) {\n throw new Error(\"Object's schema was not verified against input data for CAVersion\");\n }\n let value = schema.valueBlock.valueHex.slice(0);\n const valueView = new Uint8Array(value);\n switch (true) {\n case (value.byteLength < 4):\n {\n const tempValue = new ArrayBuffer(4);\n const tempValueView = new Uint8Array(tempValue);\n tempValueView.set(valueView, 4 - value.byteLength);\n value = tempValue.slice(0);\n }\n break;\n case (value.byteLength > 4):\n {\n const tempValue = new ArrayBuffer(4);\n const tempValueView = new Uint8Array(tempValue);\n tempValueView.set(valueView.slice(0, 4));\n value = tempValue.slice(0);\n }\n break;\n }\n const keyIndexBuffer = value.slice(0, 2);\n const keyIndexView8 = new Uint8Array(keyIndexBuffer);\n let temp = keyIndexView8[0];\n keyIndexView8[0] = keyIndexView8[1];\n keyIndexView8[1] = temp;\n const keyIndexView16 = new Uint16Array(keyIndexBuffer);\n this.keyIndex = keyIndexView16[0];\n const certificateIndexBuffer = value.slice(2);\n const certificateIndexView8 = new Uint8Array(certificateIndexBuffer);\n temp = certificateIndexView8[0];\n certificateIndexView8[0] = certificateIndexView8[1];\n certificateIndexView8[1] = temp;\n const certificateIndexView16 = new Uint16Array(certificateIndexBuffer);\n this.certificateIndex = certificateIndexView16[0];\n }\n toSchema() {\n const certificateIndexBuffer = new ArrayBuffer(2);\n const certificateIndexView = new Uint16Array(certificateIndexBuffer);\n certificateIndexView[0] = this.certificateIndex;\n const certificateIndexView8 = new Uint8Array(certificateIndexBuffer);\n let temp = certificateIndexView8[0];\n certificateIndexView8[0] = certificateIndexView8[1];\n certificateIndexView8[1] = temp;\n const keyIndexBuffer = new ArrayBuffer(2);\n const keyIndexView = new Uint16Array(keyIndexBuffer);\n keyIndexView[0] = this.keyIndex;\n const keyIndexView8 = new Uint8Array(keyIndexBuffer);\n temp = keyIndexView8[0];\n keyIndexView8[0] = keyIndexView8[1];\n keyIndexView8[1] = temp;\n return (new asn1js.Integer({\n valueHex: pvutils.utilConcatBuf(keyIndexBuffer, certificateIndexBuffer)\n }));\n }\n toJSON() {\n return {\n certificateIndex: this.certificateIndex,\n keyIndex: this.keyIndex\n };\n }\n}\nCAVersion.CLASS_NAME = \"CAVersion\";\n\nconst POLICY_QUALIFIER_ID = \"policyQualifierId\";\nconst QUALIFIER = \"qualifier\";\nconst CLEAR_PROPS$1p = [\n POLICY_QUALIFIER_ID,\n QUALIFIER\n];\nclass PolicyQualifierInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.policyQualifierId = pvutils.getParametersValue(parameters, POLICY_QUALIFIER_ID, PolicyQualifierInfo.defaultValues(POLICY_QUALIFIER_ID));\n this.qualifier = pvutils.getParametersValue(parameters, QUALIFIER, PolicyQualifierInfo.defaultValues(QUALIFIER));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case POLICY_QUALIFIER_ID:\n return EMPTY_STRING;\n case QUALIFIER:\n return new asn1js.Any();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.policyQualifierId || EMPTY_STRING) }),\n new asn1js.Any({ name: (names.qualifier || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1p);\n const asn1 = asn1js.compareSchema(schema, schema, PolicyQualifierInfo.schema({\n names: {\n policyQualifierId: POLICY_QUALIFIER_ID,\n qualifier: QUALIFIER\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.policyQualifierId = asn1.result.policyQualifierId.valueBlock.toString();\n this.qualifier = asn1.result.qualifier;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.policyQualifierId }),\n this.qualifier\n ]\n }));\n }\n toJSON() {\n return {\n policyQualifierId: this.policyQualifierId,\n qualifier: this.qualifier.toJSON()\n };\n }\n}\nPolicyQualifierInfo.CLASS_NAME = \"PolicyQualifierInfo\";\n\nconst POLICY_IDENTIFIER = \"policyIdentifier\";\nconst POLICY_QUALIFIERS = \"policyQualifiers\";\nconst CLEAR_PROPS$1o = [\n POLICY_IDENTIFIER,\n POLICY_QUALIFIERS\n];\nclass PolicyInformation extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.policyIdentifier = pvutils.getParametersValue(parameters, POLICY_IDENTIFIER, PolicyInformation.defaultValues(POLICY_IDENTIFIER));\n if (POLICY_QUALIFIERS in parameters) {\n this.policyQualifiers = pvutils.getParametersValue(parameters, POLICY_QUALIFIERS, PolicyInformation.defaultValues(POLICY_QUALIFIERS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case POLICY_IDENTIFIER:\n return EMPTY_STRING;\n case POLICY_QUALIFIERS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.policyIdentifier || EMPTY_STRING) }),\n new asn1js.Sequence({\n optional: true,\n value: [\n new asn1js.Repeated({\n name: (names.policyQualifiers || EMPTY_STRING),\n value: PolicyQualifierInfo.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1o);\n const asn1 = asn1js.compareSchema(schema, schema, PolicyInformation.schema({\n names: {\n policyIdentifier: POLICY_IDENTIFIER,\n policyQualifiers: POLICY_QUALIFIERS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.policyIdentifier = asn1.result.policyIdentifier.valueBlock.toString();\n if (POLICY_QUALIFIERS in asn1.result) {\n this.policyQualifiers = Array.from(asn1.result.policyQualifiers, element => new PolicyQualifierInfo({ schema: element }));\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.policyIdentifier }));\n if (this.policyQualifiers) {\n outputArray.push(new asn1js.Sequence({\n value: Array.from(this.policyQualifiers, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n policyIdentifier: this.policyIdentifier\n };\n if (this.policyQualifiers)\n res.policyQualifiers = Array.from(this.policyQualifiers, o => o.toJSON());\n return res;\n }\n}\nPolicyInformation.CLASS_NAME = \"PolicyInformation\";\n\nconst CERTIFICATE_POLICIES = \"certificatePolicies\";\nconst CLEAR_PROPS$1n = [\n CERTIFICATE_POLICIES,\n];\nclass CertificatePolicies extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.certificatePolicies = pvutils.getParametersValue(parameters, CERTIFICATE_POLICIES, CertificatePolicies.defaultValues(CERTIFICATE_POLICIES));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CERTIFICATE_POLICIES:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.certificatePolicies || EMPTY_STRING),\n value: PolicyInformation.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1n);\n const asn1 = asn1js.compareSchema(schema, schema, CertificatePolicies.schema({\n names: {\n certificatePolicies: CERTIFICATE_POLICIES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.certificatePolicies = Array.from(asn1.result.certificatePolicies, element => new PolicyInformation({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.certificatePolicies, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n certificatePolicies: Array.from(this.certificatePolicies, o => o.toJSON())\n };\n }\n}\nCertificatePolicies.CLASS_NAME = \"CertificatePolicies\";\n\nconst TEMPLATE_ID = \"templateID\";\nconst TEMPLATE_MAJOR_VERSION = \"templateMajorVersion\";\nconst TEMPLATE_MINOR_VERSION = \"templateMinorVersion\";\nconst CLEAR_PROPS$1m = [\n TEMPLATE_ID,\n TEMPLATE_MAJOR_VERSION,\n TEMPLATE_MINOR_VERSION\n];\nclass CertificateTemplate extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.templateID = pvutils.getParametersValue(parameters, TEMPLATE_ID, CertificateTemplate.defaultValues(TEMPLATE_ID));\n if (TEMPLATE_MAJOR_VERSION in parameters) {\n this.templateMajorVersion = pvutils.getParametersValue(parameters, TEMPLATE_MAJOR_VERSION, CertificateTemplate.defaultValues(TEMPLATE_MAJOR_VERSION));\n }\n if (TEMPLATE_MINOR_VERSION in parameters) {\n this.templateMinorVersion = pvutils.getParametersValue(parameters, TEMPLATE_MINOR_VERSION, CertificateTemplate.defaultValues(TEMPLATE_MINOR_VERSION));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TEMPLATE_ID:\n return EMPTY_STRING;\n case TEMPLATE_MAJOR_VERSION:\n case TEMPLATE_MINOR_VERSION:\n return 0;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.templateID || EMPTY_STRING) }),\n new asn1js.Integer({\n name: (names.templateMajorVersion || EMPTY_STRING),\n optional: true\n }),\n new asn1js.Integer({\n name: (names.templateMinorVersion || EMPTY_STRING),\n optional: true\n }),\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1m);\n const asn1 = asn1js.compareSchema(schema, schema, CertificateTemplate.schema({\n names: {\n templateID: TEMPLATE_ID,\n templateMajorVersion: TEMPLATE_MAJOR_VERSION,\n templateMinorVersion: TEMPLATE_MINOR_VERSION\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.templateID = asn1.result.templateID.valueBlock.toString();\n if (TEMPLATE_MAJOR_VERSION in asn1.result) {\n this.templateMajorVersion = asn1.result.templateMajorVersion.valueBlock.valueDec;\n }\n if (TEMPLATE_MINOR_VERSION in asn1.result) {\n this.templateMinorVersion = asn1.result.templateMinorVersion.valueBlock.valueDec;\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.templateID }));\n if (TEMPLATE_MAJOR_VERSION in this) {\n outputArray.push(new asn1js.Integer({ value: this.templateMajorVersion }));\n }\n if (TEMPLATE_MINOR_VERSION in this) {\n outputArray.push(new asn1js.Integer({ value: this.templateMinorVersion }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n templateID: this.templateID\n };\n if (TEMPLATE_MAJOR_VERSION in this)\n res.templateMajorVersion = this.templateMajorVersion;\n if (TEMPLATE_MINOR_VERSION in this)\n res.templateMinorVersion = this.templateMinorVersion;\n return res;\n }\n}\n\nconst DISTRIBUTION_POINT$1 = \"distributionPoint\";\nconst DISTRIBUTION_POINT_NAMES$1 = \"distributionPointNames\";\nconst REASONS = \"reasons\";\nconst CRL_ISSUER = \"cRLIssuer\";\nconst CRL_ISSUER_NAMES = \"cRLIssuerNames\";\nconst CLEAR_PROPS$1l = [\n DISTRIBUTION_POINT$1,\n DISTRIBUTION_POINT_NAMES$1,\n REASONS,\n CRL_ISSUER,\n CRL_ISSUER_NAMES,\n];\nclass DistributionPoint extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (DISTRIBUTION_POINT$1 in parameters) {\n this.distributionPoint = pvutils.getParametersValue(parameters, DISTRIBUTION_POINT$1, DistributionPoint.defaultValues(DISTRIBUTION_POINT$1));\n }\n if (REASONS in parameters) {\n this.reasons = pvutils.getParametersValue(parameters, REASONS, DistributionPoint.defaultValues(REASONS));\n }\n if (CRL_ISSUER in parameters) {\n this.cRLIssuer = pvutils.getParametersValue(parameters, CRL_ISSUER, DistributionPoint.defaultValues(CRL_ISSUER));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case DISTRIBUTION_POINT$1:\n return [];\n case REASONS:\n return new asn1js.BitString();\n case CRL_ISSUER:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.Constructed({\n name: (names.distributionPoint || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Repeated({\n name: (names.distributionPointNames || EMPTY_STRING),\n value: GeneralName.schema()\n })\n ]\n }),\n new asn1js.Constructed({\n name: (names.distributionPoint || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: RelativeDistinguishedNames.schema().valueBlock.value\n })\n ]\n })\n ]\n }),\n new asn1js.Primitive({\n name: (names.reasons || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n }\n }),\n new asn1js.Constructed({\n name: (names.cRLIssuer || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [\n new asn1js.Repeated({\n name: (names.cRLIssuerNames || EMPTY_STRING),\n value: GeneralName.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1l);\n const asn1 = asn1js.compareSchema(schema, schema, DistributionPoint.schema({\n names: {\n distributionPoint: DISTRIBUTION_POINT$1,\n distributionPointNames: DISTRIBUTION_POINT_NAMES$1,\n reasons: REASONS,\n cRLIssuer: CRL_ISSUER,\n cRLIssuerNames: CRL_ISSUER_NAMES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (DISTRIBUTION_POINT$1 in asn1.result) {\n if (asn1.result.distributionPoint.idBlock.tagNumber === 0) {\n this.distributionPoint = Array.from(asn1.result.distributionPointNames, element => new GeneralName({ schema: element }));\n }\n if (asn1.result.distributionPoint.idBlock.tagNumber === 1) {\n this.distributionPoint = new RelativeDistinguishedNames({\n schema: new asn1js.Sequence({\n value: asn1.result.distributionPoint.valueBlock.value\n })\n });\n }\n }\n if (REASONS in asn1.result) {\n this.reasons = new asn1js.BitString({ valueHex: asn1.result.reasons.valueBlock.valueHex });\n }\n if (CRL_ISSUER in asn1.result) {\n this.cRLIssuer = Array.from(asn1.result.cRLIssuerNames, element => new GeneralName({ schema: element }));\n }\n }\n toSchema() {\n const outputArray = [];\n if (this.distributionPoint) {\n let internalValue;\n if (this.distributionPoint instanceof Array) {\n internalValue = new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: Array.from(this.distributionPoint, o => o.toSchema())\n });\n }\n else {\n internalValue = new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [this.distributionPoint.toSchema()]\n });\n }\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [internalValue]\n }));\n }\n if (this.reasons) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n valueHex: this.reasons.valueBlock.valueHexView\n }));\n }\n if (this.cRLIssuer) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: Array.from(this.cRLIssuer, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const object = {};\n if (this.distributionPoint) {\n if (this.distributionPoint instanceof Array) {\n object.distributionPoint = Array.from(this.distributionPoint, o => o.toJSON());\n }\n else {\n object.distributionPoint = this.distributionPoint.toJSON();\n }\n }\n if (this.reasons) {\n object.reasons = this.reasons.toJSON();\n }\n if (this.cRLIssuer) {\n object.cRLIssuer = Array.from(this.cRLIssuer, o => o.toJSON());\n }\n return object;\n }\n}\nDistributionPoint.CLASS_NAME = \"DistributionPoint\";\n\nconst DISTRIBUTION_POINTS = \"distributionPoints\";\nconst CLEAR_PROPS$1k = [\n DISTRIBUTION_POINTS\n];\nclass CRLDistributionPoints extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.distributionPoints = pvutils.getParametersValue(parameters, DISTRIBUTION_POINTS, CRLDistributionPoints.defaultValues(DISTRIBUTION_POINTS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case DISTRIBUTION_POINTS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.distributionPoints || EMPTY_STRING),\n value: DistributionPoint.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1k);\n const asn1 = asn1js.compareSchema(schema, schema, CRLDistributionPoints.schema({\n names: {\n distributionPoints: DISTRIBUTION_POINTS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.distributionPoints = Array.from(asn1.result.distributionPoints, element => new DistributionPoint({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.distributionPoints, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n distributionPoints: Array.from(this.distributionPoints, o => o.toJSON())\n };\n }\n}\nCRLDistributionPoints.CLASS_NAME = \"CRLDistributionPoints\";\n\nconst KEY_PURPOSES = \"keyPurposes\";\nconst CLEAR_PROPS$1j = [\n KEY_PURPOSES,\n];\nclass ExtKeyUsage extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.keyPurposes = pvutils.getParametersValue(parameters, KEY_PURPOSES, ExtKeyUsage.defaultValues(KEY_PURPOSES));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case KEY_PURPOSES:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.keyPurposes || EMPTY_STRING),\n value: new asn1js.ObjectIdentifier()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1j);\n const asn1 = asn1js.compareSchema(schema, schema, ExtKeyUsage.schema({\n names: {\n keyPurposes: KEY_PURPOSES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.keyPurposes = Array.from(asn1.result.keyPurposes, (element) => element.valueBlock.toString());\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.keyPurposes, element => new asn1js.ObjectIdentifier({ value: element }))\n }));\n }\n toJSON() {\n return {\n keyPurposes: Array.from(this.keyPurposes)\n };\n }\n}\nExtKeyUsage.CLASS_NAME = \"ExtKeyUsage\";\n\nconst ACCESS_DESCRIPTIONS = \"accessDescriptions\";\nclass InfoAccess extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.accessDescriptions = pvutils.getParametersValue(parameters, ACCESS_DESCRIPTIONS, InfoAccess.defaultValues(ACCESS_DESCRIPTIONS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ACCESS_DESCRIPTIONS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.accessDescriptions || EMPTY_STRING),\n value: AccessDescription.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n ACCESS_DESCRIPTIONS\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, InfoAccess.schema({\n names: {\n accessDescriptions: ACCESS_DESCRIPTIONS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.accessDescriptions = Array.from(asn1.result.accessDescriptions, element => new AccessDescription({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.accessDescriptions, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n accessDescriptions: Array.from(this.accessDescriptions, o => o.toJSON())\n };\n }\n}\nInfoAccess.CLASS_NAME = \"InfoAccess\";\n\nconst DISTRIBUTION_POINT = \"distributionPoint\";\nconst DISTRIBUTION_POINT_NAMES = \"distributionPointNames\";\nconst ONLY_CONTAINS_USER_CERTS = \"onlyContainsUserCerts\";\nconst ONLY_CONTAINS_CA_CERTS = \"onlyContainsCACerts\";\nconst ONLY_SOME_REASON = \"onlySomeReasons\";\nconst INDIRECT_CRL = \"indirectCRL\";\nconst ONLY_CONTAINS_ATTRIBUTE_CERTS = \"onlyContainsAttributeCerts\";\nconst CLEAR_PROPS$1i = [\n DISTRIBUTION_POINT,\n DISTRIBUTION_POINT_NAMES,\n ONLY_CONTAINS_USER_CERTS,\n ONLY_CONTAINS_CA_CERTS,\n ONLY_SOME_REASON,\n INDIRECT_CRL,\n ONLY_CONTAINS_ATTRIBUTE_CERTS,\n];\nclass IssuingDistributionPoint extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (DISTRIBUTION_POINT in parameters) {\n this.distributionPoint = pvutils.getParametersValue(parameters, DISTRIBUTION_POINT, IssuingDistributionPoint.defaultValues(DISTRIBUTION_POINT));\n }\n this.onlyContainsUserCerts = pvutils.getParametersValue(parameters, ONLY_CONTAINS_USER_CERTS, IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_USER_CERTS));\n this.onlyContainsCACerts = pvutils.getParametersValue(parameters, ONLY_CONTAINS_CA_CERTS, IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_CA_CERTS));\n if (ONLY_SOME_REASON in parameters) {\n this.onlySomeReasons = pvutils.getParametersValue(parameters, ONLY_SOME_REASON, IssuingDistributionPoint.defaultValues(ONLY_SOME_REASON));\n }\n this.indirectCRL = pvutils.getParametersValue(parameters, INDIRECT_CRL, IssuingDistributionPoint.defaultValues(INDIRECT_CRL));\n this.onlyContainsAttributeCerts = pvutils.getParametersValue(parameters, ONLY_CONTAINS_ATTRIBUTE_CERTS, IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_ATTRIBUTE_CERTS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case DISTRIBUTION_POINT:\n return [];\n case ONLY_CONTAINS_USER_CERTS:\n return false;\n case ONLY_CONTAINS_CA_CERTS:\n return false;\n case ONLY_SOME_REASON:\n return 0;\n case INDIRECT_CRL:\n return false;\n case ONLY_CONTAINS_ATTRIBUTE_CERTS:\n return false;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.Constructed({\n name: (names.distributionPoint || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Repeated({\n name: (names.distributionPointNames || EMPTY_STRING),\n value: GeneralName.schema()\n })\n ]\n }),\n new asn1js.Constructed({\n name: (names.distributionPoint || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: RelativeDistinguishedNames.schema().valueBlock.value\n })\n ]\n })\n ]\n }),\n new asn1js.Primitive({\n name: (names.onlyContainsUserCerts || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n }\n }),\n new asn1js.Primitive({\n name: (names.onlyContainsCACerts || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n }\n }),\n new asn1js.Primitive({\n name: (names.onlySomeReasons || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n }\n }),\n new asn1js.Primitive({\n name: (names.indirectCRL || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 4\n }\n }),\n new asn1js.Primitive({\n name: (names.onlyContainsAttributeCerts || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 5\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1i);\n const asn1 = asn1js.compareSchema(schema, schema, IssuingDistributionPoint.schema({\n names: {\n distributionPoint: DISTRIBUTION_POINT,\n distributionPointNames: DISTRIBUTION_POINT_NAMES,\n onlyContainsUserCerts: ONLY_CONTAINS_USER_CERTS,\n onlyContainsCACerts: ONLY_CONTAINS_CA_CERTS,\n onlySomeReasons: ONLY_SOME_REASON,\n indirectCRL: INDIRECT_CRL,\n onlyContainsAttributeCerts: ONLY_CONTAINS_ATTRIBUTE_CERTS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (DISTRIBUTION_POINT in asn1.result) {\n switch (true) {\n case (asn1.result.distributionPoint.idBlock.tagNumber === 0):\n this.distributionPoint = Array.from(asn1.result.distributionPointNames, element => new GeneralName({ schema: element }));\n break;\n case (asn1.result.distributionPoint.idBlock.tagNumber === 1):\n {\n this.distributionPoint = new RelativeDistinguishedNames({\n schema: new asn1js.Sequence({\n value: asn1.result.distributionPoint.valueBlock.value\n })\n });\n }\n break;\n default:\n throw new Error(\"Unknown tagNumber for distributionPoint: {$asn1.result.distributionPoint.idBlock.tagNumber}\");\n }\n }\n if (ONLY_CONTAINS_USER_CERTS in asn1.result) {\n const view = new Uint8Array(asn1.result.onlyContainsUserCerts.valueBlock.valueHex);\n this.onlyContainsUserCerts = (view[0] !== 0x00);\n }\n if (ONLY_CONTAINS_CA_CERTS in asn1.result) {\n const view = new Uint8Array(asn1.result.onlyContainsCACerts.valueBlock.valueHex);\n this.onlyContainsCACerts = (view[0] !== 0x00);\n }\n if (ONLY_SOME_REASON in asn1.result) {\n const view = new Uint8Array(asn1.result.onlySomeReasons.valueBlock.valueHex);\n this.onlySomeReasons = view[0];\n }\n if (INDIRECT_CRL in asn1.result) {\n const view = new Uint8Array(asn1.result.indirectCRL.valueBlock.valueHex);\n this.indirectCRL = (view[0] !== 0x00);\n }\n if (ONLY_CONTAINS_ATTRIBUTE_CERTS in asn1.result) {\n const view = new Uint8Array(asn1.result.onlyContainsAttributeCerts.valueBlock.valueHex);\n this.onlyContainsAttributeCerts = (view[0] !== 0x00);\n }\n }\n toSchema() {\n const outputArray = [];\n if (this.distributionPoint) {\n let value;\n if (this.distributionPoint instanceof Array) {\n value = new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: Array.from(this.distributionPoint, o => o.toSchema())\n });\n }\n else {\n value = this.distributionPoint.toSchema();\n value.idBlock.tagClass = 3;\n value.idBlock.tagNumber = 1;\n }\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [value]\n }));\n }\n if (this.onlyContainsUserCerts !== IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_USER_CERTS)) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n valueHex: (new Uint8Array([0xFF])).buffer\n }));\n }\n if (this.onlyContainsCACerts !== IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_CA_CERTS)) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n valueHex: (new Uint8Array([0xFF])).buffer\n }));\n }\n if (this.onlySomeReasons !== undefined) {\n const buffer = new ArrayBuffer(1);\n const view = new Uint8Array(buffer);\n view[0] = this.onlySomeReasons;\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n valueHex: buffer\n }));\n }\n if (this.indirectCRL !== IssuingDistributionPoint.defaultValues(INDIRECT_CRL)) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 4\n },\n valueHex: (new Uint8Array([0xFF])).buffer\n }));\n }\n if (this.onlyContainsAttributeCerts !== IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_ATTRIBUTE_CERTS)) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 5\n },\n valueHex: (new Uint8Array([0xFF])).buffer\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const obj = {};\n if (this.distributionPoint) {\n if (this.distributionPoint instanceof Array) {\n obj.distributionPoint = Array.from(this.distributionPoint, o => o.toJSON());\n }\n else {\n obj.distributionPoint = this.distributionPoint.toJSON();\n }\n }\n if (this.onlyContainsUserCerts !== IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_USER_CERTS)) {\n obj.onlyContainsUserCerts = this.onlyContainsUserCerts;\n }\n if (this.onlyContainsCACerts !== IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_CA_CERTS)) {\n obj.onlyContainsCACerts = this.onlyContainsCACerts;\n }\n if (ONLY_SOME_REASON in this) {\n obj.onlySomeReasons = this.onlySomeReasons;\n }\n if (this.indirectCRL !== IssuingDistributionPoint.defaultValues(INDIRECT_CRL)) {\n obj.indirectCRL = this.indirectCRL;\n }\n if (this.onlyContainsAttributeCerts !== IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_ATTRIBUTE_CERTS)) {\n obj.onlyContainsAttributeCerts = this.onlyContainsAttributeCerts;\n }\n return obj;\n }\n}\nIssuingDistributionPoint.CLASS_NAME = \"IssuingDistributionPoint\";\n\nconst BASE = \"base\";\nconst MINIMUM = \"minimum\";\nconst MAXIMUM = \"maximum\";\nconst CLEAR_PROPS$1h = [\n BASE,\n MINIMUM,\n MAXIMUM\n];\nclass GeneralSubtree extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.base = pvutils.getParametersValue(parameters, BASE, GeneralSubtree.defaultValues(BASE));\n this.minimum = pvutils.getParametersValue(parameters, MINIMUM, GeneralSubtree.defaultValues(MINIMUM));\n if (MAXIMUM in parameters) {\n this.maximum = pvutils.getParametersValue(parameters, MAXIMUM, GeneralSubtree.defaultValues(MAXIMUM));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case BASE:\n return new GeneralName();\n case MINIMUM:\n return 0;\n case MAXIMUM:\n return 0;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n GeneralName.schema(names.base || {}),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Integer({ name: (names.minimum || EMPTY_STRING) })]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [new asn1js.Integer({ name: (names.maximum || EMPTY_STRING) })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1h);\n const asn1 = asn1js.compareSchema(schema, schema, GeneralSubtree.schema({\n names: {\n base: {\n names: {\n blockName: BASE\n }\n },\n minimum: MINIMUM,\n maximum: MAXIMUM\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.base = new GeneralName({ schema: asn1.result.base });\n if (MINIMUM in asn1.result) {\n if (asn1.result.minimum.valueBlock.isHexOnly)\n this.minimum = asn1.result.minimum;\n else\n this.minimum = asn1.result.minimum.valueBlock.valueDec;\n }\n if (MAXIMUM in asn1.result) {\n if (asn1.result.maximum.valueBlock.isHexOnly)\n this.maximum = asn1.result.maximum;\n else\n this.maximum = asn1.result.maximum.valueBlock.valueDec;\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.base.toSchema());\n if (this.minimum !== 0) {\n let valueMinimum = 0;\n if (this.minimum instanceof asn1js.Integer) {\n valueMinimum = this.minimum;\n }\n else {\n valueMinimum = new asn1js.Integer({ value: this.minimum });\n }\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [valueMinimum]\n }));\n }\n if (MAXIMUM in this) {\n let valueMaximum = 0;\n if (this.maximum instanceof asn1js.Integer) {\n valueMaximum = this.maximum;\n }\n else {\n valueMaximum = new asn1js.Integer({ value: this.maximum });\n }\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [valueMaximum]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n base: this.base.toJSON()\n };\n if (this.minimum !== 0) {\n if (typeof this.minimum === \"number\") {\n res.minimum = this.minimum;\n }\n else {\n res.minimum = this.minimum.toJSON();\n }\n }\n if (this.maximum !== undefined) {\n if (typeof this.maximum === \"number\") {\n res.maximum = this.maximum;\n }\n else {\n res.maximum = this.maximum.toJSON();\n }\n }\n return res;\n }\n}\nGeneralSubtree.CLASS_NAME = \"GeneralSubtree\";\n\nconst PERMITTED_SUBTREES = \"permittedSubtrees\";\nconst EXCLUDED_SUBTREES = \"excludedSubtrees\";\nconst CLEAR_PROPS$1g = [\n PERMITTED_SUBTREES,\n EXCLUDED_SUBTREES\n];\nclass NameConstraints extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (PERMITTED_SUBTREES in parameters) {\n this.permittedSubtrees = pvutils.getParametersValue(parameters, PERMITTED_SUBTREES, NameConstraints.defaultValues(PERMITTED_SUBTREES));\n }\n if (EXCLUDED_SUBTREES in parameters) {\n this.excludedSubtrees = pvutils.getParametersValue(parameters, EXCLUDED_SUBTREES, NameConstraints.defaultValues(EXCLUDED_SUBTREES));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case PERMITTED_SUBTREES:\n case EXCLUDED_SUBTREES:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Repeated({\n name: (names.permittedSubtrees || EMPTY_STRING),\n value: GeneralSubtree.schema()\n })\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.Repeated({\n name: (names.excludedSubtrees || EMPTY_STRING),\n value: GeneralSubtree.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1g);\n const asn1 = asn1js.compareSchema(schema, schema, NameConstraints.schema({\n names: {\n permittedSubtrees: PERMITTED_SUBTREES,\n excludedSubtrees: EXCLUDED_SUBTREES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (PERMITTED_SUBTREES in asn1.result)\n this.permittedSubtrees = Array.from(asn1.result.permittedSubtrees, element => new GeneralSubtree({ schema: element }));\n if (EXCLUDED_SUBTREES in asn1.result)\n this.excludedSubtrees = Array.from(asn1.result.excludedSubtrees, element => new GeneralSubtree({ schema: element }));\n }\n toSchema() {\n const outputArray = [];\n if (this.permittedSubtrees) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: Array.from(this.permittedSubtrees, o => o.toSchema())\n }));\n }\n if (this.excludedSubtrees) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: Array.from(this.excludedSubtrees, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const object = {};\n if (this.permittedSubtrees) {\n object.permittedSubtrees = Array.from(this.permittedSubtrees, o => o.toJSON());\n }\n if (this.excludedSubtrees) {\n object.excludedSubtrees = Array.from(this.excludedSubtrees, o => o.toJSON());\n }\n return object;\n }\n}\nNameConstraints.CLASS_NAME = \"NameConstraints\";\n\nconst REQUIRE_EXPLICIT_POLICY = \"requireExplicitPolicy\";\nconst INHIBIT_POLICY_MAPPING = \"inhibitPolicyMapping\";\nconst CLEAR_PROPS$1f = [\n REQUIRE_EXPLICIT_POLICY,\n INHIBIT_POLICY_MAPPING,\n];\nclass PolicyConstraints extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (REQUIRE_EXPLICIT_POLICY in parameters) {\n this.requireExplicitPolicy = pvutils.getParametersValue(parameters, REQUIRE_EXPLICIT_POLICY, PolicyConstraints.defaultValues(REQUIRE_EXPLICIT_POLICY));\n }\n if (INHIBIT_POLICY_MAPPING in parameters) {\n this.inhibitPolicyMapping = pvutils.getParametersValue(parameters, INHIBIT_POLICY_MAPPING, PolicyConstraints.defaultValues(INHIBIT_POLICY_MAPPING));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case REQUIRE_EXPLICIT_POLICY:\n return 0;\n case INHIBIT_POLICY_MAPPING:\n return 0;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Primitive({\n name: (names.requireExplicitPolicy || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n }\n }),\n new asn1js.Primitive({\n name: (names.inhibitPolicyMapping || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1f);\n const asn1 = asn1js.compareSchema(schema, schema, PolicyConstraints.schema({\n names: {\n requireExplicitPolicy: REQUIRE_EXPLICIT_POLICY,\n inhibitPolicyMapping: INHIBIT_POLICY_MAPPING\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (REQUIRE_EXPLICIT_POLICY in asn1.result) {\n const field1 = asn1.result.requireExplicitPolicy;\n field1.idBlock.tagClass = 1;\n field1.idBlock.tagNumber = 2;\n const ber1 = field1.toBER(false);\n const int1 = asn1js.fromBER(ber1);\n AsnError.assert(int1, \"Integer\");\n this.requireExplicitPolicy = int1.result.valueBlock.valueDec;\n }\n if (INHIBIT_POLICY_MAPPING in asn1.result) {\n const field2 = asn1.result.inhibitPolicyMapping;\n field2.idBlock.tagClass = 1;\n field2.idBlock.tagNumber = 2;\n const ber2 = field2.toBER(false);\n const int2 = asn1js.fromBER(ber2);\n AsnError.assert(int2, \"Integer\");\n this.inhibitPolicyMapping = int2.result.valueBlock.valueDec;\n }\n }\n toSchema() {\n const outputArray = [];\n if (REQUIRE_EXPLICIT_POLICY in this) {\n const int1 = new asn1js.Integer({ value: this.requireExplicitPolicy });\n int1.idBlock.tagClass = 3;\n int1.idBlock.tagNumber = 0;\n outputArray.push(int1);\n }\n if (INHIBIT_POLICY_MAPPING in this) {\n const int2 = new asn1js.Integer({ value: this.inhibitPolicyMapping });\n int2.idBlock.tagClass = 3;\n int2.idBlock.tagNumber = 1;\n outputArray.push(int2);\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {};\n if (REQUIRE_EXPLICIT_POLICY in this) {\n res.requireExplicitPolicy = this.requireExplicitPolicy;\n }\n if (INHIBIT_POLICY_MAPPING in this) {\n res.inhibitPolicyMapping = this.inhibitPolicyMapping;\n }\n return res;\n }\n}\nPolicyConstraints.CLASS_NAME = \"PolicyConstraints\";\n\nconst ISSUER_DOMAIN_POLICY = \"issuerDomainPolicy\";\nconst SUBJECT_DOMAIN_POLICY = \"subjectDomainPolicy\";\nconst CLEAR_PROPS$1e = [\n ISSUER_DOMAIN_POLICY,\n SUBJECT_DOMAIN_POLICY\n];\nclass PolicyMapping extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.issuerDomainPolicy = pvutils.getParametersValue(parameters, ISSUER_DOMAIN_POLICY, PolicyMapping.defaultValues(ISSUER_DOMAIN_POLICY));\n this.subjectDomainPolicy = pvutils.getParametersValue(parameters, SUBJECT_DOMAIN_POLICY, PolicyMapping.defaultValues(SUBJECT_DOMAIN_POLICY));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ISSUER_DOMAIN_POLICY:\n return EMPTY_STRING;\n case SUBJECT_DOMAIN_POLICY:\n return EMPTY_STRING;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.issuerDomainPolicy || EMPTY_STRING) }),\n new asn1js.ObjectIdentifier({ name: (names.subjectDomainPolicy || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1e);\n const asn1 = asn1js.compareSchema(schema, schema, PolicyMapping.schema({\n names: {\n issuerDomainPolicy: ISSUER_DOMAIN_POLICY,\n subjectDomainPolicy: SUBJECT_DOMAIN_POLICY\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.issuerDomainPolicy = asn1.result.issuerDomainPolicy.valueBlock.toString();\n this.subjectDomainPolicy = asn1.result.subjectDomainPolicy.valueBlock.toString();\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.issuerDomainPolicy }),\n new asn1js.ObjectIdentifier({ value: this.subjectDomainPolicy })\n ]\n }));\n }\n toJSON() {\n return {\n issuerDomainPolicy: this.issuerDomainPolicy,\n subjectDomainPolicy: this.subjectDomainPolicy\n };\n }\n}\nPolicyMapping.CLASS_NAME = \"PolicyMapping\";\n\nconst MAPPINGS = \"mappings\";\nconst CLEAR_PROPS$1d = [\n MAPPINGS,\n];\nclass PolicyMappings extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.mappings = pvutils.getParametersValue(parameters, MAPPINGS, PolicyMappings.defaultValues(MAPPINGS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case MAPPINGS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.mappings || EMPTY_STRING),\n value: PolicyMapping.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1d);\n const asn1 = asn1js.compareSchema(schema, schema, PolicyMappings.schema({\n names: {\n mappings: MAPPINGS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.mappings = Array.from(asn1.result.mappings, element => new PolicyMapping({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.mappings, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n mappings: Array.from(this.mappings, o => o.toJSON())\n };\n }\n}\nPolicyMappings.CLASS_NAME = \"PolicyMappings\";\n\nconst NOT_BEFORE$1 = \"notBefore\";\nconst NOT_AFTER$1 = \"notAfter\";\nconst CLEAR_PROPS$1c = [\n NOT_BEFORE$1,\n NOT_AFTER$1\n];\nclass PrivateKeyUsagePeriod extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (NOT_BEFORE$1 in parameters) {\n this.notBefore = pvutils.getParametersValue(parameters, NOT_BEFORE$1, PrivateKeyUsagePeriod.defaultValues(NOT_BEFORE$1));\n }\n if (NOT_AFTER$1 in parameters) {\n this.notAfter = pvutils.getParametersValue(parameters, NOT_AFTER$1, PrivateKeyUsagePeriod.defaultValues(NOT_AFTER$1));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case NOT_BEFORE$1:\n return new Date();\n case NOT_AFTER$1:\n return new Date();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Primitive({\n name: (names.notBefore || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n }\n }),\n new asn1js.Primitive({\n name: (names.notAfter || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1c);\n const asn1 = asn1js.compareSchema(schema, schema, PrivateKeyUsagePeriod.schema({\n names: {\n notBefore: NOT_BEFORE$1,\n notAfter: NOT_AFTER$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (NOT_BEFORE$1 in asn1.result) {\n const localNotBefore = new asn1js.GeneralizedTime();\n localNotBefore.fromBuffer(asn1.result.notBefore.valueBlock.valueHex);\n this.notBefore = localNotBefore.toDate();\n }\n if (NOT_AFTER$1 in asn1.result) {\n const localNotAfter = new asn1js.GeneralizedTime({ valueHex: asn1.result.notAfter.valueBlock.valueHex });\n localNotAfter.fromBuffer(asn1.result.notAfter.valueBlock.valueHex);\n this.notAfter = localNotAfter.toDate();\n }\n }\n toSchema() {\n const outputArray = [];\n if (NOT_BEFORE$1 in this) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n valueHex: (new asn1js.GeneralizedTime({ valueDate: this.notBefore })).valueBlock.valueHexView\n }));\n }\n if (NOT_AFTER$1 in this) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n valueHex: (new asn1js.GeneralizedTime({ valueDate: this.notAfter })).valueBlock.valueHexView\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {};\n if (this.notBefore) {\n res.notBefore = this.notBefore;\n }\n if (this.notAfter) {\n res.notAfter = this.notAfter;\n }\n return res;\n }\n}\nPrivateKeyUsagePeriod.CLASS_NAME = \"PrivateKeyUsagePeriod\";\n\nconst ID = \"id\";\nconst TYPE$2 = \"type\";\nconst VALUES = \"values\";\nconst QC_STATEMENT_CLEAR_PROPS = [\n ID,\n TYPE$2\n];\nconst QC_STATEMENTS_CLEAR_PROPS = [\n VALUES\n];\nclass QCStatement extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.id = pvutils.getParametersValue(parameters, ID, QCStatement.defaultValues(ID));\n if (TYPE$2 in parameters) {\n this.type = pvutils.getParametersValue(parameters, TYPE$2, QCStatement.defaultValues(TYPE$2));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ID:\n return EMPTY_STRING;\n case TYPE$2:\n return new asn1js.Null();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case ID:\n return (memberValue === EMPTY_STRING);\n case TYPE$2:\n return (memberValue instanceof asn1js.Null);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.id || EMPTY_STRING) }),\n new asn1js.Any({\n name: (names.type || EMPTY_STRING),\n optional: true\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, QC_STATEMENT_CLEAR_PROPS);\n const asn1 = asn1js.compareSchema(schema, schema, QCStatement.schema({\n names: {\n id: ID,\n type: TYPE$2\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.id = asn1.result.id.valueBlock.toString();\n if (TYPE$2 in asn1.result)\n this.type = asn1.result.type;\n }\n toSchema() {\n const value = [\n new asn1js.ObjectIdentifier({ value: this.id })\n ];\n if (TYPE$2 in this)\n value.push(this.type);\n return (new asn1js.Sequence({\n value,\n }));\n }\n toJSON() {\n const object = {\n id: this.id\n };\n if (this.type) {\n object.type = this.type.toJSON();\n }\n return object;\n }\n}\nQCStatement.CLASS_NAME = \"QCStatement\";\nclass QCStatements extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.values = pvutils.getParametersValue(parameters, VALUES, QCStatements.defaultValues(VALUES));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VALUES:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VALUES:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.values || EMPTY_STRING),\n value: QCStatement.schema(names.value || {})\n }),\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, QC_STATEMENTS_CLEAR_PROPS);\n const asn1 = asn1js.compareSchema(schema, schema, QCStatements.schema({\n names: {\n values: VALUES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.values = Array.from(asn1.result.values, element => new QCStatement({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.values, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n values: Array.from(this.values, o => o.toJSON())\n };\n }\n}\nQCStatements.CLASS_NAME = \"QCStatements\";\n\nvar _a;\nclass ECNamedCurves {\n static register(name, id, size) {\n this.namedCurves[name.toLowerCase()] = this.namedCurves[id] = { name, id, size };\n }\n static find(nameOrId) {\n return this.namedCurves[nameOrId.toLowerCase()] || null;\n }\n}\n_a = ECNamedCurves;\nECNamedCurves.namedCurves = {};\n(() => {\n _a.register(\"P-256\", \"1.2.840.10045.3.1.7\", 32);\n _a.register(\"P-384\", \"1.3.132.0.34\", 48);\n _a.register(\"P-521\", \"1.3.132.0.35\", 66);\n _a.register(\"brainpoolP256r1\", \"1.3.36.3.3.2.8.1.1.7\", 32);\n _a.register(\"brainpoolP384r1\", \"1.3.36.3.3.2.8.1.1.11\", 48);\n _a.register(\"brainpoolP512r1\", \"1.3.36.3.3.2.8.1.1.13\", 64);\n})();\n\nconst X = \"x\";\nconst Y = \"y\";\nconst NAMED_CURVE$1 = \"namedCurve\";\nclass ECPublicKey extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.x = pvutils.getParametersValue(parameters, X, ECPublicKey.defaultValues(X));\n this.y = pvutils.getParametersValue(parameters, Y, ECPublicKey.defaultValues(Y));\n this.namedCurve = pvutils.getParametersValue(parameters, NAMED_CURVE$1, ECPublicKey.defaultValues(NAMED_CURVE$1));\n if (parameters.json) {\n this.fromJSON(parameters.json);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case X:\n case Y:\n return EMPTY_BUFFER;\n case NAMED_CURVE$1:\n return EMPTY_STRING;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case X:\n case Y:\n return memberValue instanceof ArrayBuffer &&\n (pvutils.isEqualBuffer(memberValue, ECPublicKey.defaultValues(memberName)));\n case NAMED_CURVE$1:\n return typeof memberValue === \"string\" &&\n memberValue === ECPublicKey.defaultValues(memberName);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema() {\n return new asn1js.RawData();\n }\n fromSchema(schema1) {\n const view = BufferSourceConverter.toUint8Array(schema1);\n if (view[0] !== 0x04) {\n throw new Error(\"Object's schema was not verified against input data for ECPublicKey\");\n }\n const namedCurve = ECNamedCurves.find(this.namedCurve);\n if (!namedCurve) {\n throw new Error(`Incorrect curve OID: ${this.namedCurve}`);\n }\n const coordinateLength = namedCurve.size;\n if (view.byteLength !== (coordinateLength * 2 + 1)) {\n throw new Error(\"Object's schema was not verified against input data for ECPublicKey\");\n }\n this.namedCurve = namedCurve.name;\n this.x = view.slice(1, coordinateLength + 1).buffer;\n this.y = view.slice(1 + coordinateLength, coordinateLength * 2 + 1).buffer;\n }\n toSchema() {\n return new asn1js.RawData({\n data: pvutils.utilConcatBuf((new Uint8Array([0x04])).buffer, this.x, this.y)\n });\n }\n toJSON() {\n const namedCurve = ECNamedCurves.find(this.namedCurve);\n return {\n crv: namedCurve ? namedCurve.name : this.namedCurve,\n x: pvutils.toBase64(pvutils.arrayBufferToString(this.x), true, true, false),\n y: pvutils.toBase64(pvutils.arrayBufferToString(this.y), true, true, false)\n };\n }\n fromJSON(json) {\n ParameterError.assert(\"json\", json, \"crv\", \"x\", \"y\");\n let coordinateLength = 0;\n const namedCurve = ECNamedCurves.find(json.crv);\n if (namedCurve) {\n this.namedCurve = namedCurve.id;\n coordinateLength = namedCurve.size;\n }\n const xConvertBuffer = pvutils.stringToArrayBuffer(pvutils.fromBase64(json.x, true));\n if (xConvertBuffer.byteLength < coordinateLength) {\n this.x = new ArrayBuffer(coordinateLength);\n const view = new Uint8Array(this.x);\n const convertBufferView = new Uint8Array(xConvertBuffer);\n view.set(convertBufferView, 1);\n }\n else {\n this.x = xConvertBuffer.slice(0, coordinateLength);\n }\n const yConvertBuffer = pvutils.stringToArrayBuffer(pvutils.fromBase64(json.y, true));\n if (yConvertBuffer.byteLength < coordinateLength) {\n this.y = new ArrayBuffer(coordinateLength);\n const view = new Uint8Array(this.y);\n const convertBufferView = new Uint8Array(yConvertBuffer);\n view.set(convertBufferView, 1);\n }\n else {\n this.y = yConvertBuffer.slice(0, coordinateLength);\n }\n }\n}\nECPublicKey.CLASS_NAME = \"ECPublicKey\";\n\nconst MODULUS$1 = \"modulus\";\nconst PUBLIC_EXPONENT$1 = \"publicExponent\";\nconst CLEAR_PROPS$1b = [MODULUS$1, PUBLIC_EXPONENT$1];\nclass RSAPublicKey extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.modulus = pvutils.getParametersValue(parameters, MODULUS$1, RSAPublicKey.defaultValues(MODULUS$1));\n this.publicExponent = pvutils.getParametersValue(parameters, PUBLIC_EXPONENT$1, RSAPublicKey.defaultValues(PUBLIC_EXPONENT$1));\n if (parameters.json) {\n this.fromJSON(parameters.json);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case MODULUS$1:\n return new asn1js.Integer();\n case PUBLIC_EXPONENT$1:\n return new asn1js.Integer();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.modulus || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.publicExponent || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1b);\n const asn1 = asn1js.compareSchema(schema, schema, RSAPublicKey.schema({\n names: {\n modulus: MODULUS$1,\n publicExponent: PUBLIC_EXPONENT$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.modulus = asn1.result.modulus.convertFromDER(256);\n this.publicExponent = asn1.result.publicExponent;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.modulus.convertToDER(),\n this.publicExponent\n ]\n }));\n }\n toJSON() {\n return {\n n: pvtsutils.Convert.ToBase64Url(this.modulus.valueBlock.valueHexView),\n e: pvtsutils.Convert.ToBase64Url(this.publicExponent.valueBlock.valueHexView),\n };\n }\n fromJSON(json) {\n ParameterError.assert(\"json\", json, \"n\", \"e\");\n const array = pvutils.stringToArrayBuffer(pvutils.fromBase64(json.n, true));\n this.modulus = new asn1js.Integer({ valueHex: array.slice(0, Math.pow(2, pvutils.nearestPowerOf2(array.byteLength))) });\n this.publicExponent = new asn1js.Integer({ valueHex: pvutils.stringToArrayBuffer(pvutils.fromBase64(json.e, true)).slice(0, 3) });\n }\n}\nRSAPublicKey.CLASS_NAME = \"RSAPublicKey\";\n\nconst ALGORITHM$1 = \"algorithm\";\nconst SUBJECT_PUBLIC_KEY = \"subjectPublicKey\";\nconst CLEAR_PROPS$1a = [ALGORITHM$1, SUBJECT_PUBLIC_KEY];\nclass PublicKeyInfo extends PkiObject {\n get parsedKey() {\n if (this._parsedKey === undefined) {\n switch (this.algorithm.algorithmId) {\n case \"1.2.840.10045.2.1\":\n if (\"algorithmParams\" in this.algorithm) {\n if (this.algorithm.algorithmParams.constructor.blockName() === asn1js.ObjectIdentifier.blockName()) {\n try {\n this._parsedKey = new ECPublicKey({\n namedCurve: this.algorithm.algorithmParams.valueBlock.toString(),\n schema: this.subjectPublicKey.valueBlock.valueHexView\n });\n }\n catch (ex) {\n }\n }\n }\n break;\n case \"1.2.840.113549.1.1.1\":\n {\n const publicKeyASN1 = asn1js.fromBER(this.subjectPublicKey.valueBlock.valueHexView);\n if (publicKeyASN1.offset !== -1) {\n try {\n this._parsedKey = new RSAPublicKey({ schema: publicKeyASN1.result });\n }\n catch (ex) {\n }\n }\n }\n break;\n }\n this._parsedKey || (this._parsedKey = null);\n }\n return this._parsedKey || undefined;\n }\n set parsedKey(value) {\n this._parsedKey = value;\n }\n constructor(parameters = {}) {\n super();\n this.algorithm = pvutils.getParametersValue(parameters, ALGORITHM$1, PublicKeyInfo.defaultValues(ALGORITHM$1));\n this.subjectPublicKey = pvutils.getParametersValue(parameters, SUBJECT_PUBLIC_KEY, PublicKeyInfo.defaultValues(SUBJECT_PUBLIC_KEY));\n const parsedKey = pvutils.getParametersValue(parameters, \"parsedKey\", null);\n if (parsedKey) {\n this.parsedKey = parsedKey;\n }\n if (parameters.json) {\n this.fromJSON(parameters.json);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ALGORITHM$1:\n return new AlgorithmIdentifier();\n case SUBJECT_PUBLIC_KEY:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.algorithm || {}),\n new asn1js.BitString({ name: (names.subjectPublicKey || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1a);\n const asn1 = asn1js.compareSchema(schema, schema, PublicKeyInfo.schema({\n names: {\n algorithm: {\n names: {\n blockName: ALGORITHM$1\n }\n },\n subjectPublicKey: SUBJECT_PUBLIC_KEY\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.algorithm = new AlgorithmIdentifier({ schema: asn1.result.algorithm });\n this.subjectPublicKey = asn1.result.subjectPublicKey;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.algorithm.toSchema(),\n this.subjectPublicKey\n ]\n }));\n }\n toJSON() {\n if (!this.parsedKey) {\n return {\n algorithm: this.algorithm.toJSON(),\n subjectPublicKey: this.subjectPublicKey.toJSON(),\n };\n }\n const jwk = {};\n switch (this.algorithm.algorithmId) {\n case \"1.2.840.10045.2.1\":\n jwk.kty = \"EC\";\n break;\n case \"1.2.840.113549.1.1.1\":\n jwk.kty = \"RSA\";\n break;\n }\n const publicKeyJWK = this.parsedKey.toJSON();\n Object.assign(jwk, publicKeyJWK);\n return jwk;\n }\n fromJSON(json) {\n if (\"kty\" in json) {\n switch (json.kty.toUpperCase()) {\n case \"EC\":\n this.parsedKey = new ECPublicKey({ json });\n this.algorithm = new AlgorithmIdentifier({\n algorithmId: \"1.2.840.10045.2.1\",\n algorithmParams: new asn1js.ObjectIdentifier({ value: this.parsedKey.namedCurve })\n });\n break;\n case \"RSA\":\n this.parsedKey = new RSAPublicKey({ json });\n this.algorithm = new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.1.1\",\n algorithmParams: new asn1js.Null()\n });\n break;\n default:\n throw new Error(`Invalid value for \"kty\" parameter: ${json.kty}`);\n }\n this.subjectPublicKey = new asn1js.BitString({ valueHex: this.parsedKey.toSchema().toBER(false) });\n }\n }\n async importKey(publicKey, crypto = getCrypto(true)) {\n try {\n if (!publicKey) {\n throw new Error(\"Need to provide publicKey input parameter\");\n }\n const exportedKey = await crypto.exportKey(\"spki\", publicKey);\n const asn1 = asn1js.fromBER(exportedKey);\n try {\n this.fromSchema(asn1.result);\n }\n catch (exception) {\n throw new Error(\"Error during initializing object from schema\");\n }\n }\n catch (e) {\n const message = e instanceof Error ? e.message : `${e}`;\n throw new Error(`Error during exporting public key: ${message}`);\n }\n }\n}\nPublicKeyInfo.CLASS_NAME = \"PublicKeyInfo\";\n\nconst VERSION$l = \"version\";\nconst PRIVATE_KEY$1 = \"privateKey\";\nconst NAMED_CURVE = \"namedCurve\";\nconst PUBLIC_KEY$1 = \"publicKey\";\nconst CLEAR_PROPS$19 = [\n VERSION$l,\n PRIVATE_KEY$1,\n NAMED_CURVE,\n PUBLIC_KEY$1\n];\nclass ECPrivateKey extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$l, ECPrivateKey.defaultValues(VERSION$l));\n this.privateKey = pvutils.getParametersValue(parameters, PRIVATE_KEY$1, ECPrivateKey.defaultValues(PRIVATE_KEY$1));\n if (NAMED_CURVE in parameters) {\n this.namedCurve = pvutils.getParametersValue(parameters, NAMED_CURVE, ECPrivateKey.defaultValues(NAMED_CURVE));\n }\n if (PUBLIC_KEY$1 in parameters) {\n this.publicKey = pvutils.getParametersValue(parameters, PUBLIC_KEY$1, ECPrivateKey.defaultValues(PUBLIC_KEY$1));\n }\n if (parameters.json) {\n this.fromJSON(parameters.json);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$l:\n return 1;\n case PRIVATE_KEY$1:\n return new asn1js.OctetString();\n case NAMED_CURVE:\n return EMPTY_STRING;\n case PUBLIC_KEY$1:\n return new ECPublicKey();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$l:\n return (memberValue === ECPrivateKey.defaultValues(memberName));\n case PRIVATE_KEY$1:\n return (memberValue.isEqual(ECPrivateKey.defaultValues(memberName)));\n case NAMED_CURVE:\n return (memberValue === EMPTY_STRING);\n case PUBLIC_KEY$1:\n return ((ECPublicKey.compareWithDefault(NAMED_CURVE, memberValue.namedCurve)) &&\n (ECPublicKey.compareWithDefault(\"x\", memberValue.x)) &&\n (ECPublicKey.compareWithDefault(\"y\", memberValue.y)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n new asn1js.OctetString({ name: (names.privateKey || EMPTY_STRING) }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.ObjectIdentifier({ name: (names.namedCurve || EMPTY_STRING) })\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.BitString({ name: (names.publicKey || EMPTY_STRING) })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$19);\n const asn1 = asn1js.compareSchema(schema, schema, ECPrivateKey.schema({\n names: {\n version: VERSION$l,\n privateKey: PRIVATE_KEY$1,\n namedCurve: NAMED_CURVE,\n publicKey: PUBLIC_KEY$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.privateKey = asn1.result.privateKey;\n if (NAMED_CURVE in asn1.result) {\n this.namedCurve = asn1.result.namedCurve.valueBlock.toString();\n }\n if (PUBLIC_KEY$1 in asn1.result) {\n const publicKeyData = { schema: asn1.result.publicKey.valueBlock.valueHex };\n if (NAMED_CURVE in this) {\n publicKeyData.namedCurve = this.namedCurve;\n }\n this.publicKey = new ECPublicKey(publicKeyData);\n }\n }\n toSchema() {\n const outputArray = [\n new asn1js.Integer({ value: this.version }),\n this.privateKey\n ];\n if (this.namedCurve) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.ObjectIdentifier({ value: this.namedCurve })\n ]\n }));\n }\n if (this.publicKey) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.BitString({ valueHex: this.publicKey.toSchema().toBER(false) })\n ]\n }));\n }\n return new asn1js.Sequence({\n value: outputArray\n });\n }\n toJSON() {\n if (!this.namedCurve || ECPrivateKey.compareWithDefault(NAMED_CURVE, this.namedCurve)) {\n throw new Error(\"Not enough information for making JSON: absent \\\"namedCurve\\\" value\");\n }\n const curve = ECNamedCurves.find(this.namedCurve);\n const privateKeyJSON = {\n crv: curve ? curve.name : this.namedCurve,\n d: pvtsutils.Convert.ToBase64Url(this.privateKey.valueBlock.valueHexView),\n };\n if (this.publicKey) {\n const publicKeyJSON = this.publicKey.toJSON();\n privateKeyJSON.x = publicKeyJSON.x;\n privateKeyJSON.y = publicKeyJSON.y;\n }\n return privateKeyJSON;\n }\n fromJSON(json) {\n ParameterError.assert(\"json\", json, \"crv\", \"d\");\n let coordinateLength = 0;\n const curve = ECNamedCurves.find(json.crv);\n if (curve) {\n this.namedCurve = curve.id;\n coordinateLength = curve.size;\n }\n const convertBuffer = pvtsutils.Convert.FromBase64Url(json.d);\n if (convertBuffer.byteLength < coordinateLength) {\n const buffer = new ArrayBuffer(coordinateLength);\n const view = new Uint8Array(buffer);\n const convertBufferView = new Uint8Array(convertBuffer);\n view.set(convertBufferView, 1);\n this.privateKey = new asn1js.OctetString({ valueHex: buffer });\n }\n else {\n this.privateKey = new asn1js.OctetString({ valueHex: convertBuffer.slice(0, coordinateLength) });\n }\n if (json.x && json.y) {\n this.publicKey = new ECPublicKey({ json });\n }\n }\n}\nECPrivateKey.CLASS_NAME = \"ECPrivateKey\";\n\nconst PRIME = \"prime\";\nconst EXPONENT = \"exponent\";\nconst COEFFICIENT$1 = \"coefficient\";\nconst CLEAR_PROPS$18 = [\n PRIME,\n EXPONENT,\n COEFFICIENT$1,\n];\nclass OtherPrimeInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.prime = pvutils.getParametersValue(parameters, PRIME, OtherPrimeInfo.defaultValues(PRIME));\n this.exponent = pvutils.getParametersValue(parameters, EXPONENT, OtherPrimeInfo.defaultValues(EXPONENT));\n this.coefficient = pvutils.getParametersValue(parameters, COEFFICIENT$1, OtherPrimeInfo.defaultValues(COEFFICIENT$1));\n if (parameters.json) {\n this.fromJSON(parameters.json);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case PRIME:\n return new asn1js.Integer();\n case EXPONENT:\n return new asn1js.Integer();\n case COEFFICIENT$1:\n return new asn1js.Integer();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.prime || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.exponent || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.coefficient || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$18);\n const asn1 = asn1js.compareSchema(schema, schema, OtherPrimeInfo.schema({\n names: {\n prime: PRIME,\n exponent: EXPONENT,\n coefficient: COEFFICIENT$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.prime = asn1.result.prime.convertFromDER();\n this.exponent = asn1.result.exponent.convertFromDER();\n this.coefficient = asn1.result.coefficient.convertFromDER();\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.prime.convertToDER(),\n this.exponent.convertToDER(),\n this.coefficient.convertToDER()\n ]\n }));\n }\n toJSON() {\n return {\n r: pvtsutils.Convert.ToBase64Url(this.prime.valueBlock.valueHexView),\n d: pvtsutils.Convert.ToBase64Url(this.exponent.valueBlock.valueHexView),\n t: pvtsutils.Convert.ToBase64Url(this.coefficient.valueBlock.valueHexView),\n };\n }\n fromJSON(json) {\n ParameterError.assert(\"json\", json, \"r\", \"d\", \"r\");\n this.prime = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.r) });\n this.exponent = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.d) });\n this.coefficient = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.t) });\n }\n}\nOtherPrimeInfo.CLASS_NAME = \"OtherPrimeInfo\";\n\nconst VERSION$k = \"version\";\nconst MODULUS = \"modulus\";\nconst PUBLIC_EXPONENT = \"publicExponent\";\nconst PRIVATE_EXPONENT = \"privateExponent\";\nconst PRIME1 = \"prime1\";\nconst PRIME2 = \"prime2\";\nconst EXPONENT1 = \"exponent1\";\nconst EXPONENT2 = \"exponent2\";\nconst COEFFICIENT = \"coefficient\";\nconst OTHER_PRIME_INFOS = \"otherPrimeInfos\";\nconst CLEAR_PROPS$17 = [\n VERSION$k,\n MODULUS,\n PUBLIC_EXPONENT,\n PRIVATE_EXPONENT,\n PRIME1,\n PRIME2,\n EXPONENT1,\n EXPONENT2,\n COEFFICIENT,\n OTHER_PRIME_INFOS\n];\nclass RSAPrivateKey extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$k, RSAPrivateKey.defaultValues(VERSION$k));\n this.modulus = pvutils.getParametersValue(parameters, MODULUS, RSAPrivateKey.defaultValues(MODULUS));\n this.publicExponent = pvutils.getParametersValue(parameters, PUBLIC_EXPONENT, RSAPrivateKey.defaultValues(PUBLIC_EXPONENT));\n this.privateExponent = pvutils.getParametersValue(parameters, PRIVATE_EXPONENT, RSAPrivateKey.defaultValues(PRIVATE_EXPONENT));\n this.prime1 = pvutils.getParametersValue(parameters, PRIME1, RSAPrivateKey.defaultValues(PRIME1));\n this.prime2 = pvutils.getParametersValue(parameters, PRIME2, RSAPrivateKey.defaultValues(PRIME2));\n this.exponent1 = pvutils.getParametersValue(parameters, EXPONENT1, RSAPrivateKey.defaultValues(EXPONENT1));\n this.exponent2 = pvutils.getParametersValue(parameters, EXPONENT2, RSAPrivateKey.defaultValues(EXPONENT2));\n this.coefficient = pvutils.getParametersValue(parameters, COEFFICIENT, RSAPrivateKey.defaultValues(COEFFICIENT));\n if (OTHER_PRIME_INFOS in parameters) {\n this.otherPrimeInfos = pvutils.getParametersValue(parameters, OTHER_PRIME_INFOS, RSAPrivateKey.defaultValues(OTHER_PRIME_INFOS));\n }\n if (parameters.json) {\n this.fromJSON(parameters.json);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$k:\n return 0;\n case MODULUS:\n return new asn1js.Integer();\n case PUBLIC_EXPONENT:\n return new asn1js.Integer();\n case PRIVATE_EXPONENT:\n return new asn1js.Integer();\n case PRIME1:\n return new asn1js.Integer();\n case PRIME2:\n return new asn1js.Integer();\n case EXPONENT1:\n return new asn1js.Integer();\n case EXPONENT2:\n return new asn1js.Integer();\n case COEFFICIENT:\n return new asn1js.Integer();\n case OTHER_PRIME_INFOS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.modulus || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.publicExponent || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.privateExponent || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.prime1 || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.prime2 || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.exponent1 || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.exponent2 || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.coefficient || EMPTY_STRING) }),\n new asn1js.Sequence({\n optional: true,\n value: [\n new asn1js.Repeated({\n name: (names.otherPrimeInfosName || EMPTY_STRING),\n value: OtherPrimeInfo.schema(names.otherPrimeInfo || {})\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$17);\n const asn1 = asn1js.compareSchema(schema, schema, RSAPrivateKey.schema({\n names: {\n version: VERSION$k,\n modulus: MODULUS,\n publicExponent: PUBLIC_EXPONENT,\n privateExponent: PRIVATE_EXPONENT,\n prime1: PRIME1,\n prime2: PRIME2,\n exponent1: EXPONENT1,\n exponent2: EXPONENT2,\n coefficient: COEFFICIENT,\n otherPrimeInfo: {\n names: {\n blockName: OTHER_PRIME_INFOS\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.modulus = asn1.result.modulus.convertFromDER(256);\n this.publicExponent = asn1.result.publicExponent;\n this.privateExponent = asn1.result.privateExponent.convertFromDER(256);\n this.prime1 = asn1.result.prime1.convertFromDER(128);\n this.prime2 = asn1.result.prime2.convertFromDER(128);\n this.exponent1 = asn1.result.exponent1.convertFromDER(128);\n this.exponent2 = asn1.result.exponent2.convertFromDER(128);\n this.coefficient = asn1.result.coefficient.convertFromDER(128);\n if (OTHER_PRIME_INFOS in asn1.result)\n this.otherPrimeInfos = Array.from(asn1.result.otherPrimeInfos, element => new OtherPrimeInfo({ schema: element }));\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(this.modulus.convertToDER());\n outputArray.push(this.publicExponent);\n outputArray.push(this.privateExponent.convertToDER());\n outputArray.push(this.prime1.convertToDER());\n outputArray.push(this.prime2.convertToDER());\n outputArray.push(this.exponent1.convertToDER());\n outputArray.push(this.exponent2.convertToDER());\n outputArray.push(this.coefficient.convertToDER());\n if (this.otherPrimeInfos) {\n outputArray.push(new asn1js.Sequence({\n value: Array.from(this.otherPrimeInfos, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const jwk = {\n n: pvtsutils.Convert.ToBase64Url(this.modulus.valueBlock.valueHexView),\n e: pvtsutils.Convert.ToBase64Url(this.publicExponent.valueBlock.valueHexView),\n d: pvtsutils.Convert.ToBase64Url(this.privateExponent.valueBlock.valueHexView),\n p: pvtsutils.Convert.ToBase64Url(this.prime1.valueBlock.valueHexView),\n q: pvtsutils.Convert.ToBase64Url(this.prime2.valueBlock.valueHexView),\n dp: pvtsutils.Convert.ToBase64Url(this.exponent1.valueBlock.valueHexView),\n dq: pvtsutils.Convert.ToBase64Url(this.exponent2.valueBlock.valueHexView),\n qi: pvtsutils.Convert.ToBase64Url(this.coefficient.valueBlock.valueHexView),\n };\n if (this.otherPrimeInfos) {\n jwk.oth = Array.from(this.otherPrimeInfos, o => o.toJSON());\n }\n return jwk;\n }\n fromJSON(json) {\n ParameterError.assert(\"json\", json, \"n\", \"e\", \"d\", \"p\", \"q\", \"dp\", \"dq\", \"qi\");\n this.modulus = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.n) });\n this.publicExponent = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.e) });\n this.privateExponent = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.d) });\n this.prime1 = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.p) });\n this.prime2 = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.q) });\n this.exponent1 = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.dp) });\n this.exponent2 = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.dq) });\n this.coefficient = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.qi) });\n if (json.oth) {\n this.otherPrimeInfos = Array.from(json.oth, (element) => new OtherPrimeInfo({ json: element }));\n }\n }\n}\nRSAPrivateKey.CLASS_NAME = \"RSAPrivateKey\";\n\nconst VERSION$j = \"version\";\nconst PRIVATE_KEY_ALGORITHM = \"privateKeyAlgorithm\";\nconst PRIVATE_KEY = \"privateKey\";\nconst ATTRIBUTES$5 = \"attributes\";\nconst PARSED_KEY = \"parsedKey\";\nconst CLEAR_PROPS$16 = [\n VERSION$j,\n PRIVATE_KEY_ALGORITHM,\n PRIVATE_KEY,\n ATTRIBUTES$5\n];\nclass PrivateKeyInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$j, PrivateKeyInfo.defaultValues(VERSION$j));\n this.privateKeyAlgorithm = pvutils.getParametersValue(parameters, PRIVATE_KEY_ALGORITHM, PrivateKeyInfo.defaultValues(PRIVATE_KEY_ALGORITHM));\n this.privateKey = pvutils.getParametersValue(parameters, PRIVATE_KEY, PrivateKeyInfo.defaultValues(PRIVATE_KEY));\n if (ATTRIBUTES$5 in parameters) {\n this.attributes = pvutils.getParametersValue(parameters, ATTRIBUTES$5, PrivateKeyInfo.defaultValues(ATTRIBUTES$5));\n }\n if (PARSED_KEY in parameters) {\n this.parsedKey = pvutils.getParametersValue(parameters, PARSED_KEY, PrivateKeyInfo.defaultValues(PARSED_KEY));\n }\n if (parameters.json) {\n this.fromJSON(parameters.json);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$j:\n return 0;\n case PRIVATE_KEY_ALGORITHM:\n return new AlgorithmIdentifier();\n case PRIVATE_KEY:\n return new asn1js.OctetString();\n case ATTRIBUTES$5:\n return [];\n case PARSED_KEY:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n AlgorithmIdentifier.schema(names.privateKeyAlgorithm || {}),\n new asn1js.OctetString({ name: (names.privateKey || EMPTY_STRING) }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Repeated({\n name: (names.attributes || EMPTY_STRING),\n value: Attribute.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$16);\n const asn1 = asn1js.compareSchema(schema, schema, PrivateKeyInfo.schema({\n names: {\n version: VERSION$j,\n privateKeyAlgorithm: {\n names: {\n blockName: PRIVATE_KEY_ALGORITHM\n }\n },\n privateKey: PRIVATE_KEY,\n attributes: ATTRIBUTES$5\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.privateKeyAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.privateKeyAlgorithm });\n this.privateKey = asn1.result.privateKey;\n if (ATTRIBUTES$5 in asn1.result)\n this.attributes = Array.from(asn1.result.attributes, element => new Attribute({ schema: element }));\n switch (this.privateKeyAlgorithm.algorithmId) {\n case \"1.2.840.113549.1.1.1\":\n {\n const privateKeyASN1 = asn1js.fromBER(this.privateKey.valueBlock.valueHexView);\n if (privateKeyASN1.offset !== -1)\n this.parsedKey = new RSAPrivateKey({ schema: privateKeyASN1.result });\n }\n break;\n case \"1.2.840.10045.2.1\":\n if (\"algorithmParams\" in this.privateKeyAlgorithm) {\n if (this.privateKeyAlgorithm.algorithmParams instanceof asn1js.ObjectIdentifier) {\n const privateKeyASN1 = asn1js.fromBER(this.privateKey.valueBlock.valueHexView);\n if (privateKeyASN1.offset !== -1) {\n this.parsedKey = new ECPrivateKey({\n namedCurve: this.privateKeyAlgorithm.algorithmParams.valueBlock.toString(),\n schema: privateKeyASN1.result\n });\n }\n }\n }\n break;\n }\n }\n toSchema() {\n const outputArray = [\n new asn1js.Integer({ value: this.version }),\n this.privateKeyAlgorithm.toSchema(),\n this.privateKey\n ];\n if (this.attributes) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: Array.from(this.attributes, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n if (!this.parsedKey) {\n const object = {\n version: this.version,\n privateKeyAlgorithm: this.privateKeyAlgorithm.toJSON(),\n privateKey: this.privateKey.toJSON(),\n };\n if (this.attributes) {\n object.attributes = Array.from(this.attributes, o => o.toJSON());\n }\n return object;\n }\n const jwk = {};\n switch (this.privateKeyAlgorithm.algorithmId) {\n case \"1.2.840.10045.2.1\":\n jwk.kty = \"EC\";\n break;\n case \"1.2.840.113549.1.1.1\":\n jwk.kty = \"RSA\";\n break;\n }\n const publicKeyJWK = this.parsedKey.toJSON();\n Object.assign(jwk, publicKeyJWK);\n return jwk;\n }\n fromJSON(json) {\n if (\"kty\" in json) {\n switch (json.kty.toUpperCase()) {\n case \"EC\":\n this.parsedKey = new ECPrivateKey({ json });\n this.privateKeyAlgorithm = new AlgorithmIdentifier({\n algorithmId: \"1.2.840.10045.2.1\",\n algorithmParams: new asn1js.ObjectIdentifier({ value: this.parsedKey.namedCurve })\n });\n break;\n case \"RSA\":\n this.parsedKey = new RSAPrivateKey({ json });\n this.privateKeyAlgorithm = new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.1.1\",\n algorithmParams: new asn1js.Null()\n });\n break;\n default:\n throw new Error(`Invalid value for \"kty\" parameter: ${json.kty}`);\n }\n this.privateKey = new asn1js.OctetString({ valueHex: this.parsedKey.toSchema().toBER(false) });\n }\n }\n}\nPrivateKeyInfo.CLASS_NAME = \"PrivateKeyInfo\";\n\nconst CONTENT_TYPE$1 = \"contentType\";\nconst CONTENT_ENCRYPTION_ALGORITHM = \"contentEncryptionAlgorithm\";\nconst ENCRYPTED_CONTENT = \"encryptedContent\";\nconst CLEAR_PROPS$15 = [\n CONTENT_TYPE$1,\n CONTENT_ENCRYPTION_ALGORITHM,\n ENCRYPTED_CONTENT,\n];\nconst PIECE_SIZE = 1024;\nclass EncryptedContentInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.contentType = pvutils.getParametersValue(parameters, CONTENT_TYPE$1, EncryptedContentInfo.defaultValues(CONTENT_TYPE$1));\n this.contentEncryptionAlgorithm = pvutils.getParametersValue(parameters, CONTENT_ENCRYPTION_ALGORITHM, EncryptedContentInfo.defaultValues(CONTENT_ENCRYPTION_ALGORITHM));\n if (ENCRYPTED_CONTENT in parameters && parameters.encryptedContent) {\n this.encryptedContent = parameters.encryptedContent;\n if ((this.encryptedContent.idBlock.tagClass === 1) &&\n (this.encryptedContent.idBlock.tagNumber === 4)) {\n if (this.encryptedContent.idBlock.isConstructed === false && !parameters.disableSplit) {\n const constrString = new asn1js.OctetString({\n idBlock: { isConstructed: true },\n isConstructed: true\n });\n let offset = 0;\n const valueHex = this.encryptedContent.valueBlock.valueHexView.slice().buffer;\n let length = valueHex.byteLength;\n while (length > 0) {\n const pieceView = new Uint8Array(valueHex, offset, ((offset + PIECE_SIZE) > valueHex.byteLength) ? (valueHex.byteLength - offset) : PIECE_SIZE);\n const _array = new ArrayBuffer(pieceView.length);\n const _view = new Uint8Array(_array);\n for (let i = 0; i < _view.length; i++)\n _view[i] = pieceView[i];\n constrString.valueBlock.value.push(new asn1js.OctetString({ valueHex: _array }));\n length -= pieceView.length;\n offset += pieceView.length;\n }\n this.encryptedContent = constrString;\n }\n }\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CONTENT_TYPE$1:\n return EMPTY_STRING;\n case CONTENT_ENCRYPTION_ALGORITHM:\n return new AlgorithmIdentifier();\n case ENCRYPTED_CONTENT:\n return new asn1js.OctetString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case CONTENT_TYPE$1:\n return (memberValue === EMPTY_STRING);\n case CONTENT_ENCRYPTION_ALGORITHM:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case ENCRYPTED_CONTENT:\n return (memberValue.isEqual(EncryptedContentInfo.defaultValues(ENCRYPTED_CONTENT)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.contentType || EMPTY_STRING) }),\n AlgorithmIdentifier.schema(names.contentEncryptionAlgorithm || {}),\n new asn1js.Choice({\n value: [\n new asn1js.Constructed({\n name: (names.encryptedContent || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Repeated({\n value: new asn1js.OctetString()\n })\n ]\n }),\n new asn1js.Primitive({\n name: (names.encryptedContent || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n }\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$15);\n const asn1 = asn1js.compareSchema(schema, schema, EncryptedContentInfo.schema({\n names: {\n contentType: CONTENT_TYPE$1,\n contentEncryptionAlgorithm: {\n names: {\n blockName: CONTENT_ENCRYPTION_ALGORITHM\n }\n },\n encryptedContent: ENCRYPTED_CONTENT\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.contentType = asn1.result.contentType.valueBlock.toString();\n this.contentEncryptionAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.contentEncryptionAlgorithm });\n if (ENCRYPTED_CONTENT in asn1.result) {\n this.encryptedContent = asn1.result.encryptedContent;\n this.encryptedContent.idBlock.tagClass = 1;\n this.encryptedContent.idBlock.tagNumber = 4;\n }\n }\n toSchema() {\n const sequenceLengthBlock = {\n isIndefiniteForm: false\n };\n const outputArray = [];\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.contentType }));\n outputArray.push(this.contentEncryptionAlgorithm.toSchema());\n if (this.encryptedContent) {\n sequenceLengthBlock.isIndefiniteForm = this.encryptedContent.idBlock.isConstructed;\n const encryptedValue = this.encryptedContent;\n encryptedValue.idBlock.tagClass = 3;\n encryptedValue.idBlock.tagNumber = 0;\n encryptedValue.lenBlock.isIndefiniteForm = this.encryptedContent.idBlock.isConstructed;\n outputArray.push(encryptedValue);\n }\n return (new asn1js.Sequence({\n lenBlock: sequenceLengthBlock,\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n contentType: this.contentType,\n contentEncryptionAlgorithm: this.contentEncryptionAlgorithm.toJSON()\n };\n if (this.encryptedContent) {\n res.encryptedContent = this.encryptedContent.toJSON();\n }\n return res;\n }\n getEncryptedContent() {\n if (!this.encryptedContent) {\n throw new Error(\"Parameter 'encryptedContent' is undefined\");\n }\n return asn1js.OctetString.prototype.getValue.call(this.encryptedContent);\n }\n}\nEncryptedContentInfo.CLASS_NAME = \"EncryptedContentInfo\";\n\nconst HASH_ALGORITHM$4 = \"hashAlgorithm\";\nconst MASK_GEN_ALGORITHM$1 = \"maskGenAlgorithm\";\nconst SALT_LENGTH = \"saltLength\";\nconst TRAILER_FIELD = \"trailerField\";\nconst CLEAR_PROPS$14 = [\n HASH_ALGORITHM$4,\n MASK_GEN_ALGORITHM$1,\n SALT_LENGTH,\n TRAILER_FIELD\n];\nclass RSASSAPSSParams extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.hashAlgorithm = pvutils.getParametersValue(parameters, HASH_ALGORITHM$4, RSASSAPSSParams.defaultValues(HASH_ALGORITHM$4));\n this.maskGenAlgorithm = pvutils.getParametersValue(parameters, MASK_GEN_ALGORITHM$1, RSASSAPSSParams.defaultValues(MASK_GEN_ALGORITHM$1));\n this.saltLength = pvutils.getParametersValue(parameters, SALT_LENGTH, RSASSAPSSParams.defaultValues(SALT_LENGTH));\n this.trailerField = pvutils.getParametersValue(parameters, TRAILER_FIELD, RSASSAPSSParams.defaultValues(TRAILER_FIELD));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case HASH_ALGORITHM$4:\n return new AlgorithmIdentifier({\n algorithmId: \"1.3.14.3.2.26\",\n algorithmParams: new asn1js.Null()\n });\n case MASK_GEN_ALGORITHM$1:\n return new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.1.8\",\n algorithmParams: (new AlgorithmIdentifier({\n algorithmId: \"1.3.14.3.2.26\",\n algorithmParams: new asn1js.Null()\n })).toSchema()\n });\n case SALT_LENGTH:\n return 20;\n case TRAILER_FIELD:\n return 1;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n optional: true,\n value: [AlgorithmIdentifier.schema(names.hashAlgorithm || {})]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n optional: true,\n value: [AlgorithmIdentifier.schema(names.maskGenAlgorithm || {})]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n optional: true,\n value: [new asn1js.Integer({ name: (names.saltLength || EMPTY_STRING) })]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n optional: true,\n value: [new asn1js.Integer({ name: (names.trailerField || EMPTY_STRING) })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$14);\n const asn1 = asn1js.compareSchema(schema, schema, RSASSAPSSParams.schema({\n names: {\n hashAlgorithm: {\n names: {\n blockName: HASH_ALGORITHM$4\n }\n },\n maskGenAlgorithm: {\n names: {\n blockName: MASK_GEN_ALGORITHM$1\n }\n },\n saltLength: SALT_LENGTH,\n trailerField: TRAILER_FIELD\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (HASH_ALGORITHM$4 in asn1.result)\n this.hashAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.hashAlgorithm });\n if (MASK_GEN_ALGORITHM$1 in asn1.result)\n this.maskGenAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.maskGenAlgorithm });\n if (SALT_LENGTH in asn1.result)\n this.saltLength = asn1.result.saltLength.valueBlock.valueDec;\n if (TRAILER_FIELD in asn1.result)\n this.trailerField = asn1.result.trailerField.valueBlock.valueDec;\n }\n toSchema() {\n const outputArray = [];\n if (!this.hashAlgorithm.isEqual(RSASSAPSSParams.defaultValues(HASH_ALGORITHM$4))) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.hashAlgorithm.toSchema()]\n }));\n }\n if (!this.maskGenAlgorithm.isEqual(RSASSAPSSParams.defaultValues(MASK_GEN_ALGORITHM$1))) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [this.maskGenAlgorithm.toSchema()]\n }));\n }\n if (this.saltLength !== RSASSAPSSParams.defaultValues(SALT_LENGTH)) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [new asn1js.Integer({ value: this.saltLength })]\n }));\n }\n if (this.trailerField !== RSASSAPSSParams.defaultValues(TRAILER_FIELD)) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n value: [new asn1js.Integer({ value: this.trailerField })]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {};\n if (!this.hashAlgorithm.isEqual(RSASSAPSSParams.defaultValues(HASH_ALGORITHM$4))) {\n res.hashAlgorithm = this.hashAlgorithm.toJSON();\n }\n if (!this.maskGenAlgorithm.isEqual(RSASSAPSSParams.defaultValues(MASK_GEN_ALGORITHM$1))) {\n res.maskGenAlgorithm = this.maskGenAlgorithm.toJSON();\n }\n if (this.saltLength !== RSASSAPSSParams.defaultValues(SALT_LENGTH)) {\n res.saltLength = this.saltLength;\n }\n if (this.trailerField !== RSASSAPSSParams.defaultValues(TRAILER_FIELD)) {\n res.trailerField = this.trailerField;\n }\n return res;\n }\n}\nRSASSAPSSParams.CLASS_NAME = \"RSASSAPSSParams\";\n\nconst SALT = \"salt\";\nconst ITERATION_COUNT = \"iterationCount\";\nconst KEY_LENGTH = \"keyLength\";\nconst PRF = \"prf\";\nconst CLEAR_PROPS$13 = [\n SALT,\n ITERATION_COUNT,\n KEY_LENGTH,\n PRF\n];\nclass PBKDF2Params extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.salt = pvutils.getParametersValue(parameters, SALT, PBKDF2Params.defaultValues(SALT));\n this.iterationCount = pvutils.getParametersValue(parameters, ITERATION_COUNT, PBKDF2Params.defaultValues(ITERATION_COUNT));\n if (KEY_LENGTH in parameters) {\n this.keyLength = pvutils.getParametersValue(parameters, KEY_LENGTH, PBKDF2Params.defaultValues(KEY_LENGTH));\n }\n if (PRF in parameters) {\n this.prf = pvutils.getParametersValue(parameters, PRF, PBKDF2Params.defaultValues(PRF));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case SALT:\n return {};\n case ITERATION_COUNT:\n return (-1);\n case KEY_LENGTH:\n return 0;\n case PRF:\n return new AlgorithmIdentifier({\n algorithmId: \"1.3.14.3.2.26\",\n algorithmParams: new asn1js.Null()\n });\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.OctetString({ name: (names.saltPrimitive || EMPTY_STRING) }),\n AlgorithmIdentifier.schema(names.saltConstructed || {})\n ]\n }),\n new asn1js.Integer({ name: (names.iterationCount || EMPTY_STRING) }),\n new asn1js.Integer({\n name: (names.keyLength || EMPTY_STRING),\n optional: true\n }),\n AlgorithmIdentifier.schema(names.prf || {\n names: {\n optional: true\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$13);\n const asn1 = asn1js.compareSchema(schema, schema, PBKDF2Params.schema({\n names: {\n saltPrimitive: SALT,\n saltConstructed: {\n names: {\n blockName: SALT\n }\n },\n iterationCount: ITERATION_COUNT,\n keyLength: KEY_LENGTH,\n prf: {\n names: {\n blockName: PRF,\n optional: true\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.salt = asn1.result.salt;\n this.iterationCount = asn1.result.iterationCount.valueBlock.valueDec;\n if (KEY_LENGTH in asn1.result)\n this.keyLength = asn1.result.keyLength.valueBlock.valueDec;\n if (PRF in asn1.result)\n this.prf = new AlgorithmIdentifier({ schema: asn1.result.prf });\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.salt);\n outputArray.push(new asn1js.Integer({ value: this.iterationCount }));\n if (KEY_LENGTH in this) {\n if (PBKDF2Params.defaultValues(KEY_LENGTH) !== this.keyLength)\n outputArray.push(new asn1js.Integer({ value: this.keyLength }));\n }\n if (this.prf) {\n if (PBKDF2Params.defaultValues(PRF).isEqual(this.prf) === false)\n outputArray.push(this.prf.toSchema());\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n salt: this.salt.toJSON(),\n iterationCount: this.iterationCount\n };\n if (KEY_LENGTH in this) {\n if (PBKDF2Params.defaultValues(KEY_LENGTH) !== this.keyLength)\n res.keyLength = this.keyLength;\n }\n if (this.prf) {\n if (PBKDF2Params.defaultValues(PRF).isEqual(this.prf) === false)\n res.prf = this.prf.toJSON();\n }\n return res;\n }\n}\nPBKDF2Params.CLASS_NAME = \"PBKDF2Params\";\n\nconst KEY_DERIVATION_FUNC = \"keyDerivationFunc\";\nconst ENCRYPTION_SCHEME = \"encryptionScheme\";\nconst CLEAR_PROPS$12 = [\n KEY_DERIVATION_FUNC,\n ENCRYPTION_SCHEME\n];\nclass PBES2Params extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.keyDerivationFunc = pvutils.getParametersValue(parameters, KEY_DERIVATION_FUNC, PBES2Params.defaultValues(KEY_DERIVATION_FUNC));\n this.encryptionScheme = pvutils.getParametersValue(parameters, ENCRYPTION_SCHEME, PBES2Params.defaultValues(ENCRYPTION_SCHEME));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case KEY_DERIVATION_FUNC:\n return new AlgorithmIdentifier();\n case ENCRYPTION_SCHEME:\n return new AlgorithmIdentifier();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.keyDerivationFunc || {}),\n AlgorithmIdentifier.schema(names.encryptionScheme || {})\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$12);\n const asn1 = asn1js.compareSchema(schema, schema, PBES2Params.schema({\n names: {\n keyDerivationFunc: {\n names: {\n blockName: KEY_DERIVATION_FUNC\n }\n },\n encryptionScheme: {\n names: {\n blockName: ENCRYPTION_SCHEME\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.keyDerivationFunc = new AlgorithmIdentifier({ schema: asn1.result.keyDerivationFunc });\n this.encryptionScheme = new AlgorithmIdentifier({ schema: asn1.result.encryptionScheme });\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.keyDerivationFunc.toSchema(),\n this.encryptionScheme.toSchema()\n ]\n }));\n }\n toJSON() {\n return {\n keyDerivationFunc: this.keyDerivationFunc.toJSON(),\n encryptionScheme: this.encryptionScheme.toJSON()\n };\n }\n}\nPBES2Params.CLASS_NAME = \"PBES2Params\";\n\nclass AbstractCryptoEngine {\n constructor(parameters) {\n this.crypto = parameters.crypto;\n this.subtle = \"webkitSubtle\" in parameters.crypto\n ? parameters.crypto.webkitSubtle\n : parameters.crypto.subtle;\n this.name = pvutils.getParametersValue(parameters, \"name\", EMPTY_STRING);\n }\n async encrypt(...args) {\n return this.subtle.encrypt(...args);\n }\n async decrypt(...args) {\n return this.subtle.decrypt(...args);\n }\n sign(...args) {\n return this.subtle.sign(...args);\n }\n async verify(...args) {\n return this.subtle.verify(...args);\n }\n async digest(...args) {\n return this.subtle.digest(...args);\n }\n async generateKey(...args) {\n return this.subtle.generateKey(...args);\n }\n async deriveKey(...args) {\n return this.subtle.deriveKey(...args);\n }\n async deriveBits(...args) {\n return this.subtle.deriveBits(...args);\n }\n async wrapKey(...args) {\n return this.subtle.wrapKey(...args);\n }\n async unwrapKey(...args) {\n return this.subtle.unwrapKey(...args);\n }\n exportKey(...args) {\n return this.subtle.exportKey(...args);\n }\n importKey(...args) {\n return this.subtle.importKey(...args);\n }\n getRandomValues(array) {\n return this.crypto.getRandomValues(array);\n }\n}\n\nasync function makePKCS12B2Key(hashAlgorithm, keyLength, password, salt, iterationCount) {\n let u;\n let v;\n let md;\n switch (hashAlgorithm.toUpperCase()) {\n case \"SHA-1\":\n u = 20;\n v = 64;\n md = sha1;\n break;\n case \"SHA-256\":\n u = 32;\n v = 64;\n md = sha256;\n break;\n case \"SHA-384\":\n u = 48;\n v = 128;\n md = sha384;\n break;\n case \"SHA-512\":\n u = 64;\n v = 128;\n md = sha512;\n break;\n default:\n throw new Error(\"Unsupported hashing algorithm\");\n }\n const originalPassword = new Uint8Array(password);\n let decodedPassword = new TextDecoder().decode(password);\n const encodedPassword = new TextEncoder().encode(decodedPassword);\n if (encodedPassword.some((byte, i) => byte !== originalPassword[i])) {\n decodedPassword = String.fromCharCode(...originalPassword);\n }\n const passwordTransformed = new Uint8Array(decodedPassword.length * 2 + 2);\n const passwordView = new DataView(passwordTransformed.buffer);\n for (let i = 0; i < decodedPassword.length; i++) {\n passwordView.setUint16(i * 2, decodedPassword.charCodeAt(i), false);\n }\n passwordView.setUint16(decodedPassword.length * 2, 0, false);\n const D = new Uint8Array(v).fill(3);\n const saltView = new Uint8Array(salt);\n const S = new Uint8Array(v * Math.ceil(saltView.length / v)).map((_, i) => saltView[i % saltView.length]);\n const P = new Uint8Array(v * Math.ceil(passwordTransformed.length / v)).map((_, i) => passwordTransformed[i % passwordTransformed.length]);\n let I = new Uint8Array(S.length + P.length);\n I.set(S);\n I.set(P, S.length);\n const c = Math.ceil((keyLength >> 3) / u);\n const result = [];\n for (let i = 0; i < c; i++) {\n let A = new Uint8Array(D.length + I.length);\n A.set(D);\n A.set(I, D.length);\n for (let j = 0; j < iterationCount; j++) {\n A = md(A);\n }\n const B = new Uint8Array(v).map((_, i) => A[i % A.length]);\n const k = Math.ceil(saltView.length / v) + Math.ceil(passwordTransformed.length / v);\n const iRound = [];\n for (let j = 0; j < k; j++) {\n const chunk = Array.from(I.slice(j * v, (j + 1) * v));\n let x = 0x1ff;\n for (let l = B.length - 1; l >= 0; l--) {\n x >>= 8;\n x += B[l] + (chunk[l] || 0);\n chunk[l] = x & 0xff;\n }\n iRound.push(...chunk);\n }\n I = new Uint8Array(iRound);\n result.push(...A);\n }\n return new Uint8Array(result.slice(0, keyLength >> 3)).buffer;\n}\nfunction prepareAlgorithm(data) {\n const res = typeof data === \"string\"\n ? { name: data }\n : data;\n if (\"hash\" in res) {\n return {\n ...res,\n hash: prepareAlgorithm(res.hash)\n };\n }\n return res;\n}\nclass CryptoEngine extends AbstractCryptoEngine {\n async importKey(format, keyData, algorithm, extractable, keyUsages) {\n var _a, _b, _c, _d, _e, _f;\n let jwk = {};\n const alg = prepareAlgorithm(algorithm);\n switch (format.toLowerCase()) {\n case \"raw\":\n return this.subtle.importKey(\"raw\", keyData, algorithm, extractable, keyUsages);\n case \"spki\":\n {\n const asn1 = asn1js.fromBER(pvtsutils.BufferSourceConverter.toArrayBuffer(keyData));\n AsnError.assert(asn1, \"keyData\");\n const publicKeyInfo = new PublicKeyInfo();\n try {\n publicKeyInfo.fromSchema(asn1.result);\n }\n catch {\n throw new ArgumentError(\"Incorrect keyData\");\n }\n switch (alg.name.toUpperCase()) {\n case \"RSA-PSS\":\n {\n if (!alg.hash) {\n throw new ParameterError(\"hash\", \"algorithm.hash\", \"Incorrect hash algorithm: Hash algorithm is missed\");\n }\n switch (alg.hash.name.toUpperCase()) {\n case \"SHA-1\":\n jwk.alg = \"PS1\";\n break;\n case \"SHA-256\":\n jwk.alg = \"PS256\";\n break;\n case \"SHA-384\":\n jwk.alg = \"PS384\";\n break;\n case \"SHA-512\":\n jwk.alg = \"PS512\";\n break;\n default:\n throw new Error(`Incorrect hash algorithm: ${alg.hash.name.toUpperCase()}`);\n }\n }\n case \"RSASSA-PKCS1-V1_5\":\n {\n keyUsages = [\"verify\"];\n jwk.kty = \"RSA\";\n jwk.ext = extractable;\n jwk.key_ops = keyUsages;\n if (publicKeyInfo.algorithm.algorithmId !== \"1.2.840.113549.1.1.1\")\n throw new Error(`Incorrect public key algorithm: ${publicKeyInfo.algorithm.algorithmId}`);\n if (!jwk.alg) {\n if (!alg.hash) {\n throw new ParameterError(\"hash\", \"algorithm.hash\", \"Incorrect hash algorithm: Hash algorithm is missed\");\n }\n switch (alg.hash.name.toUpperCase()) {\n case \"SHA-1\":\n jwk.alg = \"RS1\";\n break;\n case \"SHA-256\":\n jwk.alg = \"RS256\";\n break;\n case \"SHA-384\":\n jwk.alg = \"RS384\";\n break;\n case \"SHA-512\":\n jwk.alg = \"RS512\";\n break;\n default:\n throw new Error(`Incorrect hash algorithm: ${alg.hash.name.toUpperCase()}`);\n }\n }\n const publicKeyJSON = publicKeyInfo.toJSON();\n Object.assign(jwk, publicKeyJSON);\n }\n break;\n case \"ECDSA\":\n keyUsages = [\"verify\"];\n case \"ECDH\":\n {\n jwk = {\n kty: \"EC\",\n ext: extractable,\n key_ops: keyUsages\n };\n if (publicKeyInfo.algorithm.algorithmId !== \"1.2.840.10045.2.1\") {\n throw new Error(`Incorrect public key algorithm: ${publicKeyInfo.algorithm.algorithmId}`);\n }\n const publicKeyJSON = publicKeyInfo.toJSON();\n Object.assign(jwk, publicKeyJSON);\n }\n break;\n case \"RSA-OAEP\":\n {\n jwk.kty = \"RSA\";\n jwk.ext = extractable;\n jwk.key_ops = keyUsages;\n if (this.name.toLowerCase() === \"safari\")\n jwk.alg = \"RSA-OAEP\";\n else {\n if (!alg.hash) {\n throw new ParameterError(\"hash\", \"algorithm.hash\", \"Incorrect hash algorithm: Hash algorithm is missed\");\n }\n switch (alg.hash.name.toUpperCase()) {\n case \"SHA-1\":\n jwk.alg = \"RSA-OAEP\";\n break;\n case \"SHA-256\":\n jwk.alg = \"RSA-OAEP-256\";\n break;\n case \"SHA-384\":\n jwk.alg = \"RSA-OAEP-384\";\n break;\n case \"SHA-512\":\n jwk.alg = \"RSA-OAEP-512\";\n break;\n default:\n throw new Error(`Incorrect hash algorithm: ${alg.hash.name.toUpperCase()}`);\n }\n }\n const publicKeyJSON = publicKeyInfo.toJSON();\n Object.assign(jwk, publicKeyJSON);\n }\n break;\n case \"RSAES-PKCS1-V1_5\":\n {\n jwk.kty = \"RSA\";\n jwk.ext = extractable;\n jwk.key_ops = keyUsages;\n jwk.alg = \"PS1\";\n const publicKeyJSON = publicKeyInfo.toJSON();\n Object.assign(jwk, publicKeyJSON);\n }\n break;\n default:\n throw new Error(`Incorrect algorithm name: ${alg.name.toUpperCase()}`);\n }\n }\n break;\n case \"pkcs8\":\n {\n const privateKeyInfo = new PrivateKeyInfo();\n const asn1 = asn1js.fromBER(pvtsutils.BufferSourceConverter.toArrayBuffer(keyData));\n AsnError.assert(asn1, \"keyData\");\n try {\n privateKeyInfo.fromSchema(asn1.result);\n }\n catch (ex) {\n throw new Error(\"Incorrect keyData\");\n }\n if (!privateKeyInfo.parsedKey)\n throw new Error(\"Incorrect keyData\");\n switch (alg.name.toUpperCase()) {\n case \"RSA-PSS\":\n {\n switch ((_a = alg.hash) === null || _a === void 0 ? void 0 : _a.name.toUpperCase()) {\n case \"SHA-1\":\n jwk.alg = \"PS1\";\n break;\n case \"SHA-256\":\n jwk.alg = \"PS256\";\n break;\n case \"SHA-384\":\n jwk.alg = \"PS384\";\n break;\n case \"SHA-512\":\n jwk.alg = \"PS512\";\n break;\n default:\n throw new Error(`Incorrect hash algorithm: ${(_b = alg.hash) === null || _b === void 0 ? void 0 : _b.name.toUpperCase()}`);\n }\n }\n case \"RSASSA-PKCS1-V1_5\":\n {\n keyUsages = [\"sign\"];\n jwk.kty = \"RSA\";\n jwk.ext = extractable;\n jwk.key_ops = keyUsages;\n if (privateKeyInfo.privateKeyAlgorithm.algorithmId !== \"1.2.840.113549.1.1.1\")\n throw new Error(`Incorrect private key algorithm: ${privateKeyInfo.privateKeyAlgorithm.algorithmId}`);\n if ((\"alg\" in jwk) === false) {\n switch ((_c = alg.hash) === null || _c === void 0 ? void 0 : _c.name.toUpperCase()) {\n case \"SHA-1\":\n jwk.alg = \"RS1\";\n break;\n case \"SHA-256\":\n jwk.alg = \"RS256\";\n break;\n case \"SHA-384\":\n jwk.alg = \"RS384\";\n break;\n case \"SHA-512\":\n jwk.alg = \"RS512\";\n break;\n default:\n throw new Error(`Incorrect hash algorithm: ${(_d = alg.hash) === null || _d === void 0 ? void 0 : _d.name.toUpperCase()}`);\n }\n }\n const privateKeyJSON = privateKeyInfo.toJSON();\n Object.assign(jwk, privateKeyJSON);\n }\n break;\n case \"ECDSA\":\n keyUsages = [\"sign\"];\n case \"ECDH\":\n {\n jwk = {\n kty: \"EC\",\n ext: extractable,\n key_ops: keyUsages\n };\n if (privateKeyInfo.privateKeyAlgorithm.algorithmId !== \"1.2.840.10045.2.1\")\n throw new Error(`Incorrect algorithm: ${privateKeyInfo.privateKeyAlgorithm.algorithmId}`);\n const privateKeyJSON = privateKeyInfo.toJSON();\n Object.assign(jwk, privateKeyJSON);\n }\n break;\n case \"RSA-OAEP\":\n {\n jwk.kty = \"RSA\";\n jwk.ext = extractable;\n jwk.key_ops = keyUsages;\n if (this.name.toLowerCase() === \"safari\")\n jwk.alg = \"RSA-OAEP\";\n else {\n switch ((_e = alg.hash) === null || _e === void 0 ? void 0 : _e.name.toUpperCase()) {\n case \"SHA-1\":\n jwk.alg = \"RSA-OAEP\";\n break;\n case \"SHA-256\":\n jwk.alg = \"RSA-OAEP-256\";\n break;\n case \"SHA-384\":\n jwk.alg = \"RSA-OAEP-384\";\n break;\n case \"SHA-512\":\n jwk.alg = \"RSA-OAEP-512\";\n break;\n default:\n throw new Error(`Incorrect hash algorithm: ${(_f = alg.hash) === null || _f === void 0 ? void 0 : _f.name.toUpperCase()}`);\n }\n }\n const privateKeyJSON = privateKeyInfo.toJSON();\n Object.assign(jwk, privateKeyJSON);\n }\n break;\n case \"RSAES-PKCS1-V1_5\":\n {\n keyUsages = [\"decrypt\"];\n jwk.kty = \"RSA\";\n jwk.ext = extractable;\n jwk.key_ops = keyUsages;\n jwk.alg = \"PS1\";\n const privateKeyJSON = privateKeyInfo.toJSON();\n Object.assign(jwk, privateKeyJSON);\n }\n break;\n default:\n throw new Error(`Incorrect algorithm name: ${alg.name.toUpperCase()}`);\n }\n }\n break;\n case \"jwk\":\n jwk = keyData;\n break;\n default:\n throw new Error(`Incorrect format: ${format}`);\n }\n if (this.name.toLowerCase() === \"safari\") {\n try {\n return this.subtle.importKey(\"jwk\", pvutils.stringToArrayBuffer(JSON.stringify(jwk)), algorithm, extractable, keyUsages);\n }\n catch {\n return this.subtle.importKey(\"jwk\", jwk, algorithm, extractable, keyUsages);\n }\n }\n return this.subtle.importKey(\"jwk\", jwk, algorithm, extractable, keyUsages);\n }\n async exportKey(format, key) {\n let jwk = await this.subtle.exportKey(\"jwk\", key);\n if (this.name.toLowerCase() === \"safari\") {\n if (jwk instanceof ArrayBuffer) {\n jwk = JSON.parse(pvutils.arrayBufferToString(jwk));\n }\n }\n switch (format.toLowerCase()) {\n case \"raw\":\n return this.subtle.exportKey(\"raw\", key);\n case \"spki\": {\n const publicKeyInfo = new PublicKeyInfo();\n try {\n publicKeyInfo.fromJSON(jwk);\n }\n catch (ex) {\n throw new Error(\"Incorrect key data\");\n }\n return publicKeyInfo.toSchema().toBER(false);\n }\n case \"pkcs8\": {\n const privateKeyInfo = new PrivateKeyInfo();\n try {\n privateKeyInfo.fromJSON(jwk);\n }\n catch (ex) {\n throw new Error(\"Incorrect key data\");\n }\n return privateKeyInfo.toSchema().toBER(false);\n }\n case \"jwk\":\n return jwk;\n default:\n throw new Error(`Incorrect format: ${format}`);\n }\n }\n async convert(inputFormat, outputFormat, keyData, algorithm, extractable, keyUsages) {\n if (inputFormat.toLowerCase() === outputFormat.toLowerCase()) {\n return keyData;\n }\n const key = await this.importKey(inputFormat, keyData, algorithm, extractable, keyUsages);\n return this.exportKey(outputFormat, key);\n }\n getAlgorithmByOID(oid, safety = false, target) {\n switch (oid) {\n case \"1.2.840.113549.1.1.1\":\n return {\n name: \"RSAES-PKCS1-v1_5\"\n };\n case \"1.2.840.113549.1.1.5\":\n return {\n name: \"RSASSA-PKCS1-v1_5\",\n hash: {\n name: \"SHA-1\"\n }\n };\n case \"1.2.840.113549.1.1.11\":\n return {\n name: \"RSASSA-PKCS1-v1_5\",\n hash: {\n name: \"SHA-256\"\n }\n };\n case \"1.2.840.113549.1.1.12\":\n return {\n name: \"RSASSA-PKCS1-v1_5\",\n hash: {\n name: \"SHA-384\"\n }\n };\n case \"1.2.840.113549.1.1.13\":\n return {\n name: \"RSASSA-PKCS1-v1_5\",\n hash: {\n name: \"SHA-512\"\n }\n };\n case \"1.2.840.113549.1.1.10\":\n return {\n name: \"RSA-PSS\"\n };\n case \"1.2.840.113549.1.1.7\":\n return {\n name: \"RSA-OAEP\"\n };\n case \"1.2.840.10045.2.1\":\n case \"1.2.840.10045.4.1\":\n return {\n name: \"ECDSA\",\n hash: {\n name: \"SHA-1\"\n }\n };\n case \"1.2.840.10045.4.3.2\":\n return {\n name: \"ECDSA\",\n hash: {\n name: \"SHA-256\"\n }\n };\n case \"1.2.840.10045.4.3.3\":\n return {\n name: \"ECDSA\",\n hash: {\n name: \"SHA-384\"\n }\n };\n case \"1.2.840.10045.4.3.4\":\n return {\n name: \"ECDSA\",\n hash: {\n name: \"SHA-512\"\n }\n };\n case \"1.3.133.16.840.63.0.2\":\n return {\n name: \"ECDH\",\n kdf: \"SHA-1\"\n };\n case \"1.3.132.1.11.1\":\n return {\n name: \"ECDH\",\n kdf: \"SHA-256\"\n };\n case \"1.3.132.1.11.2\":\n return {\n name: \"ECDH\",\n kdf: \"SHA-384\"\n };\n case \"1.3.132.1.11.3\":\n return {\n name: \"ECDH\",\n kdf: \"SHA-512\"\n };\n case \"2.16.840.1.101.3.4.1.2\":\n return {\n name: \"AES-CBC\",\n length: 128\n };\n case \"2.16.840.1.101.3.4.1.22\":\n return {\n name: \"AES-CBC\",\n length: 192\n };\n case \"2.16.840.1.101.3.4.1.42\":\n return {\n name: \"AES-CBC\",\n length: 256\n };\n case \"2.16.840.1.101.3.4.1.6\":\n return {\n name: \"AES-GCM\",\n length: 128\n };\n case \"2.16.840.1.101.3.4.1.26\":\n return {\n name: \"AES-GCM\",\n length: 192\n };\n case \"2.16.840.1.101.3.4.1.46\":\n return {\n name: \"AES-GCM\",\n length: 256\n };\n case \"2.16.840.1.101.3.4.1.4\":\n return {\n name: \"AES-CFB\",\n length: 128\n };\n case \"2.16.840.1.101.3.4.1.24\":\n return {\n name: \"AES-CFB\",\n length: 192\n };\n case \"2.16.840.1.101.3.4.1.44\":\n return {\n name: \"AES-CFB\",\n length: 256\n };\n case \"2.16.840.1.101.3.4.1.5\":\n return {\n name: \"AES-KW\",\n length: 128\n };\n case \"2.16.840.1.101.3.4.1.25\":\n return {\n name: \"AES-KW\",\n length: 192\n };\n case \"2.16.840.1.101.3.4.1.45\":\n return {\n name: \"AES-KW\",\n length: 256\n };\n case \"1.2.840.113549.2.7\":\n return {\n name: \"HMAC\",\n hash: {\n name: \"SHA-1\"\n }\n };\n case \"1.2.840.113549.2.9\":\n return {\n name: \"HMAC\",\n hash: {\n name: \"SHA-256\"\n }\n };\n case \"1.2.840.113549.2.10\":\n return {\n name: \"HMAC\",\n hash: {\n name: \"SHA-384\"\n }\n };\n case \"1.2.840.113549.2.11\":\n return {\n name: \"HMAC\",\n hash: {\n name: \"SHA-512\"\n }\n };\n case \"1.2.840.113549.1.9.16.3.5\":\n return {\n name: \"DH\"\n };\n case \"1.3.14.3.2.26\":\n return {\n name: \"SHA-1\"\n };\n case \"2.16.840.1.101.3.4.2.1\":\n return {\n name: \"SHA-256\"\n };\n case \"2.16.840.1.101.3.4.2.2\":\n return {\n name: \"SHA-384\"\n };\n case \"2.16.840.1.101.3.4.2.3\":\n return {\n name: \"SHA-512\"\n };\n case \"1.2.840.113549.1.5.12\":\n return {\n name: \"PBKDF2\"\n };\n case \"1.2.840.10045.3.1.7\":\n return {\n name: \"P-256\"\n };\n case \"1.3.132.0.34\":\n return {\n name: \"P-384\"\n };\n case \"1.3.132.0.35\":\n return {\n name: \"P-521\"\n };\n }\n if (safety) {\n throw new Error(`Unsupported algorithm identifier ${target ? `for ${target} ` : EMPTY_STRING}: ${oid}`);\n }\n return {};\n }\n getOIDByAlgorithm(algorithm, safety = false, target) {\n let result = EMPTY_STRING;\n switch (algorithm.name.toUpperCase()) {\n case \"RSAES-PKCS1-V1_5\":\n result = \"1.2.840.113549.1.1.1\";\n break;\n case \"RSASSA-PKCS1-V1_5\":\n switch (algorithm.hash.name.toUpperCase()) {\n case \"SHA-1\":\n result = \"1.2.840.113549.1.1.5\";\n break;\n case \"SHA-256\":\n result = \"1.2.840.113549.1.1.11\";\n break;\n case \"SHA-384\":\n result = \"1.2.840.113549.1.1.12\";\n break;\n case \"SHA-512\":\n result = \"1.2.840.113549.1.1.13\";\n break;\n }\n break;\n case \"RSA-PSS\":\n result = \"1.2.840.113549.1.1.10\";\n break;\n case \"RSA-OAEP\":\n result = \"1.2.840.113549.1.1.7\";\n break;\n case \"ECDSA\":\n switch (algorithm.hash.name.toUpperCase()) {\n case \"SHA-1\":\n result = \"1.2.840.10045.4.1\";\n break;\n case \"SHA-256\":\n result = \"1.2.840.10045.4.3.2\";\n break;\n case \"SHA-384\":\n result = \"1.2.840.10045.4.3.3\";\n break;\n case \"SHA-512\":\n result = \"1.2.840.10045.4.3.4\";\n break;\n }\n break;\n case \"ECDH\":\n switch (algorithm.kdf.toUpperCase()) {\n case \"SHA-1\":\n result = \"1.3.133.16.840.63.0.2\";\n break;\n case \"SHA-256\":\n result = \"1.3.132.1.11.1\";\n break;\n case \"SHA-384\":\n result = \"1.3.132.1.11.2\";\n break;\n case \"SHA-512\":\n result = \"1.3.132.1.11.3\";\n break;\n }\n break;\n case \"AES-CTR\":\n break;\n case \"AES-CBC\":\n switch (algorithm.length) {\n case 128:\n result = \"2.16.840.1.101.3.4.1.2\";\n break;\n case 192:\n result = \"2.16.840.1.101.3.4.1.22\";\n break;\n case 256:\n result = \"2.16.840.1.101.3.4.1.42\";\n break;\n }\n break;\n case \"AES-CMAC\":\n break;\n case \"AES-GCM\":\n switch (algorithm.length) {\n case 128:\n result = \"2.16.840.1.101.3.4.1.6\";\n break;\n case 192:\n result = \"2.16.840.1.101.3.4.1.26\";\n break;\n case 256:\n result = \"2.16.840.1.101.3.4.1.46\";\n break;\n }\n break;\n case \"AES-CFB\":\n switch (algorithm.length) {\n case 128:\n result = \"2.16.840.1.101.3.4.1.4\";\n break;\n case 192:\n result = \"2.16.840.1.101.3.4.1.24\";\n break;\n case 256:\n result = \"2.16.840.1.101.3.4.1.44\";\n break;\n }\n break;\n case \"AES-KW\":\n switch (algorithm.length) {\n case 128:\n result = \"2.16.840.1.101.3.4.1.5\";\n break;\n case 192:\n result = \"2.16.840.1.101.3.4.1.25\";\n break;\n case 256:\n result = \"2.16.840.1.101.3.4.1.45\";\n break;\n }\n break;\n case \"HMAC\":\n switch (algorithm.hash.name.toUpperCase()) {\n case \"SHA-1\":\n result = \"1.2.840.113549.2.7\";\n break;\n case \"SHA-256\":\n result = \"1.2.840.113549.2.9\";\n break;\n case \"SHA-384\":\n result = \"1.2.840.113549.2.10\";\n break;\n case \"SHA-512\":\n result = \"1.2.840.113549.2.11\";\n break;\n }\n break;\n case \"DH\":\n result = \"1.2.840.113549.1.9.16.3.5\";\n break;\n case \"SHA-1\":\n result = \"1.3.14.3.2.26\";\n break;\n case \"SHA-256\":\n result = \"2.16.840.1.101.3.4.2.1\";\n break;\n case \"SHA-384\":\n result = \"2.16.840.1.101.3.4.2.2\";\n break;\n case \"SHA-512\":\n result = \"2.16.840.1.101.3.4.2.3\";\n break;\n case \"CONCAT\":\n break;\n case \"HKDF\":\n break;\n case \"PBKDF2\":\n result = \"1.2.840.113549.1.5.12\";\n break;\n case \"P-256\":\n result = \"1.2.840.10045.3.1.7\";\n break;\n case \"P-384\":\n result = \"1.3.132.0.34\";\n break;\n case \"P-521\":\n result = \"1.3.132.0.35\";\n break;\n }\n if (!result && safety) {\n throw new Error(`Unsupported algorithm ${target ? `for ${target} ` : EMPTY_STRING}: ${algorithm.name}`);\n }\n return result;\n }\n getAlgorithmParameters(algorithmName, operation) {\n let result = {\n algorithm: {},\n usages: []\n };\n switch (algorithmName.toUpperCase()) {\n case \"RSAES-PKCS1-V1_5\":\n case \"RSASSA-PKCS1-V1_5\":\n switch (operation.toLowerCase()) {\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"RSASSA-PKCS1-v1_5\",\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: {\n name: \"SHA-256\"\n }\n },\n usages: [\"sign\", \"verify\"]\n };\n break;\n case \"verify\":\n case \"sign\":\n case \"importkey\":\n result = {\n algorithm: {\n name: \"RSASSA-PKCS1-v1_5\",\n hash: {\n name: \"SHA-256\"\n }\n },\n usages: [\"verify\"]\n };\n break;\n case \"exportkey\":\n default:\n return {\n algorithm: {\n name: \"RSASSA-PKCS1-v1_5\"\n },\n usages: []\n };\n }\n break;\n case \"RSA-PSS\":\n switch (operation.toLowerCase()) {\n case \"sign\":\n case \"verify\":\n result = {\n algorithm: {\n name: \"RSA-PSS\",\n hash: {\n name: \"SHA-1\"\n },\n saltLength: 20\n },\n usages: [\"sign\", \"verify\"]\n };\n break;\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"RSA-PSS\",\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: {\n name: \"SHA-1\"\n }\n },\n usages: [\"sign\", \"verify\"]\n };\n break;\n case \"importkey\":\n result = {\n algorithm: {\n name: \"RSA-PSS\",\n hash: {\n name: \"SHA-1\"\n }\n },\n usages: [\"verify\"]\n };\n break;\n case \"exportkey\":\n default:\n return {\n algorithm: {\n name: \"RSA-PSS\"\n },\n usages: []\n };\n }\n break;\n case \"RSA-OAEP\":\n switch (operation.toLowerCase()) {\n case \"encrypt\":\n case \"decrypt\":\n result = {\n algorithm: {\n name: \"RSA-OAEP\"\n },\n usages: [\"encrypt\", \"decrypt\"]\n };\n break;\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"RSA-OAEP\",\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: {\n name: \"SHA-256\"\n }\n },\n usages: [\"encrypt\", \"decrypt\", \"wrapKey\", \"unwrapKey\"]\n };\n break;\n case \"importkey\":\n result = {\n algorithm: {\n name: \"RSA-OAEP\",\n hash: {\n name: \"SHA-256\"\n }\n },\n usages: [\"encrypt\"]\n };\n break;\n case \"exportkey\":\n default:\n return {\n algorithm: {\n name: \"RSA-OAEP\"\n },\n usages: []\n };\n }\n break;\n case \"ECDSA\":\n switch (operation.toLowerCase()) {\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"ECDSA\",\n namedCurve: \"P-256\"\n },\n usages: [\"sign\", \"verify\"]\n };\n break;\n case \"importkey\":\n result = {\n algorithm: {\n name: \"ECDSA\",\n namedCurve: \"P-256\"\n },\n usages: [\"verify\"]\n };\n break;\n case \"verify\":\n case \"sign\":\n result = {\n algorithm: {\n name: \"ECDSA\",\n hash: {\n name: \"SHA-256\"\n }\n },\n usages: [\"sign\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"ECDSA\"\n },\n usages: []\n };\n }\n break;\n case \"ECDH\":\n switch (operation.toLowerCase()) {\n case \"exportkey\":\n case \"importkey\":\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"ECDH\",\n namedCurve: \"P-256\"\n },\n usages: [\"deriveKey\", \"deriveBits\"]\n };\n break;\n case \"derivekey\":\n case \"derivebits\":\n result = {\n algorithm: {\n name: \"ECDH\",\n namedCurve: \"P-256\",\n public: []\n },\n usages: [\"encrypt\", \"decrypt\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"ECDH\"\n },\n usages: []\n };\n }\n break;\n case \"AES-CTR\":\n switch (operation.toLowerCase()) {\n case \"importkey\":\n case \"exportkey\":\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"AES-CTR\",\n length: 256\n },\n usages: [\"encrypt\", \"decrypt\", \"wrapKey\", \"unwrapKey\"]\n };\n break;\n case \"decrypt\":\n case \"encrypt\":\n result = {\n algorithm: {\n name: \"AES-CTR\",\n counter: new Uint8Array(16),\n length: 10\n },\n usages: [\"encrypt\", \"decrypt\", \"wrapKey\", \"unwrapKey\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"AES-CTR\"\n },\n usages: []\n };\n }\n break;\n case \"AES-CBC\":\n switch (operation.toLowerCase()) {\n case \"importkey\":\n case \"exportkey\":\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"AES-CBC\",\n length: 256\n },\n usages: [\"encrypt\", \"decrypt\", \"wrapKey\", \"unwrapKey\"]\n };\n break;\n case \"decrypt\":\n case \"encrypt\":\n result = {\n algorithm: {\n name: \"AES-CBC\",\n iv: this.getRandomValues(new Uint8Array(16))\n },\n usages: [\"encrypt\", \"decrypt\", \"wrapKey\", \"unwrapKey\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"AES-CBC\"\n },\n usages: []\n };\n }\n break;\n case \"AES-GCM\":\n switch (operation.toLowerCase()) {\n case \"importkey\":\n case \"exportkey\":\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"AES-GCM\",\n length: 256\n },\n usages: [\"encrypt\", \"decrypt\", \"wrapKey\", \"unwrapKey\"]\n };\n break;\n case \"decrypt\":\n case \"encrypt\":\n result = {\n algorithm: {\n name: \"AES-GCM\",\n iv: this.getRandomValues(new Uint8Array(16))\n },\n usages: [\"encrypt\", \"decrypt\", \"wrapKey\", \"unwrapKey\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"AES-GCM\"\n },\n usages: []\n };\n }\n break;\n case \"AES-KW\":\n switch (operation.toLowerCase()) {\n case \"importkey\":\n case \"exportkey\":\n case \"generatekey\":\n case \"wrapkey\":\n case \"unwrapkey\":\n result = {\n algorithm: {\n name: \"AES-KW\",\n length: 256\n },\n usages: [\"wrapKey\", \"unwrapKey\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"AES-KW\"\n },\n usages: []\n };\n }\n break;\n case \"HMAC\":\n switch (operation.toLowerCase()) {\n case \"sign\":\n case \"verify\":\n result = {\n algorithm: {\n name: \"HMAC\"\n },\n usages: [\"sign\", \"verify\"]\n };\n break;\n case \"importkey\":\n case \"exportkey\":\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"HMAC\",\n length: 32,\n hash: {\n name: \"SHA-256\"\n }\n },\n usages: [\"sign\", \"verify\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"HMAC\"\n },\n usages: []\n };\n }\n break;\n case \"HKDF\":\n switch (operation.toLowerCase()) {\n case \"derivekey\":\n result = {\n algorithm: {\n name: \"HKDF\",\n hash: \"SHA-256\",\n salt: new Uint8Array([]),\n info: new Uint8Array([])\n },\n usages: [\"encrypt\", \"decrypt\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"HKDF\"\n },\n usages: []\n };\n }\n break;\n case \"PBKDF2\":\n switch (operation.toLowerCase()) {\n case \"derivekey\":\n result = {\n algorithm: {\n name: \"PBKDF2\",\n hash: { name: \"SHA-256\" },\n salt: new Uint8Array([]),\n iterations: 10000\n },\n usages: [\"encrypt\", \"decrypt\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"PBKDF2\"\n },\n usages: []\n };\n }\n break;\n }\n return result;\n }\n getHashAlgorithm(signatureAlgorithm) {\n let result = EMPTY_STRING;\n switch (signatureAlgorithm.algorithmId) {\n case \"1.2.840.10045.4.1\":\n case \"1.2.840.113549.1.1.5\":\n result = \"SHA-1\";\n break;\n case \"1.2.840.10045.4.3.2\":\n case \"1.2.840.113549.1.1.11\":\n result = \"SHA-256\";\n break;\n case \"1.2.840.10045.4.3.3\":\n case \"1.2.840.113549.1.1.12\":\n result = \"SHA-384\";\n break;\n case \"1.2.840.10045.4.3.4\":\n case \"1.2.840.113549.1.1.13\":\n result = \"SHA-512\";\n break;\n case \"1.2.840.113549.1.1.10\":\n {\n try {\n const params = new RSASSAPSSParams({ schema: signatureAlgorithm.algorithmParams });\n if (params.hashAlgorithm) {\n const algorithm = this.getAlgorithmByOID(params.hashAlgorithm.algorithmId);\n if (\"name\" in algorithm) {\n result = algorithm.name;\n }\n else {\n return EMPTY_STRING;\n }\n }\n else\n result = \"SHA-1\";\n }\n catch {\n }\n }\n break;\n }\n return result;\n }\n async encryptEncryptedContentInfo(parameters) {\n ParameterError.assert(parameters, \"password\", \"contentEncryptionAlgorithm\", \"hmacHashAlgorithm\", \"iterationCount\", \"contentToEncrypt\", \"contentToEncrypt\", \"contentType\");\n const contentEncryptionOID = this.getOIDByAlgorithm(parameters.contentEncryptionAlgorithm, true, \"contentEncryptionAlgorithm\");\n const pbkdf2OID = this.getOIDByAlgorithm({\n name: \"PBKDF2\"\n }, true, \"PBKDF2\");\n const hmacOID = this.getOIDByAlgorithm({\n name: \"HMAC\",\n hash: {\n name: parameters.hmacHashAlgorithm\n }\n }, true, \"hmacHashAlgorithm\");\n const ivBuffer = new ArrayBuffer(16);\n const ivView = new Uint8Array(ivBuffer);\n this.getRandomValues(ivView);\n const saltBuffer = new ArrayBuffer(64);\n const saltView = new Uint8Array(saltBuffer);\n this.getRandomValues(saltView);\n const contentView = new Uint8Array(parameters.contentToEncrypt);\n const pbkdf2Params = new PBKDF2Params({\n salt: new asn1js.OctetString({ valueHex: saltBuffer }),\n iterationCount: parameters.iterationCount,\n prf: new AlgorithmIdentifier({\n algorithmId: hmacOID,\n algorithmParams: new asn1js.Null()\n })\n });\n const passwordView = new Uint8Array(parameters.password);\n const pbkdfKey = await this.importKey(\"raw\", passwordView, \"PBKDF2\", false, [\"deriveKey\"]);\n const derivedKey = await this.deriveKey({\n name: \"PBKDF2\",\n hash: {\n name: parameters.hmacHashAlgorithm\n },\n salt: saltView,\n iterations: parameters.iterationCount\n }, pbkdfKey, parameters.contentEncryptionAlgorithm, false, [\"encrypt\"]);\n const encryptedData = await this.encrypt({\n name: parameters.contentEncryptionAlgorithm.name,\n iv: ivView\n }, derivedKey, contentView);\n const pbes2Parameters = new PBES2Params({\n keyDerivationFunc: new AlgorithmIdentifier({\n algorithmId: pbkdf2OID,\n algorithmParams: pbkdf2Params.toSchema()\n }),\n encryptionScheme: new AlgorithmIdentifier({\n algorithmId: contentEncryptionOID,\n algorithmParams: new asn1js.OctetString({ valueHex: ivBuffer })\n })\n });\n return new EncryptedContentInfo({\n contentType: parameters.contentType,\n contentEncryptionAlgorithm: new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.5.13\",\n algorithmParams: pbes2Parameters.toSchema()\n }),\n encryptedContent: new asn1js.OctetString({ valueHex: encryptedData })\n });\n }\n async decryptEncryptedContentInfo(parameters) {\n ParameterError.assert(parameters, \"password\", \"encryptedContentInfo\");\n if (parameters.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId !== \"1.2.840.113549.1.5.13\")\n throw new Error(`Unknown \"contentEncryptionAlgorithm\": ${parameters.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId}`);\n let pbes2Parameters;\n try {\n pbes2Parameters = new PBES2Params({ schema: parameters.encryptedContentInfo.contentEncryptionAlgorithm.algorithmParams });\n }\n catch (ex) {\n throw new Error(\"Incorrectly encoded \\\"pbes2Parameters\\\"\");\n }\n let pbkdf2Params;\n try {\n pbkdf2Params = new PBKDF2Params({ schema: pbes2Parameters.keyDerivationFunc.algorithmParams });\n }\n catch (ex) {\n throw new Error(\"Incorrectly encoded \\\"pbkdf2Params\\\"\");\n }\n const contentEncryptionAlgorithm = this.getAlgorithmByOID(pbes2Parameters.encryptionScheme.algorithmId, true);\n const ivBuffer = pbes2Parameters.encryptionScheme.algorithmParams.valueBlock.valueHex;\n const ivView = new Uint8Array(ivBuffer);\n const saltBuffer = pbkdf2Params.salt.valueBlock.valueHex;\n const saltView = new Uint8Array(saltBuffer);\n const iterationCount = pbkdf2Params.iterationCount;\n let hmacHashAlgorithm = \"SHA-1\";\n if (pbkdf2Params.prf) {\n const algorithm = this.getAlgorithmByOID(pbkdf2Params.prf.algorithmId, true);\n hmacHashAlgorithm = algorithm.hash.name;\n }\n const pbkdfKey = await this.importKey(\"raw\", parameters.password, \"PBKDF2\", false, [\"deriveKey\"]);\n const result = await this.deriveKey({\n name: \"PBKDF2\",\n hash: {\n name: hmacHashAlgorithm\n },\n salt: saltView,\n iterations: iterationCount\n }, pbkdfKey, contentEncryptionAlgorithm, false, [\"decrypt\"]);\n const dataBuffer = parameters.encryptedContentInfo.getEncryptedContent();\n return this.decrypt({\n name: contentEncryptionAlgorithm.name,\n iv: ivView\n }, result, dataBuffer);\n }\n async stampDataWithPassword(parameters) {\n if ((parameters instanceof Object) === false)\n throw new Error(\"Parameters must have type \\\"Object\\\"\");\n ParameterError.assert(parameters, \"password\", \"hashAlgorithm\", \"iterationCount\", \"salt\", \"contentToStamp\");\n let length;\n switch (parameters.hashAlgorithm.toLowerCase()) {\n case \"sha-1\":\n length = 160;\n break;\n case \"sha-256\":\n length = 256;\n break;\n case \"sha-384\":\n length = 384;\n break;\n case \"sha-512\":\n length = 512;\n break;\n default:\n throw new Error(`Incorrect \"parameters.hashAlgorithm\" parameter: ${parameters.hashAlgorithm}`);\n }\n const hmacAlgorithm = {\n name: \"HMAC\",\n length,\n hash: {\n name: parameters.hashAlgorithm\n }\n };\n const pkcsKey = await makePKCS12B2Key(parameters.hashAlgorithm, length, parameters.password, parameters.salt, parameters.iterationCount);\n const hmacKey = await this.importKey(\"raw\", new Uint8Array(pkcsKey), hmacAlgorithm, false, [\"sign\"]);\n return this.sign(hmacAlgorithm, hmacKey, new Uint8Array(parameters.contentToStamp));\n }\n async verifyDataStampedWithPassword(parameters) {\n ParameterError.assert(parameters, \"password\", \"hashAlgorithm\", \"salt\", \"iterationCount\", \"contentToVerify\", \"signatureToVerify\");\n let length = 0;\n switch (parameters.hashAlgorithm.toLowerCase()) {\n case \"sha-1\":\n length = 160;\n break;\n case \"sha-256\":\n length = 256;\n break;\n case \"sha-384\":\n length = 384;\n break;\n case \"sha-512\":\n length = 512;\n break;\n default:\n throw new Error(`Incorrect \"parameters.hashAlgorithm\" parameter: ${parameters.hashAlgorithm}`);\n }\n const hmacAlgorithm = {\n name: \"HMAC\",\n length,\n hash: {\n name: parameters.hashAlgorithm\n }\n };\n const pkcsKey = await makePKCS12B2Key(parameters.hashAlgorithm, length, parameters.password, parameters.salt, parameters.iterationCount);\n const hmacKey = await this.importKey(\"raw\", new Uint8Array(pkcsKey), hmacAlgorithm, false, [\"verify\"]);\n return this.verify(hmacAlgorithm, hmacKey, new Uint8Array(parameters.signatureToVerify), new Uint8Array(parameters.contentToVerify));\n }\n async getSignatureParameters(privateKey, hashAlgorithm = \"SHA-1\") {\n this.getOIDByAlgorithm({ name: hashAlgorithm }, true, \"hashAlgorithm\");\n const signatureAlgorithm = new AlgorithmIdentifier();\n const parameters = this.getAlgorithmParameters(privateKey.algorithm.name, \"sign\");\n if (!Object.keys(parameters.algorithm).length) {\n throw new Error(\"Parameter 'algorithm' is empty\");\n }\n const algorithm = parameters.algorithm;\n if (\"hash\" in privateKey.algorithm && privateKey.algorithm.hash && privateKey.algorithm.hash.name) {\n algorithm.hash.name = privateKey.algorithm.hash.name;\n }\n else {\n algorithm.hash.name = hashAlgorithm;\n }\n switch (privateKey.algorithm.name.toUpperCase()) {\n case \"RSASSA-PKCS1-V1_5\":\n case \"ECDSA\":\n signatureAlgorithm.algorithmId = this.getOIDByAlgorithm(algorithm, true);\n break;\n case \"RSA-PSS\":\n {\n switch (algorithm.hash.name.toUpperCase()) {\n case \"SHA-256\":\n algorithm.saltLength = 32;\n break;\n case \"SHA-384\":\n algorithm.saltLength = 48;\n break;\n case \"SHA-512\":\n algorithm.saltLength = 64;\n break;\n }\n const paramsObject = {};\n if (algorithm.hash.name.toUpperCase() !== \"SHA-1\") {\n const hashAlgorithmOID = this.getOIDByAlgorithm({ name: algorithm.hash.name }, true, \"hashAlgorithm\");\n paramsObject.hashAlgorithm = new AlgorithmIdentifier({\n algorithmId: hashAlgorithmOID,\n algorithmParams: new asn1js.Null()\n });\n paramsObject.maskGenAlgorithm = new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.1.8\",\n algorithmParams: paramsObject.hashAlgorithm.toSchema()\n });\n }\n if (algorithm.saltLength !== 20)\n paramsObject.saltLength = algorithm.saltLength;\n const pssParameters = new RSASSAPSSParams(paramsObject);\n signatureAlgorithm.algorithmId = \"1.2.840.113549.1.1.10\";\n signatureAlgorithm.algorithmParams = pssParameters.toSchema();\n }\n break;\n default:\n throw new Error(`Unsupported signature algorithm: ${privateKey.algorithm.name}`);\n }\n return {\n signatureAlgorithm,\n parameters\n };\n }\n async signWithPrivateKey(data, privateKey, parameters) {\n const signature = await this.sign(parameters.algorithm, privateKey, data);\n if (parameters.algorithm.name === \"ECDSA\") {\n return createCMSECDSASignature(signature);\n }\n return signature;\n }\n fillPublicKeyParameters(publicKeyInfo, signatureAlgorithm) {\n const parameters = {};\n const shaAlgorithm = this.getHashAlgorithm(signatureAlgorithm);\n if (shaAlgorithm === EMPTY_STRING)\n throw new Error(`Unsupported signature algorithm: ${signatureAlgorithm.algorithmId}`);\n let algorithmId;\n if (signatureAlgorithm.algorithmId === \"1.2.840.113549.1.1.10\")\n algorithmId = signatureAlgorithm.algorithmId;\n else\n algorithmId = publicKeyInfo.algorithm.algorithmId;\n const algorithmObject = this.getAlgorithmByOID(algorithmId, true);\n parameters.algorithm = this.getAlgorithmParameters(algorithmObject.name, \"importKey\");\n if (\"hash\" in parameters.algorithm.algorithm)\n parameters.algorithm.algorithm.hash.name = shaAlgorithm;\n if (algorithmObject.name === \"ECDSA\") {\n const publicKeyAlgorithm = publicKeyInfo.algorithm;\n if (!publicKeyAlgorithm.algorithmParams) {\n throw new Error(\"Algorithm parameters for ECDSA public key are missed\");\n }\n const publicKeyAlgorithmParams = publicKeyAlgorithm.algorithmParams;\n if (\"idBlock\" in publicKeyAlgorithm.algorithmParams) {\n if (!((publicKeyAlgorithmParams.idBlock.tagClass === 1) && (publicKeyAlgorithmParams.idBlock.tagNumber === 6))) {\n throw new Error(\"Incorrect type for ECDSA public key parameters\");\n }\n }\n const curveObject = this.getAlgorithmByOID(publicKeyAlgorithmParams.valueBlock.toString(), true);\n parameters.algorithm.algorithm.namedCurve = curveObject.name;\n }\n return parameters;\n }\n async getPublicKey(publicKeyInfo, signatureAlgorithm, parameters) {\n if (!parameters) {\n parameters = this.fillPublicKeyParameters(publicKeyInfo, signatureAlgorithm);\n }\n const publicKeyInfoBuffer = publicKeyInfo.toSchema().toBER(false);\n return this.importKey(\"spki\", publicKeyInfoBuffer, parameters.algorithm.algorithm, true, parameters.algorithm.usages);\n }\n async verifyWithPublicKey(data, signature, publicKeyInfo, signatureAlgorithm, shaAlgorithm) {\n let publicKey;\n if (!shaAlgorithm) {\n shaAlgorithm = this.getHashAlgorithm(signatureAlgorithm);\n if (!shaAlgorithm)\n throw new Error(`Unsupported signature algorithm: ${signatureAlgorithm.algorithmId}`);\n publicKey = await this.getPublicKey(publicKeyInfo, signatureAlgorithm);\n }\n else {\n const parameters = {};\n let algorithmId;\n if (signatureAlgorithm.algorithmId === \"1.2.840.113549.1.1.10\")\n algorithmId = signatureAlgorithm.algorithmId;\n else\n algorithmId = publicKeyInfo.algorithm.algorithmId;\n const algorithmObject = this.getAlgorithmByOID(algorithmId, true);\n parameters.algorithm = this.getAlgorithmParameters(algorithmObject.name, \"importKey\");\n if (\"hash\" in parameters.algorithm.algorithm)\n parameters.algorithm.algorithm.hash.name = shaAlgorithm;\n if (algorithmObject.name === \"ECDSA\") {\n let algorithmParamsChecked = false;\n if ((\"algorithmParams\" in publicKeyInfo.algorithm) === true) {\n if (\"idBlock\" in publicKeyInfo.algorithm.algorithmParams) {\n if ((publicKeyInfo.algorithm.algorithmParams.idBlock.tagClass === 1) && (publicKeyInfo.algorithm.algorithmParams.idBlock.tagNumber === 6))\n algorithmParamsChecked = true;\n }\n }\n if (algorithmParamsChecked === false) {\n throw new Error(\"Incorrect type for ECDSA public key parameters\");\n }\n const curveObject = this.getAlgorithmByOID(publicKeyInfo.algorithm.algorithmParams.valueBlock.toString(), true);\n parameters.algorithm.algorithm.namedCurve = curveObject.name;\n }\n publicKey = await this.getPublicKey(publicKeyInfo, null, parameters);\n }\n const algorithm = this.getAlgorithmParameters(publicKey.algorithm.name, \"verify\");\n if (\"hash\" in algorithm.algorithm)\n algorithm.algorithm.hash.name = shaAlgorithm;\n let signatureValue = signature.valueBlock.valueHexView;\n if (publicKey.algorithm.name === \"ECDSA\") {\n const namedCurve = ECNamedCurves.find(publicKey.algorithm.namedCurve);\n if (!namedCurve) {\n throw new Error(\"Unsupported named curve in use\");\n }\n const asn1 = asn1js.fromBER(signatureValue);\n AsnError.assert(asn1, \"Signature value\");\n signatureValue = createECDSASignatureFromCMS(asn1.result, namedCurve.size);\n }\n if (publicKey.algorithm.name === \"RSA-PSS\") {\n const pssParameters = new RSASSAPSSParams({ schema: signatureAlgorithm.algorithmParams });\n if (\"saltLength\" in pssParameters)\n algorithm.algorithm.saltLength = pssParameters.saltLength;\n else\n algorithm.algorithm.saltLength = 20;\n let hashAlgo = \"SHA-1\";\n if (\"hashAlgorithm\" in pssParameters) {\n const hashAlgorithm = this.getAlgorithmByOID(pssParameters.hashAlgorithm.algorithmId, true);\n hashAlgo = hashAlgorithm.name;\n }\n algorithm.algorithm.hash.name = hashAlgo;\n }\n return this.verify(algorithm.algorithm, publicKey, signatureValue, data);\n }\n}\n\nlet engine = {\n name: \"none\",\n crypto: null,\n};\nfunction isCryptoEngine(engine) {\n return engine\n && typeof engine === \"object\"\n && \"crypto\" in engine\n ? true\n : false;\n}\nfunction setEngine(name, ...args) {\n let crypto = null;\n if (args.length < 2) {\n if (args.length) {\n crypto = args[0];\n }\n else {\n crypto = typeof self !== \"undefined\" && self.crypto ? new CryptoEngine({ name: \"browser\", crypto: self.crypto }) : null;\n }\n }\n else {\n const cryptoArg = args[0];\n const subtleArg = args[1];\n if (isCryptoEngine(subtleArg)) {\n crypto = subtleArg;\n }\n else if (isCryptoEngine(cryptoArg)) {\n crypto = cryptoArg;\n }\n else if (\"subtle\" in cryptoArg && \"getRandomValues\" in cryptoArg) {\n crypto = new CryptoEngine({\n crypto: cryptoArg,\n });\n }\n }\n if ((typeof process !== \"undefined\") && (\"pid\" in process) && (typeof global !== \"undefined\") && (typeof window === \"undefined\")) {\n if (typeof global[process.pid] === \"undefined\") {\n global[process.pid] = {};\n }\n else {\n if (typeof global[process.pid] !== \"object\") {\n throw new Error(`Name global.${process.pid} already exists and it is not an object`);\n }\n }\n if (typeof global[process.pid].pkijs === \"undefined\") {\n global[process.pid].pkijs = {};\n }\n else {\n if (typeof global[process.pid].pkijs !== \"object\") {\n throw new Error(`Name global.${process.pid}.pkijs already exists and it is not an object`);\n }\n }\n global[process.pid].pkijs.engine = {\n name: name,\n crypto,\n };\n }\n else {\n engine = {\n name: name,\n crypto,\n };\n }\n}\nfunction getEngine() {\n if ((typeof process !== \"undefined\") && (\"pid\" in process) && (typeof global !== \"undefined\") && (typeof window === \"undefined\")) {\n let _engine;\n try {\n _engine = global[process.pid].pkijs.engine;\n }\n catch (ex) {\n throw new Error(\"Please call 'setEngine' before call to 'getEngine'\");\n }\n return _engine;\n }\n return engine;\n}\nfunction getCrypto(safety = false) {\n const _engine = getEngine();\n if (!_engine.crypto && safety) {\n throw new Error(\"Unable to create WebCrypto object\");\n }\n return _engine.crypto;\n}\nfunction getRandomValues(view) {\n return getCrypto(true).getRandomValues(view);\n}\nfunction getOIDByAlgorithm(algorithm, safety, target) {\n return getCrypto(true).getOIDByAlgorithm(algorithm, safety, target);\n}\nfunction getAlgorithmParameters(algorithmName, operation) {\n return getCrypto(true).getAlgorithmParameters(algorithmName, operation);\n}\nfunction createCMSECDSASignature(signatureBuffer) {\n if ((signatureBuffer.byteLength % 2) !== 0)\n return EMPTY_BUFFER;\n const length = signatureBuffer.byteLength / 2;\n const rBuffer = new ArrayBuffer(length);\n const rView = new Uint8Array(rBuffer);\n rView.set(new Uint8Array(signatureBuffer, 0, length));\n const rInteger = new asn1js.Integer({ valueHex: rBuffer });\n const sBuffer = new ArrayBuffer(length);\n const sView = new Uint8Array(sBuffer);\n sView.set(new Uint8Array(signatureBuffer, length, length));\n const sInteger = new asn1js.Integer({ valueHex: sBuffer });\n return (new asn1js.Sequence({\n value: [\n rInteger.convertToDER(),\n sInteger.convertToDER()\n ]\n })).toBER(false);\n}\nfunction createECDSASignatureFromCMS(cmsSignature, pointSize) {\n if (!(cmsSignature instanceof asn1js.Sequence\n && cmsSignature.valueBlock.value.length === 2\n && cmsSignature.valueBlock.value[0] instanceof asn1js.Integer\n && cmsSignature.valueBlock.value[1] instanceof asn1js.Integer))\n return EMPTY_BUFFER;\n const rValueView = cmsSignature.valueBlock.value[0].convertFromDER().valueBlock.valueHexView;\n const sValueView = cmsSignature.valueBlock.value[1].convertFromDER().valueBlock.valueHexView;\n const res = new Uint8Array(pointSize * 2);\n res.set(rValueView, pointSize - rValueView.byteLength);\n res.set(sValueView, (2 * pointSize) - sValueView.byteLength);\n return res.buffer;\n}\nfunction getAlgorithmByOID(oid, safety = false, target) {\n return getCrypto(true).getAlgorithmByOID(oid, safety, target);\n}\nfunction getHashAlgorithm(signatureAlgorithm) {\n return getCrypto(true).getHashAlgorithm(signatureAlgorithm);\n}\nasync function kdfWithCounter(hashFunction, zBuffer, Counter, SharedInfo, crypto) {\n switch (hashFunction.toUpperCase()) {\n case \"SHA-1\":\n case \"SHA-256\":\n case \"SHA-384\":\n case \"SHA-512\":\n break;\n default:\n throw new ArgumentError(`Unknown hash function: ${hashFunction}`);\n }\n ArgumentError.assert(zBuffer, \"zBuffer\", \"ArrayBuffer\");\n if (zBuffer.byteLength === 0)\n throw new ArgumentError(\"'zBuffer' has zero length, error\");\n ArgumentError.assert(SharedInfo, \"SharedInfo\", \"ArrayBuffer\");\n if (Counter > 255)\n throw new ArgumentError(\"Please set 'Counter' argument to value less or equal to 255\");\n const counterBuffer = new ArrayBuffer(4);\n const counterView = new Uint8Array(counterBuffer);\n counterView[0] = 0x00;\n counterView[1] = 0x00;\n counterView[2] = 0x00;\n counterView[3] = Counter;\n let combinedBuffer = EMPTY_BUFFER;\n combinedBuffer = pvutils.utilConcatBuf(combinedBuffer, zBuffer);\n combinedBuffer = pvutils.utilConcatBuf(combinedBuffer, counterBuffer);\n combinedBuffer = pvutils.utilConcatBuf(combinedBuffer, SharedInfo);\n const result = await crypto.digest({ name: hashFunction }, combinedBuffer);\n return {\n counter: Counter,\n result\n };\n}\nasync function kdf(hashFunction, Zbuffer, keydatalen, SharedInfo, crypto = getCrypto(true)) {\n let hashLength = 0;\n let maxCounter = 1;\n switch (hashFunction.toUpperCase()) {\n case \"SHA-1\":\n hashLength = 160;\n break;\n case \"SHA-256\":\n hashLength = 256;\n break;\n case \"SHA-384\":\n hashLength = 384;\n break;\n case \"SHA-512\":\n hashLength = 512;\n break;\n default:\n throw new ArgumentError(`Unknown hash function: ${hashFunction}`);\n }\n ArgumentError.assert(Zbuffer, \"Zbuffer\", \"ArrayBuffer\");\n if (Zbuffer.byteLength === 0)\n throw new ArgumentError(\"'Zbuffer' has zero length, error\");\n ArgumentError.assert(SharedInfo, \"SharedInfo\", \"ArrayBuffer\");\n const quotient = keydatalen / hashLength;\n if (Math.floor(quotient) > 0) {\n maxCounter = Math.floor(quotient);\n if ((quotient - maxCounter) > 0)\n maxCounter++;\n }\n const incomingResult = [];\n for (let i = 1; i <= maxCounter; i++)\n incomingResult.push(await kdfWithCounter(hashFunction, Zbuffer, i, SharedInfo, crypto));\n let combinedBuffer = EMPTY_BUFFER;\n let currentCounter = 1;\n let found = true;\n while (found) {\n found = false;\n for (const result of incomingResult) {\n if (result.counter === currentCounter) {\n combinedBuffer = pvutils.utilConcatBuf(combinedBuffer, result.result);\n found = true;\n break;\n }\n }\n currentCounter++;\n }\n keydatalen >>= 3;\n if (combinedBuffer.byteLength > keydatalen) {\n const newBuffer = new ArrayBuffer(keydatalen);\n const newView = new Uint8Array(newBuffer);\n const combinedView = new Uint8Array(combinedBuffer);\n for (let i = 0; i < keydatalen; i++)\n newView[i] = combinedView[i];\n return newBuffer;\n }\n return combinedBuffer;\n}\n\nconst VERSION$i = \"version\";\nconst LOG_ID = \"logID\";\nconst EXTENSIONS$6 = \"extensions\";\nconst TIMESTAMP = \"timestamp\";\nconst HASH_ALGORITHM$3 = \"hashAlgorithm\";\nconst SIGNATURE_ALGORITHM$8 = \"signatureAlgorithm\";\nconst SIGNATURE$7 = \"signature\";\nconst NONE = \"none\";\nconst MD5 = \"md5\";\nconst SHA1 = \"sha1\";\nconst SHA224 = \"sha224\";\nconst SHA256 = \"sha256\";\nconst SHA384 = \"sha384\";\nconst SHA512 = \"sha512\";\nconst ANONYMOUS = \"anonymous\";\nconst RSA = \"rsa\";\nconst DSA = \"dsa\";\nconst ECDSA = \"ecdsa\";\nclass SignedCertificateTimestamp extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$i, SignedCertificateTimestamp.defaultValues(VERSION$i));\n this.logID = pvutils.getParametersValue(parameters, LOG_ID, SignedCertificateTimestamp.defaultValues(LOG_ID));\n this.timestamp = pvutils.getParametersValue(parameters, TIMESTAMP, SignedCertificateTimestamp.defaultValues(TIMESTAMP));\n this.extensions = pvutils.getParametersValue(parameters, EXTENSIONS$6, SignedCertificateTimestamp.defaultValues(EXTENSIONS$6));\n this.hashAlgorithm = pvutils.getParametersValue(parameters, HASH_ALGORITHM$3, SignedCertificateTimestamp.defaultValues(HASH_ALGORITHM$3));\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$8, SignedCertificateTimestamp.defaultValues(SIGNATURE_ALGORITHM$8));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE$7, SignedCertificateTimestamp.defaultValues(SIGNATURE$7));\n if (\"stream\" in parameters && parameters.stream) {\n this.fromStream(parameters.stream);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$i:\n return 0;\n case LOG_ID:\n case EXTENSIONS$6:\n return EMPTY_BUFFER;\n case TIMESTAMP:\n return new Date(0);\n case HASH_ALGORITHM$3:\n case SIGNATURE_ALGORITHM$8:\n return EMPTY_STRING;\n case SIGNATURE$7:\n return new asn1js.Any();\n default:\n return super.defaultValues(memberName);\n }\n }\n fromSchema(schema) {\n if ((schema instanceof asn1js.RawData) === false)\n throw new Error(\"Object's schema was not verified against input data for SignedCertificateTimestamp\");\n const seqStream = new bs.SeqStream({\n stream: new bs.ByteStream({\n buffer: schema.data\n })\n });\n this.fromStream(seqStream);\n }\n fromStream(stream) {\n const blockLength = stream.getUint16();\n this.version = (stream.getBlock(1))[0];\n if (this.version === 0) {\n this.logID = (new Uint8Array(stream.getBlock(32))).buffer.slice(0);\n this.timestamp = new Date(pvutils.utilFromBase(new Uint8Array(stream.getBlock(8)), 8));\n const extensionsLength = stream.getUint16();\n this.extensions = (new Uint8Array(stream.getBlock(extensionsLength))).buffer.slice(0);\n switch ((stream.getBlock(1))[0]) {\n case 0:\n this.hashAlgorithm = NONE;\n break;\n case 1:\n this.hashAlgorithm = MD5;\n break;\n case 2:\n this.hashAlgorithm = SHA1;\n break;\n case 3:\n this.hashAlgorithm = SHA224;\n break;\n case 4:\n this.hashAlgorithm = SHA256;\n break;\n case 5:\n this.hashAlgorithm = SHA384;\n break;\n case 6:\n this.hashAlgorithm = SHA512;\n break;\n default:\n throw new Error(\"Object's stream was not correct for SignedCertificateTimestamp\");\n }\n switch ((stream.getBlock(1))[0]) {\n case 0:\n this.signatureAlgorithm = ANONYMOUS;\n break;\n case 1:\n this.signatureAlgorithm = RSA;\n break;\n case 2:\n this.signatureAlgorithm = DSA;\n break;\n case 3:\n this.signatureAlgorithm = ECDSA;\n break;\n default:\n throw new Error(\"Object's stream was not correct for SignedCertificateTimestamp\");\n }\n const signatureLength = stream.getUint16();\n const signatureData = new Uint8Array(stream.getBlock(signatureLength)).buffer.slice(0);\n const asn1 = asn1js.fromBER(signatureData);\n AsnError.assert(asn1, \"SignedCertificateTimestamp\");\n this.signature = asn1.result;\n if (blockLength !== (47 + extensionsLength + signatureLength)) {\n throw new Error(\"Object's stream was not correct for SignedCertificateTimestamp\");\n }\n }\n }\n toSchema() {\n const stream = this.toStream();\n return new asn1js.RawData({ data: stream.stream.buffer });\n }\n toStream() {\n const stream = new bs.SeqStream();\n stream.appendUint16(47 + this.extensions.byteLength + this.signature.valueBeforeDecodeView.byteLength);\n stream.appendChar(this.version);\n stream.appendView(new Uint8Array(this.logID));\n const timeBuffer = new ArrayBuffer(8);\n const timeView = new Uint8Array(timeBuffer);\n const baseArray = pvutils.utilToBase(this.timestamp.valueOf(), 8);\n timeView.set(new Uint8Array(baseArray), 8 - baseArray.byteLength);\n stream.appendView(timeView);\n stream.appendUint16(this.extensions.byteLength);\n if (this.extensions.byteLength)\n stream.appendView(new Uint8Array(this.extensions));\n let _hashAlgorithm;\n switch (this.hashAlgorithm.toLowerCase()) {\n case NONE:\n _hashAlgorithm = 0;\n break;\n case MD5:\n _hashAlgorithm = 1;\n break;\n case SHA1:\n _hashAlgorithm = 2;\n break;\n case SHA224:\n _hashAlgorithm = 3;\n break;\n case SHA256:\n _hashAlgorithm = 4;\n break;\n case SHA384:\n _hashAlgorithm = 5;\n break;\n case SHA512:\n _hashAlgorithm = 6;\n break;\n default:\n throw new Error(`Incorrect data for hashAlgorithm: ${this.hashAlgorithm}`);\n }\n stream.appendChar(_hashAlgorithm);\n let _signatureAlgorithm;\n switch (this.signatureAlgorithm.toLowerCase()) {\n case ANONYMOUS:\n _signatureAlgorithm = 0;\n break;\n case RSA:\n _signatureAlgorithm = 1;\n break;\n case DSA:\n _signatureAlgorithm = 2;\n break;\n case ECDSA:\n _signatureAlgorithm = 3;\n break;\n default:\n throw new Error(`Incorrect data for signatureAlgorithm: ${this.signatureAlgorithm}`);\n }\n stream.appendChar(_signatureAlgorithm);\n const _signature = this.signature.toBER(false);\n stream.appendUint16(_signature.byteLength);\n stream.appendView(new Uint8Array(_signature));\n return stream;\n }\n toJSON() {\n return {\n version: this.version,\n logID: pvutils.bufferToHexCodes(this.logID),\n timestamp: this.timestamp,\n extensions: pvutils.bufferToHexCodes(this.extensions),\n hashAlgorithm: this.hashAlgorithm,\n signatureAlgorithm: this.signatureAlgorithm,\n signature: this.signature.toJSON()\n };\n }\n async verify(logs, data, dataType = 0, crypto = getCrypto(true)) {\n const logId = pvutils.toBase64(pvutils.arrayBufferToString(this.logID));\n let publicKeyBase64 = null;\n const stream = new bs.SeqStream();\n for (const log of logs) {\n if (log.log_id === logId) {\n publicKeyBase64 = log.key;\n break;\n }\n }\n if (!publicKeyBase64) {\n throw new Error(`Public key not found for CT with logId: ${logId}`);\n }\n const pki = pvutils.stringToArrayBuffer(pvutils.fromBase64(publicKeyBase64));\n const publicKeyInfo = PublicKeyInfo.fromBER(pki);\n stream.appendChar(0x00);\n stream.appendChar(0x00);\n const timeBuffer = new ArrayBuffer(8);\n const timeView = new Uint8Array(timeBuffer);\n const baseArray = pvutils.utilToBase(this.timestamp.valueOf(), 8);\n timeView.set(new Uint8Array(baseArray), 8 - baseArray.byteLength);\n stream.appendView(timeView);\n stream.appendUint16(dataType);\n if (dataType === 0)\n stream.appendUint24(data.byteLength);\n stream.appendView(new Uint8Array(data));\n stream.appendUint16(this.extensions.byteLength);\n if (this.extensions.byteLength !== 0)\n stream.appendView(new Uint8Array(this.extensions));\n return crypto.verifyWithPublicKey(stream.buffer.slice(0, stream.length), new asn1js.OctetString({ valueHex: this.signature.toBER(false) }), publicKeyInfo, { algorithmId: EMPTY_STRING }, \"SHA-256\");\n }\n}\nSignedCertificateTimestamp.CLASS_NAME = \"SignedCertificateTimestamp\";\nasync function verifySCTsForCertificate(certificate, issuerCertificate, logs, index = (-1), crypto = getCrypto(true)) {\n let parsedValue = null;\n const stream = new bs.SeqStream();\n if (certificate.extensions) {\n for (let i = certificate.extensions.length - 1; i >= 0; i--) {\n switch (certificate.extensions[i].extnID) {\n case id_SignedCertificateTimestampList:\n {\n parsedValue = certificate.extensions[i].parsedValue;\n if (!parsedValue || parsedValue.timestamps.length === 0)\n throw new Error(\"Nothing to verify in the certificate\");\n certificate.extensions.splice(i, 1);\n }\n break;\n }\n }\n }\n if (parsedValue === null)\n throw new Error(\"No SignedCertificateTimestampList extension in the specified certificate\");\n const tbs = certificate.encodeTBS().toBER();\n const issuerId = await crypto.digest({ name: \"SHA-256\" }, new Uint8Array(issuerCertificate.subjectPublicKeyInfo.toSchema().toBER(false)));\n stream.appendView(new Uint8Array(issuerId));\n stream.appendUint24(tbs.byteLength);\n stream.appendView(new Uint8Array(tbs));\n const preCert = stream.stream.slice(0, stream.length);\n if (index === (-1)) {\n const verifyArray = [];\n for (const timestamp of parsedValue.timestamps) {\n const verifyResult = await timestamp.verify(logs, preCert.buffer, 1, crypto);\n verifyArray.push(verifyResult);\n }\n return verifyArray;\n }\n if (index >= parsedValue.timestamps.length)\n index = (parsedValue.timestamps.length - 1);\n return [await parsedValue.timestamps[index].verify(logs, preCert.buffer, 1, crypto)];\n}\n\nconst TIMESTAMPS = \"timestamps\";\nclass SignedCertificateTimestampList extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.timestamps = pvutils.getParametersValue(parameters, TIMESTAMPS, SignedCertificateTimestampList.defaultValues(TIMESTAMPS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TIMESTAMPS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TIMESTAMPS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n var _a;\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n (_a = names.optional) !== null && _a !== void 0 ? _a : (names.optional = false);\n return (new asn1js.OctetString({\n name: (names.blockName || \"SignedCertificateTimestampList\"),\n optional: names.optional\n }));\n }\n fromSchema(schema) {\n if ((schema instanceof asn1js.OctetString) === false) {\n throw new Error(\"Object's schema was not verified against input data for SignedCertificateTimestampList\");\n }\n const seqStream = new bs.SeqStream({\n stream: new bs.ByteStream({\n buffer: schema.valueBlock.valueHex\n })\n });\n const dataLength = seqStream.getUint16();\n if (dataLength !== seqStream.length) {\n throw new Error(\"Object's schema was not verified against input data for SignedCertificateTimestampList\");\n }\n while (seqStream.length) {\n this.timestamps.push(new SignedCertificateTimestamp({ stream: seqStream }));\n }\n }\n toSchema() {\n const stream = new bs.SeqStream();\n let overallLength = 0;\n const timestampsData = [];\n for (const timestamp of this.timestamps) {\n const timestampStream = timestamp.toStream();\n timestampsData.push(timestampStream);\n overallLength += timestampStream.stream.buffer.byteLength;\n }\n stream.appendUint16(overallLength);\n for (const timestamp of timestampsData) {\n stream.appendView(timestamp.stream.view);\n }\n return new asn1js.OctetString({ valueHex: stream.stream.buffer.slice(0) });\n }\n toJSON() {\n return {\n timestamps: Array.from(this.timestamps, o => o.toJSON())\n };\n }\n}\nSignedCertificateTimestampList.CLASS_NAME = \"SignedCertificateTimestampList\";\n\nconst ATTRIBUTES$4 = \"attributes\";\nconst CLEAR_PROPS$11 = [\n ATTRIBUTES$4\n];\nclass SubjectDirectoryAttributes extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.attributes = pvutils.getParametersValue(parameters, ATTRIBUTES$4, SubjectDirectoryAttributes.defaultValues(ATTRIBUTES$4));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ATTRIBUTES$4:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.attributes || EMPTY_STRING),\n value: Attribute.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$11);\n const asn1 = asn1js.compareSchema(schema, schema, SubjectDirectoryAttributes.schema({\n names: {\n attributes: ATTRIBUTES$4\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.attributes = Array.from(asn1.result.attributes, element => new Attribute({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.attributes, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n attributes: Array.from(this.attributes, o => o.toJSON())\n };\n }\n}\nSubjectDirectoryAttributes.CLASS_NAME = \"SubjectDirectoryAttributes\";\n\nclass ExtensionValueFactory {\n static getItems() {\n if (!this.types) {\n this.types = {};\n ExtensionValueFactory.register(id_SubjectAltName, \"SubjectAltName\", AltName);\n ExtensionValueFactory.register(id_IssuerAltName, \"IssuerAltName\", AltName);\n ExtensionValueFactory.register(id_AuthorityKeyIdentifier, \"AuthorityKeyIdentifier\", AuthorityKeyIdentifier);\n ExtensionValueFactory.register(id_BasicConstraints, \"BasicConstraints\", BasicConstraints);\n ExtensionValueFactory.register(id_MicrosoftCaVersion, \"MicrosoftCaVersion\", CAVersion);\n ExtensionValueFactory.register(id_CertificatePolicies, \"CertificatePolicies\", CertificatePolicies);\n ExtensionValueFactory.register(id_MicrosoftAppPolicies, \"CertificatePoliciesMicrosoft\", CertificatePolicies);\n ExtensionValueFactory.register(id_MicrosoftCertTemplateV2, \"MicrosoftCertTemplateV2\", CertificateTemplate);\n ExtensionValueFactory.register(id_CRLDistributionPoints, \"CRLDistributionPoints\", CRLDistributionPoints);\n ExtensionValueFactory.register(id_FreshestCRL, \"FreshestCRL\", CRLDistributionPoints);\n ExtensionValueFactory.register(id_ExtKeyUsage, \"ExtKeyUsage\", ExtKeyUsage);\n ExtensionValueFactory.register(id_CertificateIssuer, \"CertificateIssuer\", GeneralNames);\n ExtensionValueFactory.register(id_AuthorityInfoAccess, \"AuthorityInfoAccess\", InfoAccess);\n ExtensionValueFactory.register(id_SubjectInfoAccess, \"SubjectInfoAccess\", InfoAccess);\n ExtensionValueFactory.register(id_IssuingDistributionPoint, \"IssuingDistributionPoint\", IssuingDistributionPoint);\n ExtensionValueFactory.register(id_NameConstraints, \"NameConstraints\", NameConstraints);\n ExtensionValueFactory.register(id_PolicyConstraints, \"PolicyConstraints\", PolicyConstraints);\n ExtensionValueFactory.register(id_PolicyMappings, \"PolicyMappings\", PolicyMappings);\n ExtensionValueFactory.register(id_PrivateKeyUsagePeriod, \"PrivateKeyUsagePeriod\", PrivateKeyUsagePeriod);\n ExtensionValueFactory.register(id_QCStatements, \"QCStatements\", QCStatements);\n ExtensionValueFactory.register(id_SignedCertificateTimestampList, \"SignedCertificateTimestampList\", SignedCertificateTimestampList);\n ExtensionValueFactory.register(id_SubjectDirectoryAttributes, \"SubjectDirectoryAttributes\", SubjectDirectoryAttributes);\n }\n return this.types;\n }\n static fromBER(id, raw) {\n const asn1 = asn1js.fromBER(raw);\n if (asn1.offset === -1) {\n return null;\n }\n const item = this.find(id);\n if (item) {\n try {\n return new item.type({ schema: asn1.result });\n }\n catch (ex) {\n const res = new item.type();\n res.parsingError = `Incorrectly formatted value of extension ${item.name} (${id})`;\n return res;\n }\n }\n return asn1.result;\n }\n static find(id) {\n const types = this.getItems();\n return types[id] || null;\n }\n static register(id, name, type) {\n this.getItems()[id] = { name, type };\n }\n}\n\nconst EXTN_ID = \"extnID\";\nconst CRITICAL = \"critical\";\nconst EXTN_VALUE = \"extnValue\";\nconst PARSED_VALUE$5 = \"parsedValue\";\nconst CLEAR_PROPS$10 = [\n EXTN_ID,\n CRITICAL,\n EXTN_VALUE\n];\nclass Extension extends PkiObject {\n get parsedValue() {\n if (this._parsedValue === undefined) {\n const parsedValue = ExtensionValueFactory.fromBER(this.extnID, this.extnValue.valueBlock.valueHexView);\n this._parsedValue = parsedValue;\n }\n return this._parsedValue || undefined;\n }\n set parsedValue(value) {\n this._parsedValue = value;\n }\n constructor(parameters = {}) {\n super();\n this.extnID = pvutils.getParametersValue(parameters, EXTN_ID, Extension.defaultValues(EXTN_ID));\n this.critical = pvutils.getParametersValue(parameters, CRITICAL, Extension.defaultValues(CRITICAL));\n if (EXTN_VALUE in parameters) {\n this.extnValue = new asn1js.OctetString({ valueHex: parameters.extnValue });\n }\n else {\n this.extnValue = Extension.defaultValues(EXTN_VALUE);\n }\n if (PARSED_VALUE$5 in parameters) {\n this.parsedValue = pvutils.getParametersValue(parameters, PARSED_VALUE$5, Extension.defaultValues(PARSED_VALUE$5));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case EXTN_ID:\n return EMPTY_STRING;\n case CRITICAL:\n return false;\n case EXTN_VALUE:\n return new asn1js.OctetString();\n case PARSED_VALUE$5:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.extnID || EMPTY_STRING) }),\n new asn1js.Boolean({\n name: (names.critical || EMPTY_STRING),\n optional: true\n }),\n new asn1js.OctetString({ name: (names.extnValue || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$10);\n const asn1 = asn1js.compareSchema(schema, schema, Extension.schema({\n names: {\n extnID: EXTN_ID,\n critical: CRITICAL,\n extnValue: EXTN_VALUE\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.extnID = asn1.result.extnID.valueBlock.toString();\n if (CRITICAL in asn1.result) {\n this.critical = asn1.result.critical.valueBlock.value;\n }\n this.extnValue = asn1.result.extnValue;\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.extnID }));\n if (this.critical !== Extension.defaultValues(CRITICAL)) {\n outputArray.push(new asn1js.Boolean({ value: this.critical }));\n }\n outputArray.push(this.extnValue);\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const object = {\n extnID: this.extnID,\n extnValue: this.extnValue.toJSON(),\n };\n if (this.critical !== Extension.defaultValues(CRITICAL)) {\n object.critical = this.critical;\n }\n if (this.parsedValue && this.parsedValue.toJSON) {\n object.parsedValue = this.parsedValue.toJSON();\n }\n return object;\n }\n}\nExtension.CLASS_NAME = \"Extension\";\n\nconst EXTENSIONS$5 = \"extensions\";\nconst CLEAR_PROPS$$ = [\n EXTENSIONS$5,\n];\nclass Extensions extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.extensions = pvutils.getParametersValue(parameters, EXTENSIONS$5, Extensions.defaultValues(EXTENSIONS$5));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case EXTENSIONS$5:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}, optional = false) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n optional,\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.extensions || EMPTY_STRING),\n value: Extension.schema(names.extension || {})\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$$);\n const asn1 = asn1js.compareSchema(schema, schema, Extensions.schema({\n names: {\n extensions: EXTENSIONS$5\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.extensions = Array.from(asn1.result.extensions, element => new Extension({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.extensions, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n extensions: this.extensions.map(o => o.toJSON())\n };\n }\n}\nExtensions.CLASS_NAME = \"Extensions\";\n\nconst ISSUER$5 = \"issuer\";\nconst SERIAL_NUMBER$6 = \"serialNumber\";\nconst ISSUER_UID = \"issuerUID\";\nconst CLEAR_PROPS$_ = [\n ISSUER$5,\n SERIAL_NUMBER$6,\n ISSUER_UID,\n];\nclass IssuerSerial extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.issuer = pvutils.getParametersValue(parameters, ISSUER$5, IssuerSerial.defaultValues(ISSUER$5));\n this.serialNumber = pvutils.getParametersValue(parameters, SERIAL_NUMBER$6, IssuerSerial.defaultValues(SERIAL_NUMBER$6));\n if (ISSUER_UID in parameters) {\n this.issuerUID = pvutils.getParametersValue(parameters, ISSUER_UID, IssuerSerial.defaultValues(ISSUER_UID));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ISSUER$5:\n return new GeneralNames();\n case SERIAL_NUMBER$6:\n return new asn1js.Integer();\n case ISSUER_UID:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n GeneralNames.schema(names.issuer || {}),\n new asn1js.Integer({ name: (names.serialNumber || EMPTY_STRING) }),\n new asn1js.BitString({\n optional: true,\n name: (names.issuerUID || EMPTY_STRING)\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$_);\n const asn1 = asn1js.compareSchema(schema, schema, IssuerSerial.schema({\n names: {\n issuer: {\n names: {\n blockName: ISSUER$5\n }\n },\n serialNumber: SERIAL_NUMBER$6,\n issuerUID: ISSUER_UID\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.issuer = new GeneralNames({ schema: asn1.result.issuer });\n this.serialNumber = asn1.result.serialNumber;\n if (ISSUER_UID in asn1.result)\n this.issuerUID = asn1.result.issuerUID;\n }\n toSchema() {\n const result = new asn1js.Sequence({\n value: [\n this.issuer.toSchema(),\n this.serialNumber\n ]\n });\n if (this.issuerUID) {\n result.valueBlock.value.push(this.issuerUID);\n }\n return result;\n }\n toJSON() {\n const result = {\n issuer: this.issuer.toJSON(),\n serialNumber: this.serialNumber.toJSON()\n };\n if (this.issuerUID) {\n result.issuerUID = this.issuerUID.toJSON();\n }\n return result;\n }\n}\nIssuerSerial.CLASS_NAME = \"IssuerSerial\";\n\nconst VERSION$h = \"version\";\nconst BASE_CERTIFICATE_ID$2 = \"baseCertificateID\";\nconst SUBJECT_NAME = \"subjectName\";\nconst ISSUER$4 = \"issuer\";\nconst SIGNATURE$6 = \"signature\";\nconst SERIAL_NUMBER$5 = \"serialNumber\";\nconst ATTR_CERT_VALIDITY_PERIOD$1 = \"attrCertValidityPeriod\";\nconst ATTRIBUTES$3 = \"attributes\";\nconst ISSUER_UNIQUE_ID$2 = \"issuerUniqueID\";\nconst EXTENSIONS$4 = \"extensions\";\nconst CLEAR_PROPS$Z = [\n VERSION$h,\n BASE_CERTIFICATE_ID$2,\n SUBJECT_NAME,\n ISSUER$4,\n SIGNATURE$6,\n SERIAL_NUMBER$5,\n ATTR_CERT_VALIDITY_PERIOD$1,\n ATTRIBUTES$3,\n ISSUER_UNIQUE_ID$2,\n EXTENSIONS$4,\n];\nclass AttributeCertificateInfoV1 extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$h, AttributeCertificateInfoV1.defaultValues(VERSION$h));\n if (BASE_CERTIFICATE_ID$2 in parameters) {\n this.baseCertificateID = pvutils.getParametersValue(parameters, BASE_CERTIFICATE_ID$2, AttributeCertificateInfoV1.defaultValues(BASE_CERTIFICATE_ID$2));\n }\n if (SUBJECT_NAME in parameters) {\n this.subjectName = pvutils.getParametersValue(parameters, SUBJECT_NAME, AttributeCertificateInfoV1.defaultValues(SUBJECT_NAME));\n }\n this.issuer = pvutils.getParametersValue(parameters, ISSUER$4, AttributeCertificateInfoV1.defaultValues(ISSUER$4));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE$6, AttributeCertificateInfoV1.defaultValues(SIGNATURE$6));\n this.serialNumber = pvutils.getParametersValue(parameters, SERIAL_NUMBER$5, AttributeCertificateInfoV1.defaultValues(SERIAL_NUMBER$5));\n this.attrCertValidityPeriod = pvutils.getParametersValue(parameters, ATTR_CERT_VALIDITY_PERIOD$1, AttributeCertificateInfoV1.defaultValues(ATTR_CERT_VALIDITY_PERIOD$1));\n this.attributes = pvutils.getParametersValue(parameters, ATTRIBUTES$3, AttributeCertificateInfoV1.defaultValues(ATTRIBUTES$3));\n if (ISSUER_UNIQUE_ID$2 in parameters)\n this.issuerUniqueID = pvutils.getParametersValue(parameters, ISSUER_UNIQUE_ID$2, AttributeCertificateInfoV1.defaultValues(ISSUER_UNIQUE_ID$2));\n if (EXTENSIONS$4 in parameters) {\n this.extensions = pvutils.getParametersValue(parameters, EXTENSIONS$4, AttributeCertificateInfoV1.defaultValues(EXTENSIONS$4));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$h:\n return 0;\n case BASE_CERTIFICATE_ID$2:\n return new IssuerSerial();\n case SUBJECT_NAME:\n return new GeneralNames();\n case ISSUER$4:\n return new GeneralNames();\n case SIGNATURE$6:\n return new AlgorithmIdentifier();\n case SERIAL_NUMBER$5:\n return new asn1js.Integer();\n case ATTR_CERT_VALIDITY_PERIOD$1:\n return new AttCertValidityPeriod();\n case ATTRIBUTES$3:\n return [];\n case ISSUER_UNIQUE_ID$2:\n return new asn1js.BitString();\n case EXTENSIONS$4:\n return new Extensions();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n new asn1js.Choice({\n value: [\n new asn1js.Constructed({\n name: (names.baseCertificateID || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: IssuerSerial.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n name: (names.subjectName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: GeneralNames.schema().valueBlock.value\n }),\n ]\n }),\n GeneralNames.schema({\n names: {\n blockName: (names.issuer || EMPTY_STRING)\n }\n }),\n AlgorithmIdentifier.schema(names.signature || {}),\n new asn1js.Integer({ name: (names.serialNumber || EMPTY_STRING) }),\n AttCertValidityPeriod.schema(names.attrCertValidityPeriod || {}),\n new asn1js.Sequence({\n name: (names.attributes || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n value: Attribute.schema()\n })\n ]\n }),\n new asn1js.BitString({\n optional: true,\n name: (names.issuerUniqueID || EMPTY_STRING)\n }),\n Extensions.schema(names.extensions || {}, true)\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$Z);\n const asn1 = asn1js.compareSchema(schema, schema, AttributeCertificateInfoV1.schema({\n names: {\n version: VERSION$h,\n baseCertificateID: BASE_CERTIFICATE_ID$2,\n subjectName: SUBJECT_NAME,\n issuer: ISSUER$4,\n signature: {\n names: {\n blockName: SIGNATURE$6\n }\n },\n serialNumber: SERIAL_NUMBER$5,\n attrCertValidityPeriod: {\n names: {\n blockName: ATTR_CERT_VALIDITY_PERIOD$1\n }\n },\n attributes: ATTRIBUTES$3,\n issuerUniqueID: ISSUER_UNIQUE_ID$2,\n extensions: {\n names: {\n blockName: EXTENSIONS$4\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n if (BASE_CERTIFICATE_ID$2 in asn1.result) {\n this.baseCertificateID = new IssuerSerial({\n schema: new asn1js.Sequence({\n value: asn1.result.baseCertificateID.valueBlock.value\n })\n });\n }\n if (SUBJECT_NAME in asn1.result) {\n this.subjectName = new GeneralNames({\n schema: new asn1js.Sequence({\n value: asn1.result.subjectName.valueBlock.value\n })\n });\n }\n this.issuer = asn1.result.issuer;\n this.signature = new AlgorithmIdentifier({ schema: asn1.result.signature });\n this.serialNumber = asn1.result.serialNumber;\n this.attrCertValidityPeriod = new AttCertValidityPeriod({ schema: asn1.result.attrCertValidityPeriod });\n this.attributes = Array.from(asn1.result.attributes.valueBlock.value, element => new Attribute({ schema: element }));\n if (ISSUER_UNIQUE_ID$2 in asn1.result) {\n this.issuerUniqueID = asn1.result.issuerUniqueID;\n }\n if (EXTENSIONS$4 in asn1.result) {\n this.extensions = new Extensions({ schema: asn1.result.extensions });\n }\n }\n toSchema() {\n const result = new asn1js.Sequence({\n value: [new asn1js.Integer({ value: this.version })]\n });\n if (this.baseCertificateID) {\n result.valueBlock.value.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.baseCertificateID.toSchema().valueBlock.value\n }));\n }\n if (this.subjectName) {\n result.valueBlock.value.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: this.subjectName.toSchema().valueBlock.value\n }));\n }\n result.valueBlock.value.push(this.issuer.toSchema());\n result.valueBlock.value.push(this.signature.toSchema());\n result.valueBlock.value.push(this.serialNumber);\n result.valueBlock.value.push(this.attrCertValidityPeriod.toSchema());\n result.valueBlock.value.push(new asn1js.Sequence({\n value: Array.from(this.attributes, o => o.toSchema())\n }));\n if (this.issuerUniqueID) {\n result.valueBlock.value.push(this.issuerUniqueID);\n }\n if (this.extensions) {\n result.valueBlock.value.push(this.extensions.toSchema());\n }\n return result;\n }\n toJSON() {\n const result = {\n version: this.version\n };\n if (this.baseCertificateID) {\n result.baseCertificateID = this.baseCertificateID.toJSON();\n }\n if (this.subjectName) {\n result.subjectName = this.subjectName.toJSON();\n }\n result.issuer = this.issuer.toJSON();\n result.signature = this.signature.toJSON();\n result.serialNumber = this.serialNumber.toJSON();\n result.attrCertValidityPeriod = this.attrCertValidityPeriod.toJSON();\n result.attributes = Array.from(this.attributes, o => o.toJSON());\n if (this.issuerUniqueID) {\n result.issuerUniqueID = this.issuerUniqueID.toJSON();\n }\n if (this.extensions) {\n result.extensions = this.extensions.toJSON();\n }\n return result;\n }\n}\nAttributeCertificateInfoV1.CLASS_NAME = \"AttributeCertificateInfoV1\";\n\nconst ACINFO$1 = \"acinfo\";\nconst SIGNATURE_ALGORITHM$7 = \"signatureAlgorithm\";\nconst SIGNATURE_VALUE$4 = \"signatureValue\";\nconst CLEAR_PROPS$Y = [\n ACINFO$1,\n SIGNATURE_VALUE$4,\n SIGNATURE_ALGORITHM$7\n];\nclass AttributeCertificateV1 extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.acinfo = pvutils.getParametersValue(parameters, ACINFO$1, AttributeCertificateV1.defaultValues(ACINFO$1));\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$7, AttributeCertificateV1.defaultValues(SIGNATURE_ALGORITHM$7));\n this.signatureValue = pvutils.getParametersValue(parameters, SIGNATURE_VALUE$4, AttributeCertificateV1.defaultValues(SIGNATURE_VALUE$4));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ACINFO$1:\n return new AttributeCertificateInfoV1();\n case SIGNATURE_ALGORITHM$7:\n return new AlgorithmIdentifier();\n case SIGNATURE_VALUE$4:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AttributeCertificateInfoV1.schema(names.acinfo || {}),\n AlgorithmIdentifier.schema(names.signatureAlgorithm || {}),\n new asn1js.BitString({ name: (names.signatureValue || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$Y);\n const asn1 = asn1js.compareSchema(schema, schema, AttributeCertificateV1.schema({\n names: {\n acinfo: {\n names: {\n blockName: ACINFO$1\n }\n },\n signatureAlgorithm: {\n names: {\n blockName: SIGNATURE_ALGORITHM$7\n }\n },\n signatureValue: SIGNATURE_VALUE$4\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.acinfo = new AttributeCertificateInfoV1({ schema: asn1.result.acinfo });\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.signatureAlgorithm });\n this.signatureValue = asn1.result.signatureValue;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.acinfo.toSchema(),\n this.signatureAlgorithm.toSchema(),\n this.signatureValue\n ]\n }));\n }\n toJSON() {\n return {\n acinfo: this.acinfo.toJSON(),\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signatureValue: this.signatureValue.toJSON(),\n };\n }\n}\nAttributeCertificateV1.CLASS_NAME = \"AttributeCertificateV1\";\n\nconst DIGESTED_OBJECT_TYPE = \"digestedObjectType\";\nconst OTHER_OBJECT_TYPE_ID = \"otherObjectTypeID\";\nconst DIGEST_ALGORITHM$2 = \"digestAlgorithm\";\nconst OBJECT_DIGEST = \"objectDigest\";\nconst CLEAR_PROPS$X = [\n DIGESTED_OBJECT_TYPE,\n OTHER_OBJECT_TYPE_ID,\n DIGEST_ALGORITHM$2,\n OBJECT_DIGEST,\n];\nclass ObjectDigestInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.digestedObjectType = pvutils.getParametersValue(parameters, DIGESTED_OBJECT_TYPE, ObjectDigestInfo.defaultValues(DIGESTED_OBJECT_TYPE));\n if (OTHER_OBJECT_TYPE_ID in parameters) {\n this.otherObjectTypeID = pvutils.getParametersValue(parameters, OTHER_OBJECT_TYPE_ID, ObjectDigestInfo.defaultValues(OTHER_OBJECT_TYPE_ID));\n }\n this.digestAlgorithm = pvutils.getParametersValue(parameters, DIGEST_ALGORITHM$2, ObjectDigestInfo.defaultValues(DIGEST_ALGORITHM$2));\n this.objectDigest = pvutils.getParametersValue(parameters, OBJECT_DIGEST, ObjectDigestInfo.defaultValues(OBJECT_DIGEST));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case DIGESTED_OBJECT_TYPE:\n return new asn1js.Enumerated();\n case OTHER_OBJECT_TYPE_ID:\n return new asn1js.ObjectIdentifier();\n case DIGEST_ALGORITHM$2:\n return new AlgorithmIdentifier();\n case OBJECT_DIGEST:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Enumerated({ name: (names.digestedObjectType || EMPTY_STRING) }),\n new asn1js.ObjectIdentifier({\n optional: true,\n name: (names.otherObjectTypeID || EMPTY_STRING)\n }),\n AlgorithmIdentifier.schema(names.digestAlgorithm || {}),\n new asn1js.BitString({ name: (names.objectDigest || EMPTY_STRING) }),\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$X);\n const asn1 = asn1js.compareSchema(schema, schema, ObjectDigestInfo.schema({\n names: {\n digestedObjectType: DIGESTED_OBJECT_TYPE,\n otherObjectTypeID: OTHER_OBJECT_TYPE_ID,\n digestAlgorithm: {\n names: {\n blockName: DIGEST_ALGORITHM$2\n }\n },\n objectDigest: OBJECT_DIGEST\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.digestedObjectType = asn1.result.digestedObjectType;\n if (OTHER_OBJECT_TYPE_ID in asn1.result) {\n this.otherObjectTypeID = asn1.result.otherObjectTypeID;\n }\n this.digestAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.digestAlgorithm });\n this.objectDigest = asn1.result.objectDigest;\n }\n toSchema() {\n const result = new asn1js.Sequence({\n value: [this.digestedObjectType]\n });\n if (this.otherObjectTypeID) {\n result.valueBlock.value.push(this.otherObjectTypeID);\n }\n result.valueBlock.value.push(this.digestAlgorithm.toSchema());\n result.valueBlock.value.push(this.objectDigest);\n return result;\n }\n toJSON() {\n const result = {\n digestedObjectType: this.digestedObjectType.toJSON(),\n digestAlgorithm: this.digestAlgorithm.toJSON(),\n objectDigest: this.objectDigest.toJSON(),\n };\n if (this.otherObjectTypeID) {\n result.otherObjectTypeID = this.otherObjectTypeID.toJSON();\n }\n return result;\n }\n}\nObjectDigestInfo.CLASS_NAME = \"ObjectDigestInfo\";\n\nconst ISSUER_NAME = \"issuerName\";\nconst BASE_CERTIFICATE_ID$1 = \"baseCertificateID\";\nconst OBJECT_DIGEST_INFO$1 = \"objectDigestInfo\";\nconst CLEAR_PROPS$W = [\n ISSUER_NAME,\n BASE_CERTIFICATE_ID$1,\n OBJECT_DIGEST_INFO$1\n];\nclass V2Form extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (ISSUER_NAME in parameters) {\n this.issuerName = pvutils.getParametersValue(parameters, ISSUER_NAME, V2Form.defaultValues(ISSUER_NAME));\n }\n if (BASE_CERTIFICATE_ID$1 in parameters) {\n this.baseCertificateID = pvutils.getParametersValue(parameters, BASE_CERTIFICATE_ID$1, V2Form.defaultValues(BASE_CERTIFICATE_ID$1));\n }\n if (OBJECT_DIGEST_INFO$1 in parameters) {\n this.objectDigestInfo = pvutils.getParametersValue(parameters, OBJECT_DIGEST_INFO$1, V2Form.defaultValues(OBJECT_DIGEST_INFO$1));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ISSUER_NAME:\n return new GeneralNames();\n case BASE_CERTIFICATE_ID$1:\n return new IssuerSerial();\n case OBJECT_DIGEST_INFO$1:\n return new ObjectDigestInfo();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n GeneralNames.schema({\n names: {\n blockName: names.issuerName\n }\n }, true),\n new asn1js.Constructed({\n optional: true,\n name: (names.baseCertificateID || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: IssuerSerial.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n optional: true,\n name: (names.objectDigestInfo || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: ObjectDigestInfo.schema().valueBlock.value\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$W);\n const asn1 = asn1js.compareSchema(schema, schema, V2Form.schema({\n names: {\n issuerName: ISSUER_NAME,\n baseCertificateID: BASE_CERTIFICATE_ID$1,\n objectDigestInfo: OBJECT_DIGEST_INFO$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (ISSUER_NAME in asn1.result)\n this.issuerName = new GeneralNames({ schema: asn1.result.issuerName });\n if (BASE_CERTIFICATE_ID$1 in asn1.result) {\n this.baseCertificateID = new IssuerSerial({\n schema: new asn1js.Sequence({\n value: asn1.result.baseCertificateID.valueBlock.value\n })\n });\n }\n if (OBJECT_DIGEST_INFO$1 in asn1.result) {\n this.objectDigestInfo = new ObjectDigestInfo({\n schema: new asn1js.Sequence({\n value: asn1.result.objectDigestInfo.valueBlock.value\n })\n });\n }\n }\n toSchema() {\n const result = new asn1js.Sequence();\n if (this.issuerName)\n result.valueBlock.value.push(this.issuerName.toSchema());\n if (this.baseCertificateID) {\n result.valueBlock.value.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.baseCertificateID.toSchema().valueBlock.value\n }));\n }\n if (this.objectDigestInfo) {\n result.valueBlock.value.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: this.objectDigestInfo.toSchema().valueBlock.value\n }));\n }\n return result;\n }\n toJSON() {\n const result = {};\n if (this.issuerName) {\n result.issuerName = this.issuerName.toJSON();\n }\n if (this.baseCertificateID) {\n result.baseCertificateID = this.baseCertificateID.toJSON();\n }\n if (this.objectDigestInfo) {\n result.objectDigestInfo = this.objectDigestInfo.toJSON();\n }\n return result;\n }\n}\nV2Form.CLASS_NAME = \"V2Form\";\n\nconst BASE_CERTIFICATE_ID = \"baseCertificateID\";\nconst ENTITY_NAME = \"entityName\";\nconst OBJECT_DIGEST_INFO = \"objectDigestInfo\";\nconst CLEAR_PROPS$V = [\n BASE_CERTIFICATE_ID,\n ENTITY_NAME,\n OBJECT_DIGEST_INFO\n];\nclass Holder extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (BASE_CERTIFICATE_ID in parameters) {\n this.baseCertificateID = pvutils.getParametersValue(parameters, BASE_CERTIFICATE_ID, Holder.defaultValues(BASE_CERTIFICATE_ID));\n }\n if (ENTITY_NAME in parameters) {\n this.entityName = pvutils.getParametersValue(parameters, ENTITY_NAME, Holder.defaultValues(ENTITY_NAME));\n }\n if (OBJECT_DIGEST_INFO in parameters) {\n this.objectDigestInfo = pvutils.getParametersValue(parameters, OBJECT_DIGEST_INFO, Holder.defaultValues(OBJECT_DIGEST_INFO));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case BASE_CERTIFICATE_ID:\n return new IssuerSerial();\n case ENTITY_NAME:\n return new GeneralNames();\n case OBJECT_DIGEST_INFO:\n return new ObjectDigestInfo();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n optional: true,\n name: (names.baseCertificateID || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: IssuerSerial.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n optional: true,\n name: (names.entityName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: GeneralNames.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n optional: true,\n name: (names.objectDigestInfo || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: ObjectDigestInfo.schema().valueBlock.value\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$V);\n const asn1 = asn1js.compareSchema(schema, schema, Holder.schema({\n names: {\n baseCertificateID: BASE_CERTIFICATE_ID,\n entityName: ENTITY_NAME,\n objectDigestInfo: OBJECT_DIGEST_INFO\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (BASE_CERTIFICATE_ID in asn1.result) {\n this.baseCertificateID = new IssuerSerial({\n schema: new asn1js.Sequence({\n value: asn1.result.baseCertificateID.valueBlock.value\n })\n });\n }\n if (ENTITY_NAME in asn1.result) {\n this.entityName = new GeneralNames({\n schema: new asn1js.Sequence({\n value: asn1.result.entityName.valueBlock.value\n })\n });\n }\n if (OBJECT_DIGEST_INFO in asn1.result) {\n this.objectDigestInfo = new ObjectDigestInfo({\n schema: new asn1js.Sequence({\n value: asn1.result.objectDigestInfo.valueBlock.value\n })\n });\n }\n }\n toSchema() {\n const result = new asn1js.Sequence();\n if (this.baseCertificateID) {\n result.valueBlock.value.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.baseCertificateID.toSchema().valueBlock.value\n }));\n }\n if (this.entityName) {\n result.valueBlock.value.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: this.entityName.toSchema().valueBlock.value\n }));\n }\n if (this.objectDigestInfo) {\n result.valueBlock.value.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: this.objectDigestInfo.toSchema().valueBlock.value\n }));\n }\n return result;\n }\n toJSON() {\n const result = {};\n if (this.baseCertificateID) {\n result.baseCertificateID = this.baseCertificateID.toJSON();\n }\n if (this.entityName) {\n result.entityName = this.entityName.toJSON();\n }\n if (this.objectDigestInfo) {\n result.objectDigestInfo = this.objectDigestInfo.toJSON();\n }\n return result;\n }\n}\nHolder.CLASS_NAME = \"Holder\";\n\nconst VERSION$g = \"version\";\nconst HOLDER = \"holder\";\nconst ISSUER$3 = \"issuer\";\nconst SIGNATURE$5 = \"signature\";\nconst SERIAL_NUMBER$4 = \"serialNumber\";\nconst ATTR_CERT_VALIDITY_PERIOD = \"attrCertValidityPeriod\";\nconst ATTRIBUTES$2 = \"attributes\";\nconst ISSUER_UNIQUE_ID$1 = \"issuerUniqueID\";\nconst EXTENSIONS$3 = \"extensions\";\nconst CLEAR_PROPS$U = [\n VERSION$g,\n HOLDER,\n ISSUER$3,\n SIGNATURE$5,\n SERIAL_NUMBER$4,\n ATTR_CERT_VALIDITY_PERIOD,\n ATTRIBUTES$2,\n ISSUER_UNIQUE_ID$1,\n EXTENSIONS$3\n];\nclass AttributeCertificateInfoV2 extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$g, AttributeCertificateInfoV2.defaultValues(VERSION$g));\n this.holder = pvutils.getParametersValue(parameters, HOLDER, AttributeCertificateInfoV2.defaultValues(HOLDER));\n this.issuer = pvutils.getParametersValue(parameters, ISSUER$3, AttributeCertificateInfoV2.defaultValues(ISSUER$3));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE$5, AttributeCertificateInfoV2.defaultValues(SIGNATURE$5));\n this.serialNumber = pvutils.getParametersValue(parameters, SERIAL_NUMBER$4, AttributeCertificateInfoV2.defaultValues(SERIAL_NUMBER$4));\n this.attrCertValidityPeriod = pvutils.getParametersValue(parameters, ATTR_CERT_VALIDITY_PERIOD, AttributeCertificateInfoV2.defaultValues(ATTR_CERT_VALIDITY_PERIOD));\n this.attributes = pvutils.getParametersValue(parameters, ATTRIBUTES$2, AttributeCertificateInfoV2.defaultValues(ATTRIBUTES$2));\n if (ISSUER_UNIQUE_ID$1 in parameters) {\n this.issuerUniqueID = pvutils.getParametersValue(parameters, ISSUER_UNIQUE_ID$1, AttributeCertificateInfoV2.defaultValues(ISSUER_UNIQUE_ID$1));\n }\n if (EXTENSIONS$3 in parameters) {\n this.extensions = pvutils.getParametersValue(parameters, EXTENSIONS$3, AttributeCertificateInfoV2.defaultValues(EXTENSIONS$3));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$g:\n return 1;\n case HOLDER:\n return new Holder();\n case ISSUER$3:\n return {};\n case SIGNATURE$5:\n return new AlgorithmIdentifier();\n case SERIAL_NUMBER$4:\n return new asn1js.Integer();\n case ATTR_CERT_VALIDITY_PERIOD:\n return new AttCertValidityPeriod();\n case ATTRIBUTES$2:\n return [];\n case ISSUER_UNIQUE_ID$1:\n return new asn1js.BitString();\n case EXTENSIONS$3:\n return new Extensions();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n Holder.schema(names.holder || {}),\n new asn1js.Choice({\n value: [\n GeneralNames.schema({\n names: {\n blockName: (names.issuer || EMPTY_STRING)\n }\n }),\n new asn1js.Constructed({\n name: (names.issuer || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: V2Form.schema().valueBlock.value\n })\n ]\n }),\n AlgorithmIdentifier.schema(names.signature || {}),\n new asn1js.Integer({ name: (names.serialNumber || EMPTY_STRING) }),\n AttCertValidityPeriod.schema(names.attrCertValidityPeriod || {}),\n new asn1js.Sequence({\n name: (names.attributes || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n value: Attribute.schema()\n })\n ]\n }),\n new asn1js.BitString({\n optional: true,\n name: (names.issuerUniqueID || EMPTY_STRING)\n }),\n Extensions.schema(names.extensions || {}, true)\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$U);\n const asn1 = asn1js.compareSchema(schema, schema, AttributeCertificateInfoV2.schema({\n names: {\n version: VERSION$g,\n holder: {\n names: {\n blockName: HOLDER\n }\n },\n issuer: ISSUER$3,\n signature: {\n names: {\n blockName: SIGNATURE$5\n }\n },\n serialNumber: SERIAL_NUMBER$4,\n attrCertValidityPeriod: {\n names: {\n blockName: ATTR_CERT_VALIDITY_PERIOD\n }\n },\n attributes: ATTRIBUTES$2,\n issuerUniqueID: ISSUER_UNIQUE_ID$1,\n extensions: {\n names: {\n blockName: EXTENSIONS$3\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.holder = new Holder({ schema: asn1.result.holder });\n switch (asn1.result.issuer.idBlock.tagClass) {\n case 3:\n this.issuer = new V2Form({\n schema: new asn1js.Sequence({\n value: asn1.result.issuer.valueBlock.value\n })\n });\n break;\n case 1:\n default:\n throw new Error(\"Incorrect value for 'issuer' in AttributeCertificateInfoV2\");\n }\n this.signature = new AlgorithmIdentifier({ schema: asn1.result.signature });\n this.serialNumber = asn1.result.serialNumber;\n this.attrCertValidityPeriod = new AttCertValidityPeriod({ schema: asn1.result.attrCertValidityPeriod });\n this.attributes = Array.from(asn1.result.attributes.valueBlock.value, element => new Attribute({ schema: element }));\n if (ISSUER_UNIQUE_ID$1 in asn1.result) {\n this.issuerUniqueID = asn1.result.issuerUniqueID;\n }\n if (EXTENSIONS$3 in asn1.result) {\n this.extensions = new Extensions({ schema: asn1.result.extensions });\n }\n }\n toSchema() {\n const result = new asn1js.Sequence({\n value: [\n new asn1js.Integer({ value: this.version }),\n this.holder.toSchema(),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.issuer.toSchema().valueBlock.value\n }),\n this.signature.toSchema(),\n this.serialNumber,\n this.attrCertValidityPeriod.toSchema(),\n new asn1js.Sequence({\n value: Array.from(this.attributes, o => o.toSchema())\n })\n ]\n });\n if (this.issuerUniqueID) {\n result.valueBlock.value.push(this.issuerUniqueID);\n }\n if (this.extensions) {\n result.valueBlock.value.push(this.extensions.toSchema());\n }\n return result;\n }\n toJSON() {\n const result = {\n version: this.version,\n holder: this.holder.toJSON(),\n issuer: this.issuer.toJSON(),\n signature: this.signature.toJSON(),\n serialNumber: this.serialNumber.toJSON(),\n attrCertValidityPeriod: this.attrCertValidityPeriod.toJSON(),\n attributes: Array.from(this.attributes, o => o.toJSON())\n };\n if (this.issuerUniqueID) {\n result.issuerUniqueID = this.issuerUniqueID.toJSON();\n }\n if (this.extensions) {\n result.extensions = this.extensions.toJSON();\n }\n return result;\n }\n}\nAttributeCertificateInfoV2.CLASS_NAME = \"AttributeCertificateInfoV2\";\n\nconst ACINFO = \"acinfo\";\nconst SIGNATURE_ALGORITHM$6 = \"signatureAlgorithm\";\nconst SIGNATURE_VALUE$3 = \"signatureValue\";\nconst CLEAR_PROPS$T = [\n ACINFO,\n SIGNATURE_ALGORITHM$6,\n SIGNATURE_VALUE$3,\n];\nclass AttributeCertificateV2 extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.acinfo = pvutils.getParametersValue(parameters, ACINFO, AttributeCertificateV2.defaultValues(ACINFO));\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$6, AttributeCertificateV2.defaultValues(SIGNATURE_ALGORITHM$6));\n this.signatureValue = pvutils.getParametersValue(parameters, SIGNATURE_VALUE$3, AttributeCertificateV2.defaultValues(SIGNATURE_VALUE$3));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ACINFO:\n return new AttributeCertificateInfoV2();\n case SIGNATURE_ALGORITHM$6:\n return new AlgorithmIdentifier();\n case SIGNATURE_VALUE$3:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AttributeCertificateInfoV2.schema(names.acinfo || {}),\n AlgorithmIdentifier.schema(names.signatureAlgorithm || {}),\n new asn1js.BitString({ name: (names.signatureValue || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$T);\n const asn1 = asn1js.compareSchema(schema, schema, AttributeCertificateV2.schema({\n names: {\n acinfo: {\n names: {\n blockName: ACINFO\n }\n },\n signatureAlgorithm: {\n names: {\n blockName: SIGNATURE_ALGORITHM$6\n }\n },\n signatureValue: SIGNATURE_VALUE$3\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.acinfo = new AttributeCertificateInfoV2({ schema: asn1.result.acinfo });\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.signatureAlgorithm });\n this.signatureValue = asn1.result.signatureValue;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.acinfo.toSchema(),\n this.signatureAlgorithm.toSchema(),\n this.signatureValue\n ]\n }));\n }\n toJSON() {\n return {\n acinfo: this.acinfo.toJSON(),\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signatureValue: this.signatureValue.toJSON(),\n };\n }\n}\nAttributeCertificateV2.CLASS_NAME = \"AttributeCertificateV2\";\n\nconst CONTENT_TYPE = \"contentType\";\nconst CONTENT = \"content\";\nconst CLEAR_PROPS$S = [CONTENT_TYPE, CONTENT];\nclass ContentInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.contentType = pvutils.getParametersValue(parameters, CONTENT_TYPE, ContentInfo.defaultValues(CONTENT_TYPE));\n this.content = pvutils.getParametersValue(parameters, CONTENT, ContentInfo.defaultValues(CONTENT));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CONTENT_TYPE:\n return EMPTY_STRING;\n case CONTENT:\n return new asn1js.Any();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case CONTENT_TYPE:\n return (typeof memberValue === \"string\" &&\n memberValue === this.defaultValues(CONTENT_TYPE));\n case CONTENT:\n return (memberValue instanceof asn1js.Any);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n if ((\"optional\" in names) === false) {\n names.optional = false;\n }\n return (new asn1js.Sequence({\n name: (names.blockName || \"ContentInfo\"),\n optional: names.optional,\n value: [\n new asn1js.ObjectIdentifier({ name: (names.contentType || CONTENT_TYPE) }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Any({ name: (names.content || CONTENT) })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$S);\n const asn1 = asn1js.compareSchema(schema, schema, ContentInfo.schema());\n AsnError.assertSchema(asn1, this.className);\n this.contentType = asn1.result.contentType.valueBlock.toString();\n this.content = asn1.result.content;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.contentType }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.content]\n })\n ]\n }));\n }\n toJSON() {\n const object = {\n contentType: this.contentType\n };\n if (!(this.content instanceof asn1js.Any)) {\n object.content = this.content.toJSON();\n }\n return object;\n }\n}\nContentInfo.CLASS_NAME = \"ContentInfo\";\nContentInfo.DATA = id_ContentType_Data;\nContentInfo.SIGNED_DATA = id_ContentType_SignedData;\nContentInfo.ENVELOPED_DATA = id_ContentType_EnvelopedData;\nContentInfo.ENCRYPTED_DATA = id_ContentType_EncryptedData;\n\nconst TYPE$1 = \"type\";\nconst VALUE$4 = \"value\";\nconst UTC_TIME_NAME = \"utcTimeName\";\nconst GENERAL_TIME_NAME = \"generalTimeName\";\nconst CLEAR_PROPS$R = [UTC_TIME_NAME, GENERAL_TIME_NAME];\nvar TimeType;\n(function (TimeType) {\n TimeType[TimeType[\"UTCTime\"] = 0] = \"UTCTime\";\n TimeType[TimeType[\"GeneralizedTime\"] = 1] = \"GeneralizedTime\";\n TimeType[TimeType[\"empty\"] = 2] = \"empty\";\n})(TimeType || (TimeType = {}));\nclass Time extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.type = pvutils.getParametersValue(parameters, TYPE$1, Time.defaultValues(TYPE$1));\n this.value = pvutils.getParametersValue(parameters, VALUE$4, Time.defaultValues(VALUE$4));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TYPE$1:\n return 0;\n case VALUE$4:\n return new Date(0, 0, 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}, optional = false) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Choice({\n optional,\n value: [\n new asn1js.UTCTime({ name: (names.utcTimeName || EMPTY_STRING) }),\n new asn1js.GeneralizedTime({ name: (names.generalTimeName || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$R);\n const asn1 = asn1js.compareSchema(schema, schema, Time.schema({\n names: {\n utcTimeName: UTC_TIME_NAME,\n generalTimeName: GENERAL_TIME_NAME\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (UTC_TIME_NAME in asn1.result) {\n this.type = 0;\n this.value = asn1.result.utcTimeName.toDate();\n }\n if (GENERAL_TIME_NAME in asn1.result) {\n this.type = 1;\n this.value = asn1.result.generalTimeName.toDate();\n }\n }\n toSchema() {\n if (this.type === 0) {\n return new asn1js.UTCTime({ valueDate: this.value });\n }\n else if (this.type === 1) {\n return new asn1js.GeneralizedTime({ valueDate: this.value });\n }\n return {};\n }\n toJSON() {\n return {\n type: this.type,\n value: this.value\n };\n }\n}\nTime.CLASS_NAME = \"Time\";\n\nconst TBS$4 = \"tbs\";\nconst VERSION$f = \"version\";\nconst SERIAL_NUMBER$3 = \"serialNumber\";\nconst SIGNATURE$4 = \"signature\";\nconst ISSUER$2 = \"issuer\";\nconst NOT_BEFORE = \"notBefore\";\nconst NOT_AFTER = \"notAfter\";\nconst SUBJECT$1 = \"subject\";\nconst SUBJECT_PUBLIC_KEY_INFO = \"subjectPublicKeyInfo\";\nconst ISSUER_UNIQUE_ID = \"issuerUniqueID\";\nconst SUBJECT_UNIQUE_ID = \"subjectUniqueID\";\nconst EXTENSIONS$2 = \"extensions\";\nconst SIGNATURE_ALGORITHM$5 = \"signatureAlgorithm\";\nconst SIGNATURE_VALUE$2 = \"signatureValue\";\nconst TBS_CERTIFICATE = \"tbsCertificate\";\nconst TBS_CERTIFICATE_VERSION = `${TBS_CERTIFICATE}.${VERSION$f}`;\nconst TBS_CERTIFICATE_SERIAL_NUMBER = `${TBS_CERTIFICATE}.${SERIAL_NUMBER$3}`;\nconst TBS_CERTIFICATE_SIGNATURE = `${TBS_CERTIFICATE}.${SIGNATURE$4}`;\nconst TBS_CERTIFICATE_ISSUER = `${TBS_CERTIFICATE}.${ISSUER$2}`;\nconst TBS_CERTIFICATE_NOT_BEFORE = `${TBS_CERTIFICATE}.${NOT_BEFORE}`;\nconst TBS_CERTIFICATE_NOT_AFTER = `${TBS_CERTIFICATE}.${NOT_AFTER}`;\nconst TBS_CERTIFICATE_SUBJECT = `${TBS_CERTIFICATE}.${SUBJECT$1}`;\nconst TBS_CERTIFICATE_SUBJECT_PUBLIC_KEY = `${TBS_CERTIFICATE}.${SUBJECT_PUBLIC_KEY_INFO}`;\nconst TBS_CERTIFICATE_ISSUER_UNIQUE_ID = `${TBS_CERTIFICATE}.${ISSUER_UNIQUE_ID}`;\nconst TBS_CERTIFICATE_SUBJECT_UNIQUE_ID = `${TBS_CERTIFICATE}.${SUBJECT_UNIQUE_ID}`;\nconst TBS_CERTIFICATE_EXTENSIONS = `${TBS_CERTIFICATE}.${EXTENSIONS$2}`;\nconst CLEAR_PROPS$Q = [\n TBS_CERTIFICATE,\n TBS_CERTIFICATE_VERSION,\n TBS_CERTIFICATE_SERIAL_NUMBER,\n TBS_CERTIFICATE_SIGNATURE,\n TBS_CERTIFICATE_ISSUER,\n TBS_CERTIFICATE_NOT_BEFORE,\n TBS_CERTIFICATE_NOT_AFTER,\n TBS_CERTIFICATE_SUBJECT,\n TBS_CERTIFICATE_SUBJECT_PUBLIC_KEY,\n TBS_CERTIFICATE_ISSUER_UNIQUE_ID,\n TBS_CERTIFICATE_SUBJECT_UNIQUE_ID,\n TBS_CERTIFICATE_EXTENSIONS,\n SIGNATURE_ALGORITHM$5,\n SIGNATURE_VALUE$2\n];\nfunction tbsCertificate(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || TBS_CERTIFICATE),\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Integer({ name: (names.tbsCertificateVersion || TBS_CERTIFICATE_VERSION) })\n ]\n }),\n new asn1js.Integer({ name: (names.tbsCertificateSerialNumber || TBS_CERTIFICATE_SERIAL_NUMBER) }),\n AlgorithmIdentifier.schema(names.signature || {\n names: {\n blockName: TBS_CERTIFICATE_SIGNATURE\n }\n }),\n RelativeDistinguishedNames.schema(names.issuer || {\n names: {\n blockName: TBS_CERTIFICATE_ISSUER\n }\n }),\n new asn1js.Sequence({\n name: (names.tbsCertificateValidity || \"tbsCertificate.validity\"),\n value: [\n Time.schema(names.notBefore || {\n names: {\n utcTimeName: TBS_CERTIFICATE_NOT_BEFORE,\n generalTimeName: TBS_CERTIFICATE_NOT_BEFORE\n }\n }),\n Time.schema(names.notAfter || {\n names: {\n utcTimeName: TBS_CERTIFICATE_NOT_AFTER,\n generalTimeName: TBS_CERTIFICATE_NOT_AFTER\n }\n })\n ]\n }),\n RelativeDistinguishedNames.schema(names.subject || {\n names: {\n blockName: TBS_CERTIFICATE_SUBJECT\n }\n }),\n PublicKeyInfo.schema(names.subjectPublicKeyInfo || {\n names: {\n blockName: TBS_CERTIFICATE_SUBJECT_PUBLIC_KEY\n }\n }),\n new asn1js.Primitive({\n name: (names.tbsCertificateIssuerUniqueID || TBS_CERTIFICATE_ISSUER_UNIQUE_ID),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n }\n }),\n new asn1js.Primitive({\n name: (names.tbsCertificateSubjectUniqueID || TBS_CERTIFICATE_SUBJECT_UNIQUE_ID),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n }\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n value: [Extensions.schema(names.extensions || {\n names: {\n blockName: TBS_CERTIFICATE_EXTENSIONS\n }\n })]\n })\n ]\n }));\n}\nclass Certificate extends PkiObject {\n get tbs() {\n return pvtsutils.BufferSourceConverter.toArrayBuffer(this.tbsView);\n }\n set tbs(value) {\n this.tbsView = new Uint8Array(value);\n }\n constructor(parameters = {}) {\n super();\n this.tbsView = new Uint8Array(pvutils.getParametersValue(parameters, TBS$4, Certificate.defaultValues(TBS$4)));\n this.version = pvutils.getParametersValue(parameters, VERSION$f, Certificate.defaultValues(VERSION$f));\n this.serialNumber = pvutils.getParametersValue(parameters, SERIAL_NUMBER$3, Certificate.defaultValues(SERIAL_NUMBER$3));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE$4, Certificate.defaultValues(SIGNATURE$4));\n this.issuer = pvutils.getParametersValue(parameters, ISSUER$2, Certificate.defaultValues(ISSUER$2));\n this.notBefore = pvutils.getParametersValue(parameters, NOT_BEFORE, Certificate.defaultValues(NOT_BEFORE));\n this.notAfter = pvutils.getParametersValue(parameters, NOT_AFTER, Certificate.defaultValues(NOT_AFTER));\n this.subject = pvutils.getParametersValue(parameters, SUBJECT$1, Certificate.defaultValues(SUBJECT$1));\n this.subjectPublicKeyInfo = pvutils.getParametersValue(parameters, SUBJECT_PUBLIC_KEY_INFO, Certificate.defaultValues(SUBJECT_PUBLIC_KEY_INFO));\n if (ISSUER_UNIQUE_ID in parameters) {\n this.issuerUniqueID = pvutils.getParametersValue(parameters, ISSUER_UNIQUE_ID, Certificate.defaultValues(ISSUER_UNIQUE_ID));\n }\n if (SUBJECT_UNIQUE_ID in parameters) {\n this.subjectUniqueID = pvutils.getParametersValue(parameters, SUBJECT_UNIQUE_ID, Certificate.defaultValues(SUBJECT_UNIQUE_ID));\n }\n if (EXTENSIONS$2 in parameters) {\n this.extensions = pvutils.getParametersValue(parameters, EXTENSIONS$2, Certificate.defaultValues(EXTENSIONS$2));\n }\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$5, Certificate.defaultValues(SIGNATURE_ALGORITHM$5));\n this.signatureValue = pvutils.getParametersValue(parameters, SIGNATURE_VALUE$2, Certificate.defaultValues(SIGNATURE_VALUE$2));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TBS$4:\n return EMPTY_BUFFER;\n case VERSION$f:\n return 0;\n case SERIAL_NUMBER$3:\n return new asn1js.Integer();\n case SIGNATURE$4:\n return new AlgorithmIdentifier();\n case ISSUER$2:\n return new RelativeDistinguishedNames();\n case NOT_BEFORE:\n return new Time();\n case NOT_AFTER:\n return new Time();\n case SUBJECT$1:\n return new RelativeDistinguishedNames();\n case SUBJECT_PUBLIC_KEY_INFO:\n return new PublicKeyInfo();\n case ISSUER_UNIQUE_ID:\n return EMPTY_BUFFER;\n case SUBJECT_UNIQUE_ID:\n return EMPTY_BUFFER;\n case EXTENSIONS$2:\n return [];\n case SIGNATURE_ALGORITHM$5:\n return new AlgorithmIdentifier();\n case SIGNATURE_VALUE$2:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n tbsCertificate(names.tbsCertificate),\n AlgorithmIdentifier.schema(names.signatureAlgorithm || {\n names: {\n blockName: SIGNATURE_ALGORITHM$5\n }\n }),\n new asn1js.BitString({ name: (names.signatureValue || SIGNATURE_VALUE$2) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$Q);\n const asn1 = asn1js.compareSchema(schema, schema, Certificate.schema({\n names: {\n tbsCertificate: {\n names: {\n extensions: {\n names: {\n extensions: TBS_CERTIFICATE_EXTENSIONS\n }\n }\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.tbsView = asn1.result.tbsCertificate.valueBeforeDecodeView;\n if (TBS_CERTIFICATE_VERSION in asn1.result)\n this.version = asn1.result[TBS_CERTIFICATE_VERSION].valueBlock.valueDec;\n this.serialNumber = asn1.result[TBS_CERTIFICATE_SERIAL_NUMBER];\n this.signature = new AlgorithmIdentifier({ schema: asn1.result[TBS_CERTIFICATE_SIGNATURE] });\n this.issuer = new RelativeDistinguishedNames({ schema: asn1.result[TBS_CERTIFICATE_ISSUER] });\n this.notBefore = new Time({ schema: asn1.result[TBS_CERTIFICATE_NOT_BEFORE] });\n this.notAfter = new Time({ schema: asn1.result[TBS_CERTIFICATE_NOT_AFTER] });\n this.subject = new RelativeDistinguishedNames({ schema: asn1.result[TBS_CERTIFICATE_SUBJECT] });\n this.subjectPublicKeyInfo = new PublicKeyInfo({ schema: asn1.result[TBS_CERTIFICATE_SUBJECT_PUBLIC_KEY] });\n if (TBS_CERTIFICATE_ISSUER_UNIQUE_ID in asn1.result)\n this.issuerUniqueID = asn1.result[TBS_CERTIFICATE_ISSUER_UNIQUE_ID].valueBlock.valueHex;\n if (TBS_CERTIFICATE_SUBJECT_UNIQUE_ID in asn1.result)\n this.subjectUniqueID = asn1.result[TBS_CERTIFICATE_SUBJECT_UNIQUE_ID].valueBlock.valueHex;\n if (TBS_CERTIFICATE_EXTENSIONS in asn1.result)\n this.extensions = Array.from(asn1.result[TBS_CERTIFICATE_EXTENSIONS], element => new Extension({ schema: element }));\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.signatureAlgorithm });\n this.signatureValue = asn1.result.signatureValue;\n }\n encodeTBS() {\n const outputArray = [];\n if ((VERSION$f in this) && (this.version !== Certificate.defaultValues(VERSION$f))) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Integer({ value: this.version })\n ]\n }));\n }\n outputArray.push(this.serialNumber);\n outputArray.push(this.signature.toSchema());\n outputArray.push(this.issuer.toSchema());\n outputArray.push(new asn1js.Sequence({\n value: [\n this.notBefore.toSchema(),\n this.notAfter.toSchema()\n ]\n }));\n outputArray.push(this.subject.toSchema());\n outputArray.push(this.subjectPublicKeyInfo.toSchema());\n if (this.issuerUniqueID) {\n outputArray.push(new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n valueHex: this.issuerUniqueID\n }));\n }\n if (this.subjectUniqueID) {\n outputArray.push(new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n valueHex: this.subjectUniqueID\n }));\n }\n if (this.extensions) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n value: [new asn1js.Sequence({\n value: Array.from(this.extensions, o => o.toSchema())\n })]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toSchema(encodeFlag = false) {\n let tbsSchema;\n if (encodeFlag === false) {\n if (!this.tbsView.byteLength) {\n return Certificate.schema().value[0];\n }\n const asn1 = asn1js.fromBER(this.tbsView);\n AsnError.assert(asn1, \"TBS Certificate\");\n tbsSchema = asn1.result;\n }\n else {\n tbsSchema = this.encodeTBS();\n }\n return (new asn1js.Sequence({\n value: [\n tbsSchema,\n this.signatureAlgorithm.toSchema(),\n this.signatureValue\n ]\n }));\n }\n toJSON() {\n const res = {\n tbs: pvtsutils.Convert.ToHex(this.tbsView),\n version: this.version,\n serialNumber: this.serialNumber.toJSON(),\n signature: this.signature.toJSON(),\n issuer: this.issuer.toJSON(),\n notBefore: this.notBefore.toJSON(),\n notAfter: this.notAfter.toJSON(),\n subject: this.subject.toJSON(),\n subjectPublicKeyInfo: this.subjectPublicKeyInfo.toJSON(),\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signatureValue: this.signatureValue.toJSON(),\n };\n if ((VERSION$f in this) && (this.version !== Certificate.defaultValues(VERSION$f))) {\n res.version = this.version;\n }\n if (this.issuerUniqueID) {\n res.issuerUniqueID = pvtsutils.Convert.ToHex(this.issuerUniqueID);\n }\n if (this.subjectUniqueID) {\n res.subjectUniqueID = pvtsutils.Convert.ToHex(this.subjectUniqueID);\n }\n if (this.extensions) {\n res.extensions = Array.from(this.extensions, o => o.toJSON());\n }\n return res;\n }\n async getPublicKey(parameters, crypto = getCrypto(true)) {\n return crypto.getPublicKey(this.subjectPublicKeyInfo, this.signatureAlgorithm, parameters);\n }\n async getKeyHash(hashAlgorithm = \"SHA-1\", crypto = getCrypto(true)) {\n return crypto.digest({ name: hashAlgorithm }, this.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView);\n }\n async sign(privateKey, hashAlgorithm = \"SHA-1\", crypto = getCrypto(true)) {\n if (!privateKey) {\n throw new Error(\"Need to provide a private key for signing\");\n }\n const signatureParameters = await crypto.getSignatureParameters(privateKey, hashAlgorithm);\n const parameters = signatureParameters.parameters;\n this.signature = signatureParameters.signatureAlgorithm;\n this.signatureAlgorithm = signatureParameters.signatureAlgorithm;\n this.tbsView = new Uint8Array(this.encodeTBS().toBER());\n const signature = await crypto.signWithPrivateKey(this.tbsView, privateKey, parameters);\n this.signatureValue = new asn1js.BitString({ valueHex: signature });\n }\n async verify(issuerCertificate, crypto = getCrypto(true)) {\n let subjectPublicKeyInfo;\n if (issuerCertificate) {\n subjectPublicKeyInfo = issuerCertificate.subjectPublicKeyInfo;\n }\n else if (this.issuer.isEqual(this.subject)) {\n subjectPublicKeyInfo = this.subjectPublicKeyInfo;\n }\n if (!(subjectPublicKeyInfo instanceof PublicKeyInfo)) {\n throw new Error(\"Please provide issuer certificate as a parameter\");\n }\n return crypto.verifyWithPublicKey(this.tbsView, this.signatureValue, subjectPublicKeyInfo, this.signatureAlgorithm);\n }\n}\nCertificate.CLASS_NAME = \"Certificate\";\nfunction checkCA(cert, signerCert = null) {\n if (signerCert && cert.issuer.isEqual(signerCert.issuer) && cert.serialNumber.isEqual(signerCert.serialNumber)) {\n return null;\n }\n let isCA = false;\n if (cert.extensions) {\n for (const extension of cert.extensions) {\n if (extension.extnID === id_BasicConstraints && extension.parsedValue instanceof BasicConstraints) {\n if (extension.parsedValue.cA) {\n isCA = true;\n break;\n }\n }\n }\n }\n if (isCA) {\n return cert;\n }\n return null;\n}\n\nconst CERT_ID$1 = \"certId\";\nconst CERT_VALUE = \"certValue\";\nconst PARSED_VALUE$4 = \"parsedValue\";\nconst CLEAR_PROPS$P = [\n CERT_ID$1,\n CERT_VALUE\n];\nclass CertBag extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.certId = pvutils.getParametersValue(parameters, CERT_ID$1, CertBag.defaultValues(CERT_ID$1));\n this.certValue = pvutils.getParametersValue(parameters, CERT_VALUE, CertBag.defaultValues(CERT_VALUE));\n if (PARSED_VALUE$4 in parameters) {\n this.parsedValue = pvutils.getParametersValue(parameters, PARSED_VALUE$4, CertBag.defaultValues(PARSED_VALUE$4));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CERT_ID$1:\n return EMPTY_STRING;\n case CERT_VALUE:\n return (new asn1js.Any());\n case PARSED_VALUE$4:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case CERT_ID$1:\n return (memberValue === EMPTY_STRING);\n case CERT_VALUE:\n return (memberValue instanceof asn1js.Any);\n case PARSED_VALUE$4:\n return ((memberValue instanceof Object) && (Object.keys(memberValue).length === 0));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.id || \"id\") }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Any({ name: (names.value || \"value\") })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$P);\n const asn1 = asn1js.compareSchema(schema, schema, CertBag.schema({\n names: {\n id: CERT_ID$1,\n value: CERT_VALUE\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.certId = asn1.result.certId.valueBlock.toString();\n this.certValue = asn1.result.certValue;\n const certValueHex = this.certValue.valueBlock.valueHexView;\n switch (this.certId) {\n case id_CertBag_X509Certificate:\n {\n try {\n this.parsedValue = Certificate.fromBER(certValueHex);\n }\n catch (ex) {\n AttributeCertificateV2.fromBER(certValueHex);\n }\n }\n break;\n case id_CertBag_AttributeCertificate:\n {\n this.parsedValue = AttributeCertificateV2.fromBER(certValueHex);\n }\n break;\n case id_CertBag_SDSICertificate:\n default:\n throw new Error(`Incorrect CERT_ID value in CertBag: ${this.certId}`);\n }\n }\n toSchema() {\n if (PARSED_VALUE$4 in this) {\n if (\"acinfo\" in this.parsedValue) {\n this.certId = id_CertBag_AttributeCertificate;\n }\n else {\n this.certId = id_CertBag_X509Certificate;\n }\n this.certValue = new asn1js.OctetString({ valueHex: this.parsedValue.toSchema().toBER(false) });\n }\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.certId }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [((\"toSchema\" in this.certValue) ? this.certValue.toSchema() : this.certValue)]\n })\n ]\n }));\n }\n toJSON() {\n return {\n certId: this.certId,\n certValue: this.certValue.toJSON()\n };\n }\n}\nCertBag.CLASS_NAME = \"CertBag\";\n\nconst USER_CERTIFICATE = \"userCertificate\";\nconst REVOCATION_DATE = \"revocationDate\";\nconst CRL_ENTRY_EXTENSIONS = \"crlEntryExtensions\";\nconst CLEAR_PROPS$O = [\n USER_CERTIFICATE,\n REVOCATION_DATE,\n CRL_ENTRY_EXTENSIONS\n];\nclass RevokedCertificate extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.userCertificate = pvutils.getParametersValue(parameters, USER_CERTIFICATE, RevokedCertificate.defaultValues(USER_CERTIFICATE));\n this.revocationDate = pvutils.getParametersValue(parameters, REVOCATION_DATE, RevokedCertificate.defaultValues(REVOCATION_DATE));\n if (CRL_ENTRY_EXTENSIONS in parameters) {\n this.crlEntryExtensions = pvutils.getParametersValue(parameters, CRL_ENTRY_EXTENSIONS, RevokedCertificate.defaultValues(CRL_ENTRY_EXTENSIONS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case USER_CERTIFICATE:\n return new asn1js.Integer();\n case REVOCATION_DATE:\n return new Time();\n case CRL_ENTRY_EXTENSIONS:\n return new Extensions();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.userCertificate || USER_CERTIFICATE) }),\n Time.schema({\n names: {\n utcTimeName: (names.revocationDate || REVOCATION_DATE),\n generalTimeName: (names.revocationDate || REVOCATION_DATE)\n }\n }),\n Extensions.schema({\n names: {\n blockName: (names.crlEntryExtensions || CRL_ENTRY_EXTENSIONS)\n }\n }, true)\n ]\n });\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$O);\n const asn1 = asn1js.compareSchema(schema, schema, RevokedCertificate.schema());\n AsnError.assertSchema(asn1, this.className);\n this.userCertificate = asn1.result.userCertificate;\n this.revocationDate = new Time({ schema: asn1.result.revocationDate });\n if (CRL_ENTRY_EXTENSIONS in asn1.result) {\n this.crlEntryExtensions = new Extensions({ schema: asn1.result.crlEntryExtensions });\n }\n }\n toSchema() {\n const outputArray = [\n this.userCertificate,\n this.revocationDate.toSchema()\n ];\n if (this.crlEntryExtensions) {\n outputArray.push(this.crlEntryExtensions.toSchema());\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n userCertificate: this.userCertificate.toJSON(),\n revocationDate: this.revocationDate.toJSON(),\n };\n if (this.crlEntryExtensions) {\n res.crlEntryExtensions = this.crlEntryExtensions.toJSON();\n }\n return res;\n }\n}\nRevokedCertificate.CLASS_NAME = \"RevokedCertificate\";\n\nconst TBS$3 = \"tbs\";\nconst VERSION$e = \"version\";\nconst SIGNATURE$3 = \"signature\";\nconst ISSUER$1 = \"issuer\";\nconst THIS_UPDATE$1 = \"thisUpdate\";\nconst NEXT_UPDATE$1 = \"nextUpdate\";\nconst REVOKED_CERTIFICATES = \"revokedCertificates\";\nconst CRL_EXTENSIONS = \"crlExtensions\";\nconst SIGNATURE_ALGORITHM$4 = \"signatureAlgorithm\";\nconst SIGNATURE_VALUE$1 = \"signatureValue\";\nconst TBS_CERT_LIST = \"tbsCertList\";\nconst TBS_CERT_LIST_VERSION = `${TBS_CERT_LIST}.version`;\nconst TBS_CERT_LIST_SIGNATURE = `${TBS_CERT_LIST}.signature`;\nconst TBS_CERT_LIST_ISSUER = `${TBS_CERT_LIST}.issuer`;\nconst TBS_CERT_LIST_THIS_UPDATE = `${TBS_CERT_LIST}.thisUpdate`;\nconst TBS_CERT_LIST_NEXT_UPDATE = `${TBS_CERT_LIST}.nextUpdate`;\nconst TBS_CERT_LIST_REVOKED_CERTIFICATES = `${TBS_CERT_LIST}.revokedCertificates`;\nconst TBS_CERT_LIST_EXTENSIONS = `${TBS_CERT_LIST}.extensions`;\nconst CLEAR_PROPS$N = [\n TBS_CERT_LIST,\n TBS_CERT_LIST_VERSION,\n TBS_CERT_LIST_SIGNATURE,\n TBS_CERT_LIST_ISSUER,\n TBS_CERT_LIST_THIS_UPDATE,\n TBS_CERT_LIST_NEXT_UPDATE,\n TBS_CERT_LIST_REVOKED_CERTIFICATES,\n TBS_CERT_LIST_EXTENSIONS,\n SIGNATURE_ALGORITHM$4,\n SIGNATURE_VALUE$1\n];\nfunction tbsCertList(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || TBS_CERT_LIST),\n value: [\n new asn1js.Integer({\n optional: true,\n name: (names.tbsCertListVersion || TBS_CERT_LIST_VERSION),\n value: 2\n }),\n AlgorithmIdentifier.schema(names.signature || {\n names: {\n blockName: TBS_CERT_LIST_SIGNATURE\n }\n }),\n RelativeDistinguishedNames.schema(names.issuer || {\n names: {\n blockName: TBS_CERT_LIST_ISSUER\n }\n }),\n Time.schema(names.tbsCertListThisUpdate || {\n names: {\n utcTimeName: TBS_CERT_LIST_THIS_UPDATE,\n generalTimeName: TBS_CERT_LIST_THIS_UPDATE\n }\n }),\n Time.schema(names.tbsCertListNextUpdate || {\n names: {\n utcTimeName: TBS_CERT_LIST_NEXT_UPDATE,\n generalTimeName: TBS_CERT_LIST_NEXT_UPDATE\n }\n }, true),\n new asn1js.Sequence({\n optional: true,\n value: [\n new asn1js.Repeated({\n name: (names.tbsCertListRevokedCertificates || TBS_CERT_LIST_REVOKED_CERTIFICATES),\n value: new asn1js.Sequence({\n value: [\n new asn1js.Integer(),\n Time.schema(),\n Extensions.schema({}, true)\n ]\n })\n })\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [Extensions.schema(names.crlExtensions || {\n names: {\n blockName: TBS_CERT_LIST_EXTENSIONS\n }\n })]\n })\n ]\n }));\n}\nconst WELL_KNOWN_EXTENSIONS = [\n id_AuthorityKeyIdentifier,\n id_IssuerAltName,\n id_CRLNumber,\n id_BaseCRLNumber,\n id_IssuingDistributionPoint,\n id_FreshestCRL,\n id_AuthorityInfoAccess,\n id_CRLReason,\n id_InvalidityDate,\n id_CertificateIssuer,\n];\nclass CertificateRevocationList extends PkiObject {\n get tbs() {\n return pvtsutils.BufferSourceConverter.toArrayBuffer(this.tbsView);\n }\n set tbs(value) {\n this.tbsView = new Uint8Array(value);\n }\n constructor(parameters = {}) {\n super();\n this.tbsView = new Uint8Array(pvutils.getParametersValue(parameters, TBS$3, CertificateRevocationList.defaultValues(TBS$3)));\n this.version = pvutils.getParametersValue(parameters, VERSION$e, CertificateRevocationList.defaultValues(VERSION$e));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE$3, CertificateRevocationList.defaultValues(SIGNATURE$3));\n this.issuer = pvutils.getParametersValue(parameters, ISSUER$1, CertificateRevocationList.defaultValues(ISSUER$1));\n this.thisUpdate = pvutils.getParametersValue(parameters, THIS_UPDATE$1, CertificateRevocationList.defaultValues(THIS_UPDATE$1));\n if (NEXT_UPDATE$1 in parameters) {\n this.nextUpdate = pvutils.getParametersValue(parameters, NEXT_UPDATE$1, CertificateRevocationList.defaultValues(NEXT_UPDATE$1));\n }\n if (REVOKED_CERTIFICATES in parameters) {\n this.revokedCertificates = pvutils.getParametersValue(parameters, REVOKED_CERTIFICATES, CertificateRevocationList.defaultValues(REVOKED_CERTIFICATES));\n }\n if (CRL_EXTENSIONS in parameters) {\n this.crlExtensions = pvutils.getParametersValue(parameters, CRL_EXTENSIONS, CertificateRevocationList.defaultValues(CRL_EXTENSIONS));\n }\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$4, CertificateRevocationList.defaultValues(SIGNATURE_ALGORITHM$4));\n this.signatureValue = pvutils.getParametersValue(parameters, SIGNATURE_VALUE$1, CertificateRevocationList.defaultValues(SIGNATURE_VALUE$1));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TBS$3:\n return EMPTY_BUFFER;\n case VERSION$e:\n return 0;\n case SIGNATURE$3:\n return new AlgorithmIdentifier();\n case ISSUER$1:\n return new RelativeDistinguishedNames();\n case THIS_UPDATE$1:\n return new Time();\n case NEXT_UPDATE$1:\n return new Time();\n case REVOKED_CERTIFICATES:\n return [];\n case CRL_EXTENSIONS:\n return new Extensions();\n case SIGNATURE_ALGORITHM$4:\n return new AlgorithmIdentifier();\n case SIGNATURE_VALUE$1:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || \"CertificateList\"),\n value: [\n tbsCertList(parameters),\n AlgorithmIdentifier.schema(names.signatureAlgorithm || {\n names: {\n blockName: SIGNATURE_ALGORITHM$4\n }\n }),\n new asn1js.BitString({ name: (names.signatureValue || SIGNATURE_VALUE$1) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$N);\n const asn1 = asn1js.compareSchema(schema, schema, CertificateRevocationList.schema());\n AsnError.assertSchema(asn1, this.className);\n this.tbsView = asn1.result.tbsCertList.valueBeforeDecodeView;\n if (TBS_CERT_LIST_VERSION in asn1.result) {\n this.version = asn1.result[TBS_CERT_LIST_VERSION].valueBlock.valueDec;\n }\n this.signature = new AlgorithmIdentifier({ schema: asn1.result[TBS_CERT_LIST_SIGNATURE] });\n this.issuer = new RelativeDistinguishedNames({ schema: asn1.result[TBS_CERT_LIST_ISSUER] });\n this.thisUpdate = new Time({ schema: asn1.result[TBS_CERT_LIST_THIS_UPDATE] });\n if (TBS_CERT_LIST_NEXT_UPDATE in asn1.result) {\n this.nextUpdate = new Time({ schema: asn1.result[TBS_CERT_LIST_NEXT_UPDATE] });\n }\n if (TBS_CERT_LIST_REVOKED_CERTIFICATES in asn1.result) {\n this.revokedCertificates = Array.from(asn1.result[TBS_CERT_LIST_REVOKED_CERTIFICATES], element => new RevokedCertificate({ schema: element }));\n }\n if (TBS_CERT_LIST_EXTENSIONS in asn1.result) {\n this.crlExtensions = new Extensions({ schema: asn1.result[TBS_CERT_LIST_EXTENSIONS] });\n }\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.signatureAlgorithm });\n this.signatureValue = asn1.result.signatureValue;\n }\n encodeTBS() {\n const outputArray = [];\n if (this.version !== CertificateRevocationList.defaultValues(VERSION$e)) {\n outputArray.push(new asn1js.Integer({ value: this.version }));\n }\n outputArray.push(this.signature.toSchema());\n outputArray.push(this.issuer.toSchema());\n outputArray.push(this.thisUpdate.toSchema());\n if (this.nextUpdate) {\n outputArray.push(this.nextUpdate.toSchema());\n }\n if (this.revokedCertificates) {\n outputArray.push(new asn1js.Sequence({\n value: Array.from(this.revokedCertificates, o => o.toSchema())\n }));\n }\n if (this.crlExtensions) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n this.crlExtensions.toSchema()\n ]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toSchema(encodeFlag = false) {\n let tbsSchema;\n if (!encodeFlag) {\n if (!this.tbsView.byteLength) {\n return CertificateRevocationList.schema();\n }\n const asn1 = asn1js.fromBER(this.tbsView);\n AsnError.assert(asn1, \"TBS Certificate Revocation List\");\n tbsSchema = asn1.result;\n }\n else {\n tbsSchema = this.encodeTBS();\n }\n return (new asn1js.Sequence({\n value: [\n tbsSchema,\n this.signatureAlgorithm.toSchema(),\n this.signatureValue\n ]\n }));\n }\n toJSON() {\n const res = {\n tbs: pvtsutils.Convert.ToHex(this.tbsView),\n version: this.version,\n signature: this.signature.toJSON(),\n issuer: this.issuer.toJSON(),\n thisUpdate: this.thisUpdate.toJSON(),\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signatureValue: this.signatureValue.toJSON()\n };\n if (this.version !== CertificateRevocationList.defaultValues(VERSION$e))\n res.version = this.version;\n if (this.nextUpdate) {\n res.nextUpdate = this.nextUpdate.toJSON();\n }\n if (this.revokedCertificates) {\n res.revokedCertificates = Array.from(this.revokedCertificates, o => o.toJSON());\n }\n if (this.crlExtensions) {\n res.crlExtensions = this.crlExtensions.toJSON();\n }\n return res;\n }\n isCertificateRevoked(certificate) {\n if (!this.issuer.isEqual(certificate.issuer)) {\n return false;\n }\n if (!this.revokedCertificates) {\n return false;\n }\n for (const revokedCertificate of this.revokedCertificates) {\n if (revokedCertificate.userCertificate.isEqual(certificate.serialNumber)) {\n return true;\n }\n }\n return false;\n }\n async sign(privateKey, hashAlgorithm = \"SHA-1\", crypto = getCrypto(true)) {\n if (!privateKey) {\n throw new Error(\"Need to provide a private key for signing\");\n }\n const signatureParameters = await crypto.getSignatureParameters(privateKey, hashAlgorithm);\n const { parameters } = signatureParameters;\n this.signature = signatureParameters.signatureAlgorithm;\n this.signatureAlgorithm = signatureParameters.signatureAlgorithm;\n this.tbsView = new Uint8Array(this.encodeTBS().toBER());\n const signature = await crypto.signWithPrivateKey(this.tbsView, privateKey, parameters);\n this.signatureValue = new asn1js.BitString({ valueHex: signature });\n }\n async verify(parameters = {}, crypto = getCrypto(true)) {\n let subjectPublicKeyInfo;\n if (parameters.issuerCertificate) {\n subjectPublicKeyInfo = parameters.issuerCertificate.subjectPublicKeyInfo;\n if (!this.issuer.isEqual(parameters.issuerCertificate.subject)) {\n return false;\n }\n }\n if (parameters.publicKeyInfo) {\n subjectPublicKeyInfo = parameters.publicKeyInfo;\n }\n if (!subjectPublicKeyInfo) {\n throw new Error(\"Issuer's certificate must be provided as an input parameter\");\n }\n if (this.crlExtensions) {\n for (const extension of this.crlExtensions.extensions) {\n if (extension.critical) {\n if (!WELL_KNOWN_EXTENSIONS.includes(extension.extnID))\n return false;\n }\n }\n }\n return crypto.verifyWithPublicKey(this.tbsView, this.signatureValue, subjectPublicKeyInfo, this.signatureAlgorithm);\n }\n}\nCertificateRevocationList.CLASS_NAME = \"CertificateRevocationList\";\n\nconst CRL_ID = \"crlId\";\nconst CRL_VALUE = \"crlValue\";\nconst PARSED_VALUE$3 = \"parsedValue\";\nconst CLEAR_PROPS$M = [\n CRL_ID,\n CRL_VALUE,\n];\nclass CRLBag extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.crlId = pvutils.getParametersValue(parameters, CRL_ID, CRLBag.defaultValues(CRL_ID));\n this.crlValue = pvutils.getParametersValue(parameters, CRL_VALUE, CRLBag.defaultValues(CRL_VALUE));\n if (PARSED_VALUE$3 in parameters) {\n this.parsedValue = pvutils.getParametersValue(parameters, PARSED_VALUE$3, CRLBag.defaultValues(PARSED_VALUE$3));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CRL_ID:\n return EMPTY_STRING;\n case CRL_VALUE:\n return (new asn1js.Any());\n case PARSED_VALUE$3:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case CRL_ID:\n return (memberValue === EMPTY_STRING);\n case CRL_VALUE:\n return (memberValue instanceof asn1js.Any);\n case PARSED_VALUE$3:\n return ((memberValue instanceof Object) && (Object.keys(memberValue).length === 0));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.id || \"id\") }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Any({ name: (names.value || \"value\") })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$M);\n const asn1 = asn1js.compareSchema(schema, schema, CRLBag.schema({\n names: {\n id: CRL_ID,\n value: CRL_VALUE\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.crlId = asn1.result.crlId.valueBlock.toString();\n this.crlValue = asn1.result.crlValue;\n switch (this.crlId) {\n case id_CRLBag_X509CRL:\n {\n this.parsedValue = CertificateRevocationList.fromBER(this.certValue.valueBlock.valueHex);\n }\n break;\n default:\n throw new Error(`Incorrect CRL_ID value in CRLBag: ${this.crlId}`);\n }\n }\n toSchema() {\n if (this.parsedValue) {\n this.crlId = id_CRLBag_X509CRL;\n this.crlValue = new asn1js.OctetString({ valueHex: this.parsedValue.toSchema().toBER(false) });\n }\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.crlId }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.crlValue.toSchema()]\n })\n ]\n }));\n }\n toJSON() {\n return {\n crlId: this.crlId,\n crlValue: this.crlValue.toJSON()\n };\n }\n}\nCRLBag.CLASS_NAME = \"CRLBag\";\n\nconst VERSION$d = \"version\";\nconst ENCRYPTED_CONTENT_INFO$1 = \"encryptedContentInfo\";\nconst UNPROTECTED_ATTRS$1 = \"unprotectedAttrs\";\nconst CLEAR_PROPS$L = [\n VERSION$d,\n ENCRYPTED_CONTENT_INFO$1,\n UNPROTECTED_ATTRS$1,\n];\nclass EncryptedData extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$d, EncryptedData.defaultValues(VERSION$d));\n this.encryptedContentInfo = pvutils.getParametersValue(parameters, ENCRYPTED_CONTENT_INFO$1, EncryptedData.defaultValues(ENCRYPTED_CONTENT_INFO$1));\n if (UNPROTECTED_ATTRS$1 in parameters) {\n this.unprotectedAttrs = pvutils.getParametersValue(parameters, UNPROTECTED_ATTRS$1, EncryptedData.defaultValues(UNPROTECTED_ATTRS$1));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$d:\n return 0;\n case ENCRYPTED_CONTENT_INFO$1:\n return new EncryptedContentInfo();\n case UNPROTECTED_ATTRS$1:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$d:\n return (memberValue === 0);\n case ENCRYPTED_CONTENT_INFO$1:\n return ((EncryptedContentInfo.compareWithDefault(\"contentType\", memberValue.contentType)) &&\n (EncryptedContentInfo.compareWithDefault(\"contentEncryptionAlgorithm\", memberValue.contentEncryptionAlgorithm)) &&\n (EncryptedContentInfo.compareWithDefault(\"encryptedContent\", memberValue.encryptedContent)));\n case UNPROTECTED_ATTRS$1:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n EncryptedContentInfo.schema(names.encryptedContentInfo || {}),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.Repeated({\n name: (names.unprotectedAttrs || EMPTY_STRING),\n value: Attribute.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$L);\n const asn1 = asn1js.compareSchema(schema, schema, EncryptedData.schema({\n names: {\n version: VERSION$d,\n encryptedContentInfo: {\n names: {\n blockName: ENCRYPTED_CONTENT_INFO$1\n }\n },\n unprotectedAttrs: UNPROTECTED_ATTRS$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.encryptedContentInfo = new EncryptedContentInfo({ schema: asn1.result.encryptedContentInfo });\n if (UNPROTECTED_ATTRS$1 in asn1.result)\n this.unprotectedAttrs = Array.from(asn1.result.unprotectedAttrs, element => new Attribute({ schema: element }));\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(this.encryptedContentInfo.toSchema());\n if (this.unprotectedAttrs) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: Array.from(this.unprotectedAttrs, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n version: this.version,\n encryptedContentInfo: this.encryptedContentInfo.toJSON()\n };\n if (this.unprotectedAttrs)\n res.unprotectedAttrs = Array.from(this.unprotectedAttrs, o => o.toJSON());\n return res;\n }\n async encrypt(parameters, crypto = getCrypto(true)) {\n ArgumentError.assert(parameters, \"parameters\", \"object\");\n const encryptParams = {\n ...parameters,\n contentType: \"1.2.840.113549.1.7.1\",\n };\n this.encryptedContentInfo = await crypto.encryptEncryptedContentInfo(encryptParams);\n }\n async decrypt(parameters, crypto = getCrypto(true)) {\n ArgumentError.assert(parameters, \"parameters\", \"object\");\n const decryptParams = {\n ...parameters,\n encryptedContentInfo: this.encryptedContentInfo,\n };\n return crypto.decryptEncryptedContentInfo(decryptParams);\n }\n}\nEncryptedData.CLASS_NAME = \"EncryptedData\";\n\nconst ENCRYPTION_ALGORITHM = \"encryptionAlgorithm\";\nconst ENCRYPTED_DATA = \"encryptedData\";\nconst PARSED_VALUE$2 = \"parsedValue\";\nconst CLEAR_PROPS$K = [\n ENCRYPTION_ALGORITHM,\n ENCRYPTED_DATA,\n];\nclass PKCS8ShroudedKeyBag extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.encryptionAlgorithm = pvutils.getParametersValue(parameters, ENCRYPTION_ALGORITHM, PKCS8ShroudedKeyBag.defaultValues(ENCRYPTION_ALGORITHM));\n this.encryptedData = pvutils.getParametersValue(parameters, ENCRYPTED_DATA, PKCS8ShroudedKeyBag.defaultValues(ENCRYPTED_DATA));\n if (PARSED_VALUE$2 in parameters) {\n this.parsedValue = pvutils.getParametersValue(parameters, PARSED_VALUE$2, PKCS8ShroudedKeyBag.defaultValues(PARSED_VALUE$2));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ENCRYPTION_ALGORITHM:\n return (new AlgorithmIdentifier());\n case ENCRYPTED_DATA:\n return (new asn1js.OctetString());\n case PARSED_VALUE$2:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case ENCRYPTION_ALGORITHM:\n return ((AlgorithmIdentifier.compareWithDefault(\"algorithmId\", memberValue.algorithmId)) &&\n ((\"algorithmParams\" in memberValue) === false));\n case ENCRYPTED_DATA:\n return (memberValue.isEqual(PKCS8ShroudedKeyBag.defaultValues(memberName)));\n case PARSED_VALUE$2:\n return ((memberValue instanceof Object) && (Object.keys(memberValue).length === 0));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.encryptionAlgorithm || {\n names: {\n blockName: ENCRYPTION_ALGORITHM\n }\n }),\n new asn1js.Choice({\n value: [\n new asn1js.OctetString({ name: (names.encryptedData || ENCRYPTED_DATA) }),\n new asn1js.OctetString({\n idBlock: {\n isConstructed: true\n },\n name: (names.encryptedData || ENCRYPTED_DATA)\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$K);\n const asn1 = asn1js.compareSchema(schema, schema, PKCS8ShroudedKeyBag.schema({\n names: {\n encryptionAlgorithm: {\n names: {\n blockName: ENCRYPTION_ALGORITHM\n }\n },\n encryptedData: ENCRYPTED_DATA\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.encryptionAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.encryptionAlgorithm });\n this.encryptedData = asn1.result.encryptedData;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.encryptionAlgorithm.toSchema(),\n this.encryptedData\n ]\n }));\n }\n toJSON() {\n return {\n encryptionAlgorithm: this.encryptionAlgorithm.toJSON(),\n encryptedData: this.encryptedData.toJSON(),\n };\n }\n async parseInternalValues(parameters, crypto = getCrypto(true)) {\n const cmsEncrypted = new EncryptedData({\n encryptedContentInfo: new EncryptedContentInfo({\n contentEncryptionAlgorithm: this.encryptionAlgorithm,\n encryptedContent: this.encryptedData\n })\n });\n const decryptedData = await cmsEncrypted.decrypt(parameters, crypto);\n this.parsedValue = PrivateKeyInfo.fromBER(decryptedData);\n }\n async makeInternalValues(parameters, crypto = getCrypto(true)) {\n if (!this.parsedValue) {\n throw new Error(\"Please initialize \\\"parsedValue\\\" first\");\n }\n const cmsEncrypted = new EncryptedData();\n const encryptParams = {\n ...parameters,\n contentToEncrypt: this.parsedValue.toSchema().toBER(false),\n };\n await cmsEncrypted.encrypt(encryptParams, crypto);\n if (!cmsEncrypted.encryptedContentInfo.encryptedContent) {\n throw new Error(\"The filed `encryptedContent` in EncryptedContentInfo is empty\");\n }\n this.encryptionAlgorithm = cmsEncrypted.encryptedContentInfo.contentEncryptionAlgorithm;\n this.encryptedData = cmsEncrypted.encryptedContentInfo.encryptedContent;\n }\n}\nPKCS8ShroudedKeyBag.CLASS_NAME = \"PKCS8ShroudedKeyBag\";\n\nconst SECRET_TYPE_ID = \"secretTypeId\";\nconst SECRET_VALUE = \"secretValue\";\nconst CLEAR_PROPS$J = [\n SECRET_TYPE_ID,\n SECRET_VALUE,\n];\nclass SecretBag extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.secretTypeId = pvutils.getParametersValue(parameters, SECRET_TYPE_ID, SecretBag.defaultValues(SECRET_TYPE_ID));\n this.secretValue = pvutils.getParametersValue(parameters, SECRET_VALUE, SecretBag.defaultValues(SECRET_VALUE));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case SECRET_TYPE_ID:\n return EMPTY_STRING;\n case SECRET_VALUE:\n return (new asn1js.Any());\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case SECRET_TYPE_ID:\n return (memberValue === EMPTY_STRING);\n case SECRET_VALUE:\n return (memberValue instanceof asn1js.Any);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.id || \"id\") }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Any({ name: (names.value || \"value\") })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$J);\n const asn1 = asn1js.compareSchema(schema, schema, SecretBag.schema({\n names: {\n id: SECRET_TYPE_ID,\n value: SECRET_VALUE\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.secretTypeId = asn1.result.secretTypeId.valueBlock.toString();\n this.secretValue = asn1.result.secretValue;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.secretTypeId }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.secretValue.toSchema()]\n })\n ]\n }));\n }\n toJSON() {\n return {\n secretTypeId: this.secretTypeId,\n secretValue: this.secretValue.toJSON()\n };\n }\n}\nSecretBag.CLASS_NAME = \"SecretBag\";\n\nclass SafeBagValueFactory {\n static getItems() {\n if (!this.items) {\n this.items = {};\n SafeBagValueFactory.register(\"1.2.840.113549.1.12.10.1.1\", PrivateKeyInfo);\n SafeBagValueFactory.register(\"1.2.840.113549.1.12.10.1.2\", PKCS8ShroudedKeyBag);\n SafeBagValueFactory.register(\"1.2.840.113549.1.12.10.1.3\", CertBag);\n SafeBagValueFactory.register(\"1.2.840.113549.1.12.10.1.4\", CRLBag);\n SafeBagValueFactory.register(\"1.2.840.113549.1.12.10.1.5\", SecretBag);\n SafeBagValueFactory.register(\"1.2.840.113549.1.12.10.1.6\", SafeContents);\n }\n return this.items;\n }\n static register(id, type) {\n this.getItems()[id] = type;\n }\n static find(id) {\n return this.getItems()[id] || null;\n }\n}\n\nconst BAG_ID = \"bagId\";\nconst BAG_VALUE = \"bagValue\";\nconst BAG_ATTRIBUTES = \"bagAttributes\";\nconst CLEAR_PROPS$I = [\n BAG_ID,\n BAG_VALUE,\n BAG_ATTRIBUTES\n];\nclass SafeBag extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.bagId = pvutils.getParametersValue(parameters, BAG_ID, SafeBag.defaultValues(BAG_ID));\n this.bagValue = pvutils.getParametersValue(parameters, BAG_VALUE, SafeBag.defaultValues(BAG_VALUE));\n if (BAG_ATTRIBUTES in parameters) {\n this.bagAttributes = pvutils.getParametersValue(parameters, BAG_ATTRIBUTES, SafeBag.defaultValues(BAG_ATTRIBUTES));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case BAG_ID:\n return EMPTY_STRING;\n case BAG_VALUE:\n return (new asn1js.Any());\n case BAG_ATTRIBUTES:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case BAG_ID:\n return (memberValue === EMPTY_STRING);\n case BAG_VALUE:\n return (memberValue instanceof asn1js.Any);\n case BAG_ATTRIBUTES:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.bagId || BAG_ID) }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Any({ name: (names.bagValue || BAG_VALUE) })]\n }),\n new asn1js.Set({\n optional: true,\n value: [\n new asn1js.Repeated({\n name: (names.bagAttributes || BAG_ATTRIBUTES),\n value: Attribute.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$I);\n const asn1 = asn1js.compareSchema(schema, schema, SafeBag.schema({\n names: {\n bagId: BAG_ID,\n bagValue: BAG_VALUE,\n bagAttributes: BAG_ATTRIBUTES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.bagId = asn1.result.bagId.valueBlock.toString();\n const bagType = SafeBagValueFactory.find(this.bagId);\n if (!bagType) {\n throw new Error(`Invalid BAG_ID for SafeBag: ${this.bagId}`);\n }\n this.bagValue = new bagType({ schema: asn1.result.bagValue });\n if (BAG_ATTRIBUTES in asn1.result) {\n this.bagAttributes = Array.from(asn1.result.bagAttributes, element => new Attribute({ schema: element }));\n }\n }\n toSchema() {\n const outputArray = [\n new asn1js.ObjectIdentifier({ value: this.bagId }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.bagValue.toSchema()]\n })\n ];\n if (this.bagAttributes) {\n outputArray.push(new asn1js.Set({\n value: Array.from(this.bagAttributes, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const output = {\n bagId: this.bagId,\n bagValue: this.bagValue.toJSON()\n };\n if (this.bagAttributes) {\n output.bagAttributes = Array.from(this.bagAttributes, o => o.toJSON());\n }\n return output;\n }\n}\nSafeBag.CLASS_NAME = \"SafeBag\";\n\nconst SAFE_BUGS = \"safeBags\";\nclass SafeContents extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.safeBags = pvutils.getParametersValue(parameters, SAFE_BUGS, SafeContents.defaultValues(SAFE_BUGS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case SAFE_BUGS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case SAFE_BUGS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.safeBags || EMPTY_STRING),\n value: SafeBag.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n SAFE_BUGS\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, SafeContents.schema({\n names: {\n safeBags: SAFE_BUGS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.safeBags = Array.from(asn1.result.safeBags, element => new SafeBag({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.safeBags, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n safeBags: Array.from(this.safeBags, o => o.toJSON())\n };\n }\n}\nSafeContents.CLASS_NAME = \"SafeContents\";\n\nconst OTHER_CERT_FORMAT = \"otherCertFormat\";\nconst OTHER_CERT = \"otherCert\";\nconst CLEAR_PROPS$H = [\n OTHER_CERT_FORMAT,\n OTHER_CERT\n];\nclass OtherCertificateFormat extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.otherCertFormat = pvutils.getParametersValue(parameters, OTHER_CERT_FORMAT, OtherCertificateFormat.defaultValues(OTHER_CERT_FORMAT));\n this.otherCert = pvutils.getParametersValue(parameters, OTHER_CERT, OtherCertificateFormat.defaultValues(OTHER_CERT));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case OTHER_CERT_FORMAT:\n return EMPTY_STRING;\n case OTHER_CERT:\n return new asn1js.Any();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.otherCertFormat || OTHER_CERT_FORMAT) }),\n new asn1js.Any({ name: (names.otherCert || OTHER_CERT) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$H);\n const asn1 = asn1js.compareSchema(schema, schema, OtherCertificateFormat.schema());\n AsnError.assertSchema(asn1, this.className);\n this.otherCertFormat = asn1.result.otherCertFormat.valueBlock.toString();\n this.otherCert = asn1.result.otherCert;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.otherCertFormat }),\n this.otherCert\n ]\n }));\n }\n toJSON() {\n const res = {\n otherCertFormat: this.otherCertFormat\n };\n if (!(this.otherCert instanceof asn1js.Any)) {\n res.otherCert = this.otherCert.toJSON();\n }\n return res;\n }\n}\n\nconst CERTIFICATES$1 = \"certificates\";\nconst CLEAR_PROPS$G = [\n CERTIFICATES$1,\n];\nclass CertificateSet extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.certificates = pvutils.getParametersValue(parameters, CERTIFICATES$1, CertificateSet.defaultValues(CERTIFICATES$1));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CERTIFICATES$1:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Set({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.certificates || CERTIFICATES$1),\n value: new asn1js.Choice({\n value: [\n Certificate.schema(),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Any()\n ]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.Sequence\n ]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: AttributeCertificateV2.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n value: OtherCertificateFormat.schema().valueBlock.value\n })\n ]\n })\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$G);\n const asn1 = asn1js.compareSchema(schema, schema, CertificateSet.schema());\n AsnError.assertSchema(asn1, this.className);\n this.certificates = Array.from(asn1.result.certificates || [], (element) => {\n const initialTagNumber = element.idBlock.tagNumber;\n if (element.idBlock.tagClass === 1)\n return new Certificate({ schema: element });\n const elementSequence = new asn1js.Sequence({\n value: element.valueBlock.value\n });\n switch (initialTagNumber) {\n case 1:\n if (elementSequence.valueBlock.value[0].valueBlock.value[0].valueBlock.valueDec === 1) {\n return new AttributeCertificateV2({ schema: elementSequence });\n }\n else {\n return new AttributeCertificateV1({ schema: elementSequence });\n }\n case 2:\n return new AttributeCertificateV2({ schema: elementSequence });\n case 3:\n return new OtherCertificateFormat({ schema: elementSequence });\n }\n return element;\n });\n }\n toSchema() {\n return (new asn1js.Set({\n value: Array.from(this.certificates, element => {\n switch (true) {\n case (element instanceof Certificate):\n return element.toSchema();\n case (element instanceof AttributeCertificateV1):\n return new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: element.toSchema().valueBlock.value\n });\n case (element instanceof AttributeCertificateV2):\n return new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: element.toSchema().valueBlock.value\n });\n case (element instanceof OtherCertificateFormat):\n return new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n value: element.toSchema().valueBlock.value\n });\n }\n return element.toSchema();\n })\n }));\n }\n toJSON() {\n return {\n certificates: Array.from(this.certificates, o => o.toJSON())\n };\n }\n}\nCertificateSet.CLASS_NAME = \"CertificateSet\";\n\nconst OTHER_REV_INFO_FORMAT = \"otherRevInfoFormat\";\nconst OTHER_REV_INFO = \"otherRevInfo\";\nconst CLEAR_PROPS$F = [\n OTHER_REV_INFO_FORMAT,\n OTHER_REV_INFO\n];\nclass OtherRevocationInfoFormat extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.otherRevInfoFormat = pvutils.getParametersValue(parameters, OTHER_REV_INFO_FORMAT, OtherRevocationInfoFormat.defaultValues(OTHER_REV_INFO_FORMAT));\n this.otherRevInfo = pvutils.getParametersValue(parameters, OTHER_REV_INFO, OtherRevocationInfoFormat.defaultValues(OTHER_REV_INFO));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case OTHER_REV_INFO_FORMAT:\n return EMPTY_STRING;\n case OTHER_REV_INFO:\n return new asn1js.Any();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.otherRevInfoFormat || OTHER_REV_INFO_FORMAT) }),\n new asn1js.Any({ name: (names.otherRevInfo || OTHER_REV_INFO) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$F);\n const asn1 = asn1js.compareSchema(schema, schema, OtherRevocationInfoFormat.schema());\n AsnError.assertSchema(asn1, this.className);\n this.otherRevInfoFormat = asn1.result.otherRevInfoFormat.valueBlock.toString();\n this.otherRevInfo = asn1.result.otherRevInfo;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.otherRevInfoFormat }),\n this.otherRevInfo\n ]\n }));\n }\n toJSON() {\n const res = {\n otherRevInfoFormat: this.otherRevInfoFormat\n };\n if (!(this.otherRevInfo instanceof asn1js.Any)) {\n res.otherRevInfo = this.otherRevInfo.toJSON();\n }\n return res;\n }\n}\nOtherRevocationInfoFormat.CLASS_NAME = \"OtherRevocationInfoFormat\";\n\nconst CRLS$3 = \"crls\";\nconst OTHER_REVOCATION_INFOS = \"otherRevocationInfos\";\nconst CLEAR_PROPS$E = [\n CRLS$3\n];\nclass RevocationInfoChoices extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.crls = pvutils.getParametersValue(parameters, CRLS$3, RevocationInfoChoices.defaultValues(CRLS$3));\n this.otherRevocationInfos = pvutils.getParametersValue(parameters, OTHER_REVOCATION_INFOS, RevocationInfoChoices.defaultValues(OTHER_REVOCATION_INFOS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CRLS$3:\n return [];\n case OTHER_REVOCATION_INFOS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Set({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.crls || EMPTY_STRING),\n value: new asn1js.Choice({\n value: [\n CertificateRevocationList.schema(),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.ObjectIdentifier(),\n new asn1js.Any()\n ]\n })\n ]\n })\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$E);\n const asn1 = asn1js.compareSchema(schema, schema, RevocationInfoChoices.schema({\n names: {\n crls: CRLS$3\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (asn1.result.crls) {\n for (const element of asn1.result.crls) {\n if (element.idBlock.tagClass === 1)\n this.crls.push(new CertificateRevocationList({ schema: element }));\n else\n this.otherRevocationInfos.push(new OtherRevocationInfoFormat({ schema: element }));\n }\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(...Array.from(this.crls, o => o.toSchema()));\n outputArray.push(...Array.from(this.otherRevocationInfos, element => {\n const schema = element.toSchema();\n schema.idBlock.tagClass = 3;\n schema.idBlock.tagNumber = 1;\n return schema;\n }));\n return (new asn1js.Set({\n value: outputArray\n }));\n }\n toJSON() {\n return {\n crls: Array.from(this.crls, o => o.toJSON()),\n otherRevocationInfos: Array.from(this.otherRevocationInfos, o => o.toJSON())\n };\n }\n}\nRevocationInfoChoices.CLASS_NAME = \"RevocationInfoChoices\";\n\nconst CERTS$3 = \"certs\";\nconst CRLS$2 = \"crls\";\nconst CLEAR_PROPS$D = [\n CERTS$3,\n CRLS$2,\n];\nclass OriginatorInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.crls = pvutils.getParametersValue(parameters, CRLS$2, OriginatorInfo.defaultValues(CRLS$2));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CERTS$3:\n return new CertificateSet();\n case CRLS$2:\n return new RevocationInfoChoices();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case CERTS$3:\n return (memberValue.certificates.length === 0);\n case CRLS$2:\n return ((memberValue.crls.length === 0) && (memberValue.otherRevocationInfos.length === 0));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n name: (names.certs || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: CertificateSet.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n name: (names.crls || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: RevocationInfoChoices.schema().valueBlock.value\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$D);\n const asn1 = asn1js.compareSchema(schema, schema, OriginatorInfo.schema({\n names: {\n certs: CERTS$3,\n crls: CRLS$2\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (CERTS$3 in asn1.result) {\n this.certs = new CertificateSet({\n schema: new asn1js.Set({\n value: asn1.result.certs.valueBlock.value\n })\n });\n }\n if (CRLS$2 in asn1.result) {\n this.crls = new RevocationInfoChoices({\n schema: new asn1js.Set({\n value: asn1.result.crls.valueBlock.value\n })\n });\n }\n }\n toSchema() {\n const sequenceValue = [];\n if (this.certs) {\n sequenceValue.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.certs.toSchema().valueBlock.value\n }));\n }\n if (this.crls) {\n sequenceValue.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: this.crls.toSchema().valueBlock.value\n }));\n }\n return (new asn1js.Sequence({\n value: sequenceValue\n }));\n }\n toJSON() {\n const res = {};\n if (this.certs) {\n res.certs = this.certs.toJSON();\n }\n if (this.crls) {\n res.crls = this.crls.toJSON();\n }\n return res;\n }\n}\nOriginatorInfo.CLASS_NAME = \"OriginatorInfo\";\n\nconst ISSUER = \"issuer\";\nconst SERIAL_NUMBER$2 = \"serialNumber\";\nconst CLEAR_PROPS$C = [\n ISSUER,\n SERIAL_NUMBER$2,\n];\nclass IssuerAndSerialNumber extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.issuer = pvutils.getParametersValue(parameters, ISSUER, IssuerAndSerialNumber.defaultValues(ISSUER));\n this.serialNumber = pvutils.getParametersValue(parameters, SERIAL_NUMBER$2, IssuerAndSerialNumber.defaultValues(SERIAL_NUMBER$2));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ISSUER:\n return new RelativeDistinguishedNames();\n case SERIAL_NUMBER$2:\n return new asn1js.Integer();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n RelativeDistinguishedNames.schema(names.issuer || {}),\n new asn1js.Integer({ name: (names.serialNumber || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$C);\n const asn1 = asn1js.compareSchema(schema, schema, IssuerAndSerialNumber.schema({\n names: {\n issuer: {\n names: {\n blockName: ISSUER\n }\n },\n serialNumber: SERIAL_NUMBER$2\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.issuer = new RelativeDistinguishedNames({ schema: asn1.result.issuer });\n this.serialNumber = asn1.result.serialNumber;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.issuer.toSchema(),\n this.serialNumber\n ]\n }));\n }\n toJSON() {\n return {\n issuer: this.issuer.toJSON(),\n serialNumber: this.serialNumber.toJSON(),\n };\n }\n}\nIssuerAndSerialNumber.CLASS_NAME = \"IssuerAndSerialNumber\";\n\nconst VARIANT$3 = \"variant\";\nconst VALUE$3 = \"value\";\nconst CLEAR_PROPS$B = [\n \"blockName\"\n];\nclass RecipientIdentifier extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.variant = pvutils.getParametersValue(parameters, VARIANT$3, RecipientIdentifier.defaultValues(VARIANT$3));\n if (VALUE$3 in parameters) {\n this.value = pvutils.getParametersValue(parameters, VALUE$3, RecipientIdentifier.defaultValues(VALUE$3));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VARIANT$3:\n return (-1);\n case VALUE$3:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VARIANT$3:\n return (memberValue === (-1));\n case VALUE$3:\n return (Object.keys(memberValue).length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Choice({\n value: [\n IssuerAndSerialNumber.schema({\n names: {\n blockName: (names.blockName || EMPTY_STRING)\n }\n }),\n new asn1js.Primitive({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$B);\n const asn1 = asn1js.compareSchema(schema, schema, RecipientIdentifier.schema({\n names: {\n blockName: \"blockName\"\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (asn1.result.blockName.idBlock.tagClass === 1) {\n this.variant = 1;\n this.value = new IssuerAndSerialNumber({ schema: asn1.result.blockName });\n }\n else {\n this.variant = 2;\n this.value = new asn1js.OctetString({ valueHex: asn1.result.blockName.valueBlock.valueHex });\n }\n }\n toSchema() {\n switch (this.variant) {\n case 1:\n if (!(this.value instanceof IssuerAndSerialNumber)) {\n throw new Error(\"Incorrect type of RecipientIdentifier.value. It should be IssuerAndSerialNumber.\");\n }\n return this.value.toSchema();\n case 2:\n if (!(this.value instanceof asn1js.OctetString)) {\n throw new Error(\"Incorrect type of RecipientIdentifier.value. It should be ASN.1 OctetString.\");\n }\n return new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n valueHex: this.value.valueBlock.valueHexView\n });\n default:\n return new asn1js.Any();\n }\n }\n toJSON() {\n const res = {\n variant: this.variant\n };\n if ((this.variant === 1 || this.variant === 2) && this.value) {\n res.value = this.value.toJSON();\n }\n return res;\n }\n}\nRecipientIdentifier.CLASS_NAME = \"RecipientIdentifier\";\n\nconst VERSION$c = \"version\";\nconst RID$1 = \"rid\";\nconst KEY_ENCRYPTION_ALGORITHM$3 = \"keyEncryptionAlgorithm\";\nconst ENCRYPTED_KEY$3 = \"encryptedKey\";\nconst RECIPIENT_CERTIFICATE$1 = \"recipientCertificate\";\nconst CLEAR_PROPS$A = [\n VERSION$c,\n RID$1,\n KEY_ENCRYPTION_ALGORITHM$3,\n ENCRYPTED_KEY$3,\n];\nclass KeyTransRecipientInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$c, KeyTransRecipientInfo.defaultValues(VERSION$c));\n this.rid = pvutils.getParametersValue(parameters, RID$1, KeyTransRecipientInfo.defaultValues(RID$1));\n this.keyEncryptionAlgorithm = pvutils.getParametersValue(parameters, KEY_ENCRYPTION_ALGORITHM$3, KeyTransRecipientInfo.defaultValues(KEY_ENCRYPTION_ALGORITHM$3));\n this.encryptedKey = pvutils.getParametersValue(parameters, ENCRYPTED_KEY$3, KeyTransRecipientInfo.defaultValues(ENCRYPTED_KEY$3));\n this.recipientCertificate = pvutils.getParametersValue(parameters, RECIPIENT_CERTIFICATE$1, KeyTransRecipientInfo.defaultValues(RECIPIENT_CERTIFICATE$1));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$c:\n return (-1);\n case RID$1:\n return {};\n case KEY_ENCRYPTION_ALGORITHM$3:\n return new AlgorithmIdentifier();\n case ENCRYPTED_KEY$3:\n return new asn1js.OctetString();\n case RECIPIENT_CERTIFICATE$1:\n return new Certificate();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$c:\n return (memberValue === KeyTransRecipientInfo.defaultValues(VERSION$c));\n case RID$1:\n return (Object.keys(memberValue).length === 0);\n case KEY_ENCRYPTION_ALGORITHM$3:\n case ENCRYPTED_KEY$3:\n return memberValue.isEqual(KeyTransRecipientInfo.defaultValues(memberName));\n case RECIPIENT_CERTIFICATE$1:\n return false;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n RecipientIdentifier.schema(names.rid || {}),\n AlgorithmIdentifier.schema(names.keyEncryptionAlgorithm || {}),\n new asn1js.OctetString({ name: (names.encryptedKey || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$A);\n const asn1 = asn1js.compareSchema(schema, schema, KeyTransRecipientInfo.schema({\n names: {\n version: VERSION$c,\n rid: {\n names: {\n blockName: RID$1\n }\n },\n keyEncryptionAlgorithm: {\n names: {\n blockName: KEY_ENCRYPTION_ALGORITHM$3\n }\n },\n encryptedKey: ENCRYPTED_KEY$3\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n if (asn1.result.rid.idBlock.tagClass === 3) {\n this.rid = new asn1js.OctetString({ valueHex: asn1.result.rid.valueBlock.valueHex });\n }\n else {\n this.rid = new IssuerAndSerialNumber({ schema: asn1.result.rid });\n }\n this.keyEncryptionAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.keyEncryptionAlgorithm });\n this.encryptedKey = asn1.result.encryptedKey;\n }\n toSchema() {\n const outputArray = [];\n if (this.rid instanceof IssuerAndSerialNumber) {\n this.version = 0;\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(this.rid.toSchema());\n }\n else {\n this.version = 2;\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n valueHex: this.rid.valueBlock.valueHexView\n }));\n }\n outputArray.push(this.keyEncryptionAlgorithm.toSchema());\n outputArray.push(this.encryptedKey);\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n return {\n version: this.version,\n rid: this.rid.toJSON(),\n keyEncryptionAlgorithm: this.keyEncryptionAlgorithm.toJSON(),\n encryptedKey: this.encryptedKey.toJSON(),\n };\n }\n}\nKeyTransRecipientInfo.CLASS_NAME = \"KeyTransRecipientInfo\";\n\nconst ALGORITHM = \"algorithm\";\nconst PUBLIC_KEY = \"publicKey\";\nconst CLEAR_PROPS$z = [\n ALGORITHM,\n PUBLIC_KEY\n];\nclass OriginatorPublicKey extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.algorithm = pvutils.getParametersValue(parameters, ALGORITHM, OriginatorPublicKey.defaultValues(ALGORITHM));\n this.publicKey = pvutils.getParametersValue(parameters, PUBLIC_KEY, OriginatorPublicKey.defaultValues(PUBLIC_KEY));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ALGORITHM:\n return new AlgorithmIdentifier();\n case PUBLIC_KEY:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case ALGORITHM:\n case PUBLIC_KEY:\n return (memberValue.isEqual(OriginatorPublicKey.defaultValues(memberName)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.algorithm || {}),\n new asn1js.BitString({ name: (names.publicKey || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$z);\n const asn1 = asn1js.compareSchema(schema, schema, OriginatorPublicKey.schema({\n names: {\n algorithm: {\n names: {\n blockName: ALGORITHM\n }\n },\n publicKey: PUBLIC_KEY\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.algorithm = new AlgorithmIdentifier({ schema: asn1.result.algorithm });\n this.publicKey = asn1.result.publicKey;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.algorithm.toSchema(),\n this.publicKey\n ]\n }));\n }\n toJSON() {\n return {\n algorithm: this.algorithm.toJSON(),\n publicKey: this.publicKey.toJSON(),\n };\n }\n}\nOriginatorPublicKey.CLASS_NAME = \"OriginatorPublicKey\";\n\nconst VARIANT$2 = \"variant\";\nconst VALUE$2 = \"value\";\nconst CLEAR_PROPS$y = [\n \"blockName\",\n];\nclass OriginatorIdentifierOrKey extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.variant = pvutils.getParametersValue(parameters, VARIANT$2, OriginatorIdentifierOrKey.defaultValues(VARIANT$2));\n if (VALUE$2 in parameters) {\n this.value = pvutils.getParametersValue(parameters, VALUE$2, OriginatorIdentifierOrKey.defaultValues(VALUE$2));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VARIANT$2:\n return (-1);\n case VALUE$2:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VARIANT$2:\n return (memberValue === (-1));\n case VALUE$2:\n return (Object.keys(memberValue).length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Choice({\n value: [\n IssuerAndSerialNumber.schema({\n names: {\n blockName: (names.blockName || EMPTY_STRING)\n }\n }),\n new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n name: (names.blockName || EMPTY_STRING)\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n name: (names.blockName || EMPTY_STRING),\n value: OriginatorPublicKey.schema().valueBlock.value\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$y);\n const asn1 = asn1js.compareSchema(schema, schema, OriginatorIdentifierOrKey.schema({\n names: {\n blockName: \"blockName\"\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (asn1.result.blockName.idBlock.tagClass === 1) {\n this.variant = 1;\n this.value = new IssuerAndSerialNumber({ schema: asn1.result.blockName });\n }\n else {\n if (asn1.result.blockName.idBlock.tagNumber === 0) {\n asn1.result.blockName.idBlock.tagClass = 1;\n asn1.result.blockName.idBlock.tagNumber = 4;\n this.variant = 2;\n this.value = asn1.result.blockName;\n }\n else {\n this.variant = 3;\n this.value = new OriginatorPublicKey({\n schema: new asn1js.Sequence({\n value: asn1.result.blockName.valueBlock.value\n })\n });\n }\n }\n }\n toSchema() {\n switch (this.variant) {\n case 1:\n return this.value.toSchema();\n case 2:\n this.value.idBlock.tagClass = 3;\n this.value.idBlock.tagNumber = 0;\n return this.value;\n case 3:\n {\n const _schema = this.value.toSchema();\n _schema.idBlock.tagClass = 3;\n _schema.idBlock.tagNumber = 1;\n return _schema;\n }\n default:\n return new asn1js.Any();\n }\n }\n toJSON() {\n const res = {\n variant: this.variant\n };\n if ((this.variant === 1) || (this.variant === 2) || (this.variant === 3)) {\n res.value = this.value.toJSON();\n }\n return res;\n }\n}\nOriginatorIdentifierOrKey.CLASS_NAME = \"OriginatorIdentifierOrKey\";\n\nconst KEY_ATTR_ID = \"keyAttrId\";\nconst KEY_ATTR = \"keyAttr\";\nconst CLEAR_PROPS$x = [\n KEY_ATTR_ID,\n KEY_ATTR,\n];\nclass OtherKeyAttribute extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.keyAttrId = pvutils.getParametersValue(parameters, KEY_ATTR_ID, OtherKeyAttribute.defaultValues(KEY_ATTR_ID));\n if (KEY_ATTR in parameters) {\n this.keyAttr = pvutils.getParametersValue(parameters, KEY_ATTR, OtherKeyAttribute.defaultValues(KEY_ATTR));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case KEY_ATTR_ID:\n return EMPTY_STRING;\n case KEY_ATTR:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case KEY_ATTR_ID:\n return (typeof memberValue === \"string\" && memberValue === EMPTY_STRING);\n case KEY_ATTR:\n return (Object.keys(memberValue).length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n optional: (names.optional || true),\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.keyAttrId || EMPTY_STRING) }),\n new asn1js.Any({\n optional: true,\n name: (names.keyAttr || EMPTY_STRING)\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$x);\n const asn1 = asn1js.compareSchema(schema, schema, OtherKeyAttribute.schema({\n names: {\n keyAttrId: KEY_ATTR_ID,\n keyAttr: KEY_ATTR\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.keyAttrId = asn1.result.keyAttrId.valueBlock.toString();\n if (KEY_ATTR in asn1.result) {\n this.keyAttr = asn1.result.keyAttr;\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.keyAttrId }));\n if (KEY_ATTR in this) {\n outputArray.push(this.keyAttr);\n }\n return (new asn1js.Sequence({\n value: outputArray,\n }));\n }\n toJSON() {\n const res = {\n keyAttrId: this.keyAttrId\n };\n if (KEY_ATTR in this) {\n res.keyAttr = this.keyAttr.toJSON();\n }\n return res;\n }\n}\nOtherKeyAttribute.CLASS_NAME = \"OtherKeyAttribute\";\n\nconst SUBJECT_KEY_IDENTIFIER = \"subjectKeyIdentifier\";\nconst DATE$1 = \"date\";\nconst OTHER$1 = \"other\";\nconst CLEAR_PROPS$w = [\n SUBJECT_KEY_IDENTIFIER,\n DATE$1,\n OTHER$1,\n];\nclass RecipientKeyIdentifier extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.subjectKeyIdentifier = pvutils.getParametersValue(parameters, SUBJECT_KEY_IDENTIFIER, RecipientKeyIdentifier.defaultValues(SUBJECT_KEY_IDENTIFIER));\n if (DATE$1 in parameters) {\n this.date = pvutils.getParametersValue(parameters, DATE$1, RecipientKeyIdentifier.defaultValues(DATE$1));\n }\n if (OTHER$1 in parameters) {\n this.other = pvutils.getParametersValue(parameters, OTHER$1, RecipientKeyIdentifier.defaultValues(OTHER$1));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case SUBJECT_KEY_IDENTIFIER:\n return new asn1js.OctetString();\n case DATE$1:\n return new asn1js.GeneralizedTime();\n case OTHER$1:\n return new OtherKeyAttribute();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case SUBJECT_KEY_IDENTIFIER:\n return (memberValue.isEqual(RecipientKeyIdentifier.defaultValues(SUBJECT_KEY_IDENTIFIER)));\n case DATE$1:\n return ((memberValue.year === 0) &&\n (memberValue.month === 0) &&\n (memberValue.day === 0) &&\n (memberValue.hour === 0) &&\n (memberValue.minute === 0) &&\n (memberValue.second === 0) &&\n (memberValue.millisecond === 0));\n case OTHER$1:\n return ((memberValue.keyAttrId === EMPTY_STRING) && ((\"keyAttr\" in memberValue) === false));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.OctetString({ name: (names.subjectKeyIdentifier || EMPTY_STRING) }),\n new asn1js.GeneralizedTime({\n optional: true,\n name: (names.date || EMPTY_STRING)\n }),\n OtherKeyAttribute.schema(names.other || {})\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$w);\n const asn1 = asn1js.compareSchema(schema, schema, RecipientKeyIdentifier.schema({\n names: {\n subjectKeyIdentifier: SUBJECT_KEY_IDENTIFIER,\n date: DATE$1,\n other: {\n names: {\n blockName: OTHER$1\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.subjectKeyIdentifier = asn1.result.subjectKeyIdentifier;\n if (DATE$1 in asn1.result)\n this.date = asn1.result.date;\n if (OTHER$1 in asn1.result)\n this.other = new OtherKeyAttribute({ schema: asn1.result.other });\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.subjectKeyIdentifier);\n if (this.date) {\n outputArray.push(this.date);\n }\n if (this.other) {\n outputArray.push(this.other.toSchema());\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n subjectKeyIdentifier: this.subjectKeyIdentifier.toJSON()\n };\n if (this.date) {\n res.date = this.date.toJSON();\n }\n if (this.other) {\n res.other = this.other.toJSON();\n }\n return res;\n }\n}\nRecipientKeyIdentifier.CLASS_NAME = \"RecipientKeyIdentifier\";\n\nconst VARIANT$1 = \"variant\";\nconst VALUE$1 = \"value\";\nconst CLEAR_PROPS$v = [\n \"blockName\",\n];\nclass KeyAgreeRecipientIdentifier extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.variant = pvutils.getParametersValue(parameters, VARIANT$1, KeyAgreeRecipientIdentifier.defaultValues(VARIANT$1));\n this.value = pvutils.getParametersValue(parameters, VALUE$1, KeyAgreeRecipientIdentifier.defaultValues(VALUE$1));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VARIANT$1:\n return (-1);\n case VALUE$1:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VARIANT$1:\n return (memberValue === (-1));\n case VALUE$1:\n return (Object.keys(memberValue).length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Choice({\n value: [\n IssuerAndSerialNumber.schema(names.issuerAndSerialNumber || {\n names: {\n blockName: (names.blockName || EMPTY_STRING)\n }\n }),\n new asn1js.Constructed({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: RecipientKeyIdentifier.schema(names.rKeyId || {\n names: {\n blockName: (names.blockName || EMPTY_STRING)\n }\n }).valueBlock.value\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$v);\n const asn1 = asn1js.compareSchema(schema, schema, KeyAgreeRecipientIdentifier.schema({\n names: {\n blockName: \"blockName\"\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (asn1.result.blockName.idBlock.tagClass === 1) {\n this.variant = 1;\n this.value = new IssuerAndSerialNumber({ schema: asn1.result.blockName });\n }\n else {\n this.variant = 2;\n this.value = new RecipientKeyIdentifier({\n schema: new asn1js.Sequence({\n value: asn1.result.blockName.valueBlock.value\n })\n });\n }\n }\n toSchema() {\n switch (this.variant) {\n case 1:\n return this.value.toSchema();\n case 2:\n return new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.value.toSchema().valueBlock.value\n });\n default:\n return new asn1js.Any();\n }\n }\n toJSON() {\n const res = {\n variant: this.variant,\n };\n if ((this.variant === 1) || (this.variant === 2)) {\n res.value = this.value.toJSON();\n }\n return res;\n }\n}\nKeyAgreeRecipientIdentifier.CLASS_NAME = \"KeyAgreeRecipientIdentifier\";\n\nconst RID = \"rid\";\nconst ENCRYPTED_KEY$2 = \"encryptedKey\";\nconst CLEAR_PROPS$u = [\n RID,\n ENCRYPTED_KEY$2,\n];\nclass RecipientEncryptedKey extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.rid = pvutils.getParametersValue(parameters, RID, RecipientEncryptedKey.defaultValues(RID));\n this.encryptedKey = pvutils.getParametersValue(parameters, ENCRYPTED_KEY$2, RecipientEncryptedKey.defaultValues(ENCRYPTED_KEY$2));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case RID:\n return new KeyAgreeRecipientIdentifier();\n case ENCRYPTED_KEY$2:\n return new asn1js.OctetString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case RID:\n return ((memberValue.variant === (-1)) && ((\"value\" in memberValue) === false));\n case ENCRYPTED_KEY$2:\n return (memberValue.isEqual(RecipientEncryptedKey.defaultValues(ENCRYPTED_KEY$2)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n KeyAgreeRecipientIdentifier.schema(names.rid || {}),\n new asn1js.OctetString({ name: (names.encryptedKey || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$u);\n const asn1 = asn1js.compareSchema(schema, schema, RecipientEncryptedKey.schema({\n names: {\n rid: {\n names: {\n blockName: RID\n }\n },\n encryptedKey: ENCRYPTED_KEY$2\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.rid = new KeyAgreeRecipientIdentifier({ schema: asn1.result.rid });\n this.encryptedKey = asn1.result.encryptedKey;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.rid.toSchema(),\n this.encryptedKey\n ]\n }));\n }\n toJSON() {\n return {\n rid: this.rid.toJSON(),\n encryptedKey: this.encryptedKey.toJSON(),\n };\n }\n}\nRecipientEncryptedKey.CLASS_NAME = \"RecipientEncryptedKey\";\n\nconst ENCRYPTED_KEYS = \"encryptedKeys\";\nconst RECIPIENT_ENCRYPTED_KEYS = \"RecipientEncryptedKeys\";\nconst CLEAR_PROPS$t = [\n RECIPIENT_ENCRYPTED_KEYS,\n];\nclass RecipientEncryptedKeys extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.encryptedKeys = pvutils.getParametersValue(parameters, ENCRYPTED_KEYS, RecipientEncryptedKeys.defaultValues(ENCRYPTED_KEYS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ENCRYPTED_KEYS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case ENCRYPTED_KEYS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.RecipientEncryptedKeys || EMPTY_STRING),\n value: RecipientEncryptedKey.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$t);\n const asn1 = asn1js.compareSchema(schema, schema, RecipientEncryptedKeys.schema({\n names: {\n RecipientEncryptedKeys: RECIPIENT_ENCRYPTED_KEYS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.encryptedKeys = Array.from(asn1.result.RecipientEncryptedKeys, element => new RecipientEncryptedKey({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.encryptedKeys, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n encryptedKeys: Array.from(this.encryptedKeys, o => o.toJSON())\n };\n }\n}\nRecipientEncryptedKeys.CLASS_NAME = \"RecipientEncryptedKeys\";\n\nconst VERSION$b = \"version\";\nconst ORIGINATOR = \"originator\";\nconst UKM = \"ukm\";\nconst KEY_ENCRYPTION_ALGORITHM$2 = \"keyEncryptionAlgorithm\";\nconst RECIPIENT_ENCRYPTED_KEY = \"recipientEncryptedKeys\";\nconst RECIPIENT_CERTIFICATE = \"recipientCertificate\";\nconst RECIPIENT_PUBLIC_KEY = \"recipientPublicKey\";\nconst CLEAR_PROPS$s = [\n VERSION$b,\n ORIGINATOR,\n UKM,\n KEY_ENCRYPTION_ALGORITHM$2,\n RECIPIENT_ENCRYPTED_KEY,\n];\nclass KeyAgreeRecipientInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$b, KeyAgreeRecipientInfo.defaultValues(VERSION$b));\n this.originator = pvutils.getParametersValue(parameters, ORIGINATOR, KeyAgreeRecipientInfo.defaultValues(ORIGINATOR));\n if (UKM in parameters) {\n this.ukm = pvutils.getParametersValue(parameters, UKM, KeyAgreeRecipientInfo.defaultValues(UKM));\n }\n this.keyEncryptionAlgorithm = pvutils.getParametersValue(parameters, KEY_ENCRYPTION_ALGORITHM$2, KeyAgreeRecipientInfo.defaultValues(KEY_ENCRYPTION_ALGORITHM$2));\n this.recipientEncryptedKeys = pvutils.getParametersValue(parameters, RECIPIENT_ENCRYPTED_KEY, KeyAgreeRecipientInfo.defaultValues(RECIPIENT_ENCRYPTED_KEY));\n this.recipientCertificate = pvutils.getParametersValue(parameters, RECIPIENT_CERTIFICATE, KeyAgreeRecipientInfo.defaultValues(RECIPIENT_CERTIFICATE));\n this.recipientPublicKey = pvutils.getParametersValue(parameters, RECIPIENT_PUBLIC_KEY, KeyAgreeRecipientInfo.defaultValues(RECIPIENT_PUBLIC_KEY));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$b:\n return 0;\n case ORIGINATOR:\n return new OriginatorIdentifierOrKey();\n case UKM:\n return new asn1js.OctetString();\n case KEY_ENCRYPTION_ALGORITHM$2:\n return new AlgorithmIdentifier();\n case RECIPIENT_ENCRYPTED_KEY:\n return new RecipientEncryptedKeys();\n case RECIPIENT_CERTIFICATE:\n return new Certificate();\n case RECIPIENT_PUBLIC_KEY:\n return null;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$b:\n return (memberValue === 0);\n case ORIGINATOR:\n return ((memberValue.variant === (-1)) && ((\"value\" in memberValue) === false));\n case UKM:\n return (memberValue.isEqual(KeyAgreeRecipientInfo.defaultValues(UKM)));\n case KEY_ENCRYPTION_ALGORITHM$2:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case RECIPIENT_ENCRYPTED_KEY:\n return (memberValue.encryptedKeys.length === 0);\n case RECIPIENT_CERTIFICATE:\n return false;\n case RECIPIENT_PUBLIC_KEY:\n return false;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: names.blockName || EMPTY_STRING,\n value: [\n new asn1js.Integer({ name: names.version || EMPTY_STRING }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n OriginatorIdentifierOrKey.schema(names.originator || {})\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [new asn1js.OctetString({ name: names.ukm || EMPTY_STRING })]\n }),\n AlgorithmIdentifier.schema(names.keyEncryptionAlgorithm || {}),\n RecipientEncryptedKeys.schema(names.recipientEncryptedKeys || {})\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$s);\n const asn1 = asn1js.compareSchema(schema, schema, KeyAgreeRecipientInfo.schema({\n names: {\n version: VERSION$b,\n originator: {\n names: {\n blockName: ORIGINATOR\n }\n },\n ukm: UKM,\n keyEncryptionAlgorithm: {\n names: {\n blockName: KEY_ENCRYPTION_ALGORITHM$2\n }\n },\n recipientEncryptedKeys: {\n names: {\n blockName: RECIPIENT_ENCRYPTED_KEY\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.originator = new OriginatorIdentifierOrKey({ schema: asn1.result.originator });\n if (UKM in asn1.result)\n this.ukm = asn1.result.ukm;\n this.keyEncryptionAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.keyEncryptionAlgorithm });\n this.recipientEncryptedKeys = new RecipientEncryptedKeys({ schema: asn1.result.recipientEncryptedKeys });\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.originator.toSchema()]\n }));\n if (this.ukm) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [this.ukm]\n }));\n }\n outputArray.push(this.keyEncryptionAlgorithm.toSchema());\n outputArray.push(this.recipientEncryptedKeys.toSchema());\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n version: this.version,\n originator: this.originator.toJSON(),\n keyEncryptionAlgorithm: this.keyEncryptionAlgorithm.toJSON(),\n recipientEncryptedKeys: this.recipientEncryptedKeys.toJSON(),\n };\n if (this.ukm) {\n res.ukm = this.ukm.toJSON();\n }\n return res;\n }\n}\nKeyAgreeRecipientInfo.CLASS_NAME = \"KeyAgreeRecipientInfo\";\n\nconst KEY_IDENTIFIER = \"keyIdentifier\";\nconst DATE = \"date\";\nconst OTHER = \"other\";\nconst CLEAR_PROPS$r = [\n KEY_IDENTIFIER,\n DATE,\n OTHER,\n];\nclass KEKIdentifier extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.keyIdentifier = pvutils.getParametersValue(parameters, KEY_IDENTIFIER, KEKIdentifier.defaultValues(KEY_IDENTIFIER));\n if (DATE in parameters) {\n this.date = pvutils.getParametersValue(parameters, DATE, KEKIdentifier.defaultValues(DATE));\n }\n if (OTHER in parameters) {\n this.other = pvutils.getParametersValue(parameters, OTHER, KEKIdentifier.defaultValues(OTHER));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case KEY_IDENTIFIER:\n return new asn1js.OctetString();\n case DATE:\n return new asn1js.GeneralizedTime();\n case OTHER:\n return new OtherKeyAttribute();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case KEY_IDENTIFIER:\n return (memberValue.isEqual(KEKIdentifier.defaultValues(KEY_IDENTIFIER)));\n case DATE:\n return ((memberValue.year === 0) &&\n (memberValue.month === 0) &&\n (memberValue.day === 0) &&\n (memberValue.hour === 0) &&\n (memberValue.minute === 0) &&\n (memberValue.second === 0) &&\n (memberValue.millisecond === 0));\n case OTHER:\n return ((memberValue.compareWithDefault(\"keyAttrId\", memberValue.keyAttrId)) &&\n ((\"keyAttr\" in memberValue) === false));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.OctetString({ name: (names.keyIdentifier || EMPTY_STRING) }),\n new asn1js.GeneralizedTime({\n optional: true,\n name: (names.date || EMPTY_STRING)\n }),\n OtherKeyAttribute.schema(names.other || {})\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$r);\n const asn1 = asn1js.compareSchema(schema, schema, KEKIdentifier.schema({\n names: {\n keyIdentifier: KEY_IDENTIFIER,\n date: DATE,\n other: {\n names: {\n blockName: OTHER\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.keyIdentifier = asn1.result.keyIdentifier;\n if (DATE in asn1.result)\n this.date = asn1.result.date;\n if (OTHER in asn1.result)\n this.other = new OtherKeyAttribute({ schema: asn1.result.other });\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.keyIdentifier);\n if (this.date) {\n outputArray.push(this.date);\n }\n if (this.other) {\n outputArray.push(this.other.toSchema());\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n keyIdentifier: this.keyIdentifier.toJSON()\n };\n if (this.date) {\n res.date = this.date;\n }\n if (this.other) {\n res.other = this.other.toJSON();\n }\n return res;\n }\n}\nKEKIdentifier.CLASS_NAME = \"KEKIdentifier\";\n\nconst VERSION$a = \"version\";\nconst KEK_ID = \"kekid\";\nconst KEY_ENCRYPTION_ALGORITHM$1 = \"keyEncryptionAlgorithm\";\nconst ENCRYPTED_KEY$1 = \"encryptedKey\";\nconst PER_DEFINED_KEK = \"preDefinedKEK\";\nconst CLEAR_PROPS$q = [\n VERSION$a,\n KEK_ID,\n KEY_ENCRYPTION_ALGORITHM$1,\n ENCRYPTED_KEY$1,\n];\nclass KEKRecipientInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$a, KEKRecipientInfo.defaultValues(VERSION$a));\n this.kekid = pvutils.getParametersValue(parameters, KEK_ID, KEKRecipientInfo.defaultValues(KEK_ID));\n this.keyEncryptionAlgorithm = pvutils.getParametersValue(parameters, KEY_ENCRYPTION_ALGORITHM$1, KEKRecipientInfo.defaultValues(KEY_ENCRYPTION_ALGORITHM$1));\n this.encryptedKey = pvutils.getParametersValue(parameters, ENCRYPTED_KEY$1, KEKRecipientInfo.defaultValues(ENCRYPTED_KEY$1));\n this.preDefinedKEK = pvutils.getParametersValue(parameters, PER_DEFINED_KEK, KEKRecipientInfo.defaultValues(PER_DEFINED_KEK));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$a:\n return 0;\n case KEK_ID:\n return new KEKIdentifier();\n case KEY_ENCRYPTION_ALGORITHM$1:\n return new AlgorithmIdentifier();\n case ENCRYPTED_KEY$1:\n return new asn1js.OctetString();\n case PER_DEFINED_KEK:\n return EMPTY_BUFFER;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case \"KEKRecipientInfo\":\n return (memberValue === KEKRecipientInfo.defaultValues(VERSION$a));\n case KEK_ID:\n return ((memberValue.compareWithDefault(\"keyIdentifier\", memberValue.keyIdentifier)) &&\n ((\"date\" in memberValue) === false) &&\n ((\"other\" in memberValue) === false));\n case KEY_ENCRYPTION_ALGORITHM$1:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case ENCRYPTED_KEY$1:\n return (memberValue.isEqual(KEKRecipientInfo.defaultValues(ENCRYPTED_KEY$1)));\n case PER_DEFINED_KEK:\n return (memberValue.byteLength === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n KEKIdentifier.schema(names.kekid || {}),\n AlgorithmIdentifier.schema(names.keyEncryptionAlgorithm || {}),\n new asn1js.OctetString({ name: (names.encryptedKey || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$q);\n const asn1 = asn1js.compareSchema(schema, schema, KEKRecipientInfo.schema({\n names: {\n version: VERSION$a,\n kekid: {\n names: {\n blockName: KEK_ID\n }\n },\n keyEncryptionAlgorithm: {\n names: {\n blockName: KEY_ENCRYPTION_ALGORITHM$1\n }\n },\n encryptedKey: ENCRYPTED_KEY$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.kekid = new KEKIdentifier({ schema: asn1.result.kekid });\n this.keyEncryptionAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.keyEncryptionAlgorithm });\n this.encryptedKey = asn1.result.encryptedKey;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.Integer({ value: this.version }),\n this.kekid.toSchema(),\n this.keyEncryptionAlgorithm.toSchema(),\n this.encryptedKey\n ]\n }));\n }\n toJSON() {\n return {\n version: this.version,\n kekid: this.kekid.toJSON(),\n keyEncryptionAlgorithm: this.keyEncryptionAlgorithm.toJSON(),\n encryptedKey: this.encryptedKey.toJSON(),\n };\n }\n}\nKEKRecipientInfo.CLASS_NAME = \"KEKRecipientInfo\";\n\nconst VERSION$9 = \"version\";\nconst KEY_DERIVATION_ALGORITHM = \"keyDerivationAlgorithm\";\nconst KEY_ENCRYPTION_ALGORITHM = \"keyEncryptionAlgorithm\";\nconst ENCRYPTED_KEY = \"encryptedKey\";\nconst PASSWORD = \"password\";\nconst CLEAR_PROPS$p = [\n VERSION$9,\n KEY_DERIVATION_ALGORITHM,\n KEY_ENCRYPTION_ALGORITHM,\n ENCRYPTED_KEY\n];\nclass PasswordRecipientinfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$9, PasswordRecipientinfo.defaultValues(VERSION$9));\n if (KEY_DERIVATION_ALGORITHM in parameters) {\n this.keyDerivationAlgorithm = pvutils.getParametersValue(parameters, KEY_DERIVATION_ALGORITHM, PasswordRecipientinfo.defaultValues(KEY_DERIVATION_ALGORITHM));\n }\n this.keyEncryptionAlgorithm = pvutils.getParametersValue(parameters, KEY_ENCRYPTION_ALGORITHM, PasswordRecipientinfo.defaultValues(KEY_ENCRYPTION_ALGORITHM));\n this.encryptedKey = pvutils.getParametersValue(parameters, ENCRYPTED_KEY, PasswordRecipientinfo.defaultValues(ENCRYPTED_KEY));\n this.password = pvutils.getParametersValue(parameters, PASSWORD, PasswordRecipientinfo.defaultValues(PASSWORD));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$9:\n return (-1);\n case KEY_DERIVATION_ALGORITHM:\n return new AlgorithmIdentifier();\n case KEY_ENCRYPTION_ALGORITHM:\n return new AlgorithmIdentifier();\n case ENCRYPTED_KEY:\n return new asn1js.OctetString();\n case PASSWORD:\n return EMPTY_BUFFER;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$9:\n return (memberValue === (-1));\n case KEY_DERIVATION_ALGORITHM:\n case KEY_ENCRYPTION_ALGORITHM:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case ENCRYPTED_KEY:\n return (memberValue.isEqual(PasswordRecipientinfo.defaultValues(ENCRYPTED_KEY)));\n case PASSWORD:\n return (memberValue.byteLength === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n new asn1js.Constructed({\n name: (names.keyDerivationAlgorithm || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: AlgorithmIdentifier.schema().valueBlock.value\n }),\n AlgorithmIdentifier.schema(names.keyEncryptionAlgorithm || {}),\n new asn1js.OctetString({ name: (names.encryptedKey || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$p);\n const asn1 = asn1js.compareSchema(schema, schema, PasswordRecipientinfo.schema({\n names: {\n version: VERSION$9,\n keyDerivationAlgorithm: KEY_DERIVATION_ALGORITHM,\n keyEncryptionAlgorithm: {\n names: {\n blockName: KEY_ENCRYPTION_ALGORITHM\n }\n },\n encryptedKey: ENCRYPTED_KEY\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n if (KEY_DERIVATION_ALGORITHM in asn1.result) {\n this.keyDerivationAlgorithm = new AlgorithmIdentifier({\n schema: new asn1js.Sequence({\n value: asn1.result.keyDerivationAlgorithm.valueBlock.value\n })\n });\n }\n this.keyEncryptionAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.keyEncryptionAlgorithm });\n this.encryptedKey = asn1.result.encryptedKey;\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n if (this.keyDerivationAlgorithm) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.keyDerivationAlgorithm.toSchema().valueBlock.value\n }));\n }\n outputArray.push(this.keyEncryptionAlgorithm.toSchema());\n outputArray.push(this.encryptedKey);\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n version: this.version,\n keyEncryptionAlgorithm: this.keyEncryptionAlgorithm.toJSON(),\n encryptedKey: this.encryptedKey.toJSON(),\n };\n if (this.keyDerivationAlgorithm) {\n res.keyDerivationAlgorithm = this.keyDerivationAlgorithm.toJSON();\n }\n return res;\n }\n}\nPasswordRecipientinfo.CLASS_NAME = \"PasswordRecipientInfo\";\n\nconst ORI_TYPE = \"oriType\";\nconst ORI_VALUE = \"oriValue\";\nconst CLEAR_PROPS$o = [\n ORI_TYPE,\n ORI_VALUE\n];\nclass OtherRecipientInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.oriType = pvutils.getParametersValue(parameters, ORI_TYPE, OtherRecipientInfo.defaultValues(ORI_TYPE));\n this.oriValue = pvutils.getParametersValue(parameters, ORI_VALUE, OtherRecipientInfo.defaultValues(ORI_VALUE));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ORI_TYPE:\n return EMPTY_STRING;\n case ORI_VALUE:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case ORI_TYPE:\n return (memberValue === EMPTY_STRING);\n case ORI_VALUE:\n return (Object.keys(memberValue).length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.oriType || EMPTY_STRING) }),\n new asn1js.Any({ name: (names.oriValue || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$o);\n const asn1 = asn1js.compareSchema(schema, schema, OtherRecipientInfo.schema({\n names: {\n oriType: ORI_TYPE,\n oriValue: ORI_VALUE\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.oriType = asn1.result.oriType.valueBlock.toString();\n this.oriValue = asn1.result.oriValue;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.oriType }),\n this.oriValue\n ]\n }));\n }\n toJSON() {\n const res = {\n oriType: this.oriType\n };\n if (!OtherRecipientInfo.compareWithDefault(ORI_VALUE, this.oriValue)) {\n res.oriValue = this.oriValue.toJSON();\n }\n return res;\n }\n}\nOtherRecipientInfo.CLASS_NAME = \"OtherRecipientInfo\";\n\nconst VARIANT = \"variant\";\nconst VALUE = \"value\";\nconst CLEAR_PROPS$n = [\n \"blockName\"\n];\nclass RecipientInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.variant = pvutils.getParametersValue(parameters, VARIANT, RecipientInfo.defaultValues(VARIANT));\n if (VALUE in parameters) {\n this.value = pvutils.getParametersValue(parameters, VALUE, RecipientInfo.defaultValues(VALUE));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VARIANT:\n return (-1);\n case VALUE:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VARIANT:\n return (memberValue === RecipientInfo.defaultValues(memberName));\n case VALUE:\n return (Object.keys(memberValue).length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Choice({\n value: [\n KeyTransRecipientInfo.schema({\n names: {\n blockName: (names.blockName || EMPTY_STRING)\n }\n }),\n new asn1js.Constructed({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: KeyAgreeRecipientInfo.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: KEKRecipientInfo.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n value: PasswordRecipientinfo.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 4\n },\n value: OtherRecipientInfo.schema().valueBlock.value\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$n);\n const asn1 = asn1js.compareSchema(schema, schema, RecipientInfo.schema({\n names: {\n blockName: \"blockName\"\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (asn1.result.blockName.idBlock.tagClass === 1) {\n this.variant = 1;\n this.value = new KeyTransRecipientInfo({ schema: asn1.result.blockName });\n }\n else {\n const blockSequence = new asn1js.Sequence({\n value: asn1.result.blockName.valueBlock.value\n });\n switch (asn1.result.blockName.idBlock.tagNumber) {\n case 1:\n this.variant = 2;\n this.value = new KeyAgreeRecipientInfo({ schema: blockSequence });\n break;\n case 2:\n this.variant = 3;\n this.value = new KEKRecipientInfo({ schema: blockSequence });\n break;\n case 3:\n this.variant = 4;\n this.value = new PasswordRecipientinfo({ schema: blockSequence });\n break;\n case 4:\n this.variant = 5;\n this.value = new OtherRecipientInfo({ schema: blockSequence });\n break;\n default:\n throw new Error(\"Incorrect structure of RecipientInfo block\");\n }\n }\n }\n toSchema() {\n ParameterError.assertEmpty(this.value, \"value\", \"RecipientInfo\");\n const _schema = this.value.toSchema();\n switch (this.variant) {\n case 1:\n return _schema;\n case 2:\n case 3:\n case 4:\n _schema.idBlock.tagClass = 3;\n _schema.idBlock.tagNumber = (this.variant - 1);\n return _schema;\n default:\n return new asn1js.Any();\n }\n }\n toJSON() {\n const res = {\n variant: this.variant\n };\n if (this.value && (this.variant >= 1) && (this.variant <= 4)) {\n res.value = this.value.toJSON();\n }\n return res;\n }\n}\nRecipientInfo.CLASS_NAME = \"RecipientInfo\";\n\nconst HASH_ALGORITHM$2 = \"hashAlgorithm\";\nconst MASK_GEN_ALGORITHM = \"maskGenAlgorithm\";\nconst P_SOURCE_ALGORITHM = \"pSourceAlgorithm\";\nconst CLEAR_PROPS$m = [\n HASH_ALGORITHM$2,\n MASK_GEN_ALGORITHM,\n P_SOURCE_ALGORITHM\n];\nclass RSAESOAEPParams extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.hashAlgorithm = pvutils.getParametersValue(parameters, HASH_ALGORITHM$2, RSAESOAEPParams.defaultValues(HASH_ALGORITHM$2));\n this.maskGenAlgorithm = pvutils.getParametersValue(parameters, MASK_GEN_ALGORITHM, RSAESOAEPParams.defaultValues(MASK_GEN_ALGORITHM));\n this.pSourceAlgorithm = pvutils.getParametersValue(parameters, P_SOURCE_ALGORITHM, RSAESOAEPParams.defaultValues(P_SOURCE_ALGORITHM));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case HASH_ALGORITHM$2:\n return new AlgorithmIdentifier({\n algorithmId: \"1.3.14.3.2.26\",\n algorithmParams: new asn1js.Null()\n });\n case MASK_GEN_ALGORITHM:\n return new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.1.8\",\n algorithmParams: (new AlgorithmIdentifier({\n algorithmId: \"1.3.14.3.2.26\",\n algorithmParams: new asn1js.Null()\n })).toSchema()\n });\n case P_SOURCE_ALGORITHM:\n return new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.1.9\",\n algorithmParams: new asn1js.OctetString({ valueHex: (new Uint8Array([0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09])).buffer })\n });\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n optional: true,\n value: [AlgorithmIdentifier.schema(names.hashAlgorithm || {})]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n optional: true,\n value: [AlgorithmIdentifier.schema(names.maskGenAlgorithm || {})]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n optional: true,\n value: [AlgorithmIdentifier.schema(names.pSourceAlgorithm || {})]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$m);\n const asn1 = asn1js.compareSchema(schema, schema, RSAESOAEPParams.schema({\n names: {\n hashAlgorithm: {\n names: {\n blockName: HASH_ALGORITHM$2\n }\n },\n maskGenAlgorithm: {\n names: {\n blockName: MASK_GEN_ALGORITHM\n }\n },\n pSourceAlgorithm: {\n names: {\n blockName: P_SOURCE_ALGORITHM\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (HASH_ALGORITHM$2 in asn1.result)\n this.hashAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.hashAlgorithm });\n if (MASK_GEN_ALGORITHM in asn1.result)\n this.maskGenAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.maskGenAlgorithm });\n if (P_SOURCE_ALGORITHM in asn1.result)\n this.pSourceAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.pSourceAlgorithm });\n }\n toSchema() {\n const outputArray = [];\n if (!this.hashAlgorithm.isEqual(RSAESOAEPParams.defaultValues(HASH_ALGORITHM$2))) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.hashAlgorithm.toSchema()]\n }));\n }\n if (!this.maskGenAlgorithm.isEqual(RSAESOAEPParams.defaultValues(MASK_GEN_ALGORITHM))) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [this.maskGenAlgorithm.toSchema()]\n }));\n }\n if (!this.pSourceAlgorithm.isEqual(RSAESOAEPParams.defaultValues(P_SOURCE_ALGORITHM))) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [this.pSourceAlgorithm.toSchema()]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {};\n if (!this.hashAlgorithm.isEqual(RSAESOAEPParams.defaultValues(HASH_ALGORITHM$2))) {\n res.hashAlgorithm = this.hashAlgorithm.toJSON();\n }\n if (!this.maskGenAlgorithm.isEqual(RSAESOAEPParams.defaultValues(MASK_GEN_ALGORITHM))) {\n res.maskGenAlgorithm = this.maskGenAlgorithm.toJSON();\n }\n if (!this.pSourceAlgorithm.isEqual(RSAESOAEPParams.defaultValues(P_SOURCE_ALGORITHM))) {\n res.pSourceAlgorithm = this.pSourceAlgorithm.toJSON();\n }\n return res;\n }\n}\nRSAESOAEPParams.CLASS_NAME = \"RSAESOAEPParams\";\n\nconst KEY_INFO = \"keyInfo\";\nconst ENTITY_U_INFO = \"entityUInfo\";\nconst SUPP_PUB_INFO = \"suppPubInfo\";\nconst CLEAR_PROPS$l = [\n KEY_INFO,\n ENTITY_U_INFO,\n SUPP_PUB_INFO\n];\nclass ECCCMSSharedInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.keyInfo = pvutils.getParametersValue(parameters, KEY_INFO, ECCCMSSharedInfo.defaultValues(KEY_INFO));\n if (ENTITY_U_INFO in parameters) {\n this.entityUInfo = pvutils.getParametersValue(parameters, ENTITY_U_INFO, ECCCMSSharedInfo.defaultValues(ENTITY_U_INFO));\n }\n this.suppPubInfo = pvutils.getParametersValue(parameters, SUPP_PUB_INFO, ECCCMSSharedInfo.defaultValues(SUPP_PUB_INFO));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case KEY_INFO:\n return new AlgorithmIdentifier();\n case ENTITY_U_INFO:\n return new asn1js.OctetString();\n case SUPP_PUB_INFO:\n return new asn1js.OctetString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case KEY_INFO:\n case ENTITY_U_INFO:\n case SUPP_PUB_INFO:\n return (memberValue.isEqual(ECCCMSSharedInfo.defaultValues(memberName)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.keyInfo || {}),\n new asn1js.Constructed({\n name: (names.entityUInfo || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n optional: true,\n value: [new asn1js.OctetString()]\n }),\n new asn1js.Constructed({\n name: (names.suppPubInfo || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [new asn1js.OctetString()]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$l);\n const asn1 = asn1js.compareSchema(schema, schema, ECCCMSSharedInfo.schema({\n names: {\n keyInfo: {\n names: {\n blockName: KEY_INFO\n }\n },\n entityUInfo: ENTITY_U_INFO,\n suppPubInfo: SUPP_PUB_INFO\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.keyInfo = new AlgorithmIdentifier({ schema: asn1.result.keyInfo });\n if (ENTITY_U_INFO in asn1.result)\n this.entityUInfo = asn1.result.entityUInfo.valueBlock.value[0];\n this.suppPubInfo = asn1.result.suppPubInfo.valueBlock.value[0];\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.keyInfo.toSchema());\n if (this.entityUInfo) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.entityUInfo]\n }));\n }\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [this.suppPubInfo]\n }));\n return new asn1js.Sequence({\n value: outputArray\n });\n }\n toJSON() {\n const res = {\n keyInfo: this.keyInfo.toJSON(),\n suppPubInfo: this.suppPubInfo.toJSON(),\n };\n if (this.entityUInfo) {\n res.entityUInfo = this.entityUInfo.toJSON();\n }\n return res;\n }\n}\nECCCMSSharedInfo.CLASS_NAME = \"ECCCMSSharedInfo\";\n\nconst VERSION$8 = \"version\";\nconst ORIGINATOR_INFO = \"originatorInfo\";\nconst RECIPIENT_INFOS = \"recipientInfos\";\nconst ENCRYPTED_CONTENT_INFO = \"encryptedContentInfo\";\nconst UNPROTECTED_ATTRS = \"unprotectedAttrs\";\nconst CLEAR_PROPS$k = [\n VERSION$8,\n ORIGINATOR_INFO,\n RECIPIENT_INFOS,\n ENCRYPTED_CONTENT_INFO,\n UNPROTECTED_ATTRS\n];\nconst defaultEncryptionParams = {\n kdfAlgorithm: \"SHA-512\",\n kekEncryptionLength: 256\n};\nconst curveLengthByName = {\n \"P-256\": 256,\n \"P-384\": 384,\n \"P-521\": 528\n};\nclass EnvelopedData extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$8, EnvelopedData.defaultValues(VERSION$8));\n if (ORIGINATOR_INFO in parameters) {\n this.originatorInfo = pvutils.getParametersValue(parameters, ORIGINATOR_INFO, EnvelopedData.defaultValues(ORIGINATOR_INFO));\n }\n this.recipientInfos = pvutils.getParametersValue(parameters, RECIPIENT_INFOS, EnvelopedData.defaultValues(RECIPIENT_INFOS));\n this.encryptedContentInfo = pvutils.getParametersValue(parameters, ENCRYPTED_CONTENT_INFO, EnvelopedData.defaultValues(ENCRYPTED_CONTENT_INFO));\n if (UNPROTECTED_ATTRS in parameters) {\n this.unprotectedAttrs = pvutils.getParametersValue(parameters, UNPROTECTED_ATTRS, EnvelopedData.defaultValues(UNPROTECTED_ATTRS));\n }\n this.policy = {\n disableSplit: !!parameters.disableSplit,\n };\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$8:\n return 0;\n case ORIGINATOR_INFO:\n return new OriginatorInfo();\n case RECIPIENT_INFOS:\n return [];\n case ENCRYPTED_CONTENT_INFO:\n return new EncryptedContentInfo();\n case UNPROTECTED_ATTRS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$8:\n return (memberValue === EnvelopedData.defaultValues(memberName));\n case ORIGINATOR_INFO:\n return ((memberValue.certs.certificates.length === 0) && (memberValue.crls.crls.length === 0));\n case RECIPIENT_INFOS:\n case UNPROTECTED_ATTRS:\n return (memberValue.length === 0);\n case ENCRYPTED_CONTENT_INFO:\n return ((EncryptedContentInfo.compareWithDefault(\"contentType\", memberValue.contentType)) &&\n (EncryptedContentInfo.compareWithDefault(\"contentEncryptionAlgorithm\", memberValue.contentEncryptionAlgorithm) &&\n (EncryptedContentInfo.compareWithDefault(\"encryptedContent\", memberValue.encryptedContent))));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n new asn1js.Constructed({\n name: (names.originatorInfo || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: OriginatorInfo.schema().valueBlock.value\n }),\n new asn1js.Set({\n value: [\n new asn1js.Repeated({\n name: (names.recipientInfos || EMPTY_STRING),\n value: RecipientInfo.schema()\n })\n ]\n }),\n EncryptedContentInfo.schema(names.encryptedContentInfo || {}),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.Repeated({\n name: (names.unprotectedAttrs || EMPTY_STRING),\n value: Attribute.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$k);\n const asn1 = asn1js.compareSchema(schema, schema, EnvelopedData.schema({\n names: {\n version: VERSION$8,\n originatorInfo: ORIGINATOR_INFO,\n recipientInfos: RECIPIENT_INFOS,\n encryptedContentInfo: {\n names: {\n blockName: ENCRYPTED_CONTENT_INFO\n }\n },\n unprotectedAttrs: UNPROTECTED_ATTRS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n if (ORIGINATOR_INFO in asn1.result) {\n this.originatorInfo = new OriginatorInfo({\n schema: new asn1js.Sequence({\n value: asn1.result.originatorInfo.valueBlock.value\n })\n });\n }\n this.recipientInfos = Array.from(asn1.result.recipientInfos, o => new RecipientInfo({ schema: o }));\n this.encryptedContentInfo = new EncryptedContentInfo({ schema: asn1.result.encryptedContentInfo });\n if (UNPROTECTED_ATTRS in asn1.result)\n this.unprotectedAttrs = Array.from(asn1.result.unprotectedAttrs, o => new Attribute({ schema: o }));\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n if (this.originatorInfo) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.originatorInfo.toSchema().valueBlock.value\n }));\n }\n outputArray.push(new asn1js.Set({\n value: Array.from(this.recipientInfos, o => o.toSchema())\n }));\n outputArray.push(this.encryptedContentInfo.toSchema());\n if (this.unprotectedAttrs) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: Array.from(this.unprotectedAttrs, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n version: this.version,\n recipientInfos: Array.from(this.recipientInfos, o => o.toJSON()),\n encryptedContentInfo: this.encryptedContentInfo.toJSON(),\n };\n if (this.originatorInfo)\n res.originatorInfo = this.originatorInfo.toJSON();\n if (this.unprotectedAttrs)\n res.unprotectedAttrs = Array.from(this.unprotectedAttrs, o => o.toJSON());\n return res;\n }\n addRecipientByCertificate(certificate, parameters, variant, crypto = getCrypto(true)) {\n const encryptionParameters = Object.assign({ useOAEP: true, oaepHashAlgorithm: \"SHA-512\" }, defaultEncryptionParams, parameters || {});\n if (certificate.subjectPublicKeyInfo.algorithm.algorithmId.indexOf(\"1.2.840.113549\") !== (-1))\n variant = 1;\n else {\n if (certificate.subjectPublicKeyInfo.algorithm.algorithmId.indexOf(\"1.2.840.10045\") !== (-1))\n variant = 2;\n else\n throw new Error(`Unknown type of certificate's public key: ${certificate.subjectPublicKeyInfo.algorithm.algorithmId}`);\n }\n switch (variant) {\n case 1:\n {\n let algorithmId;\n let algorithmParams;\n if (encryptionParameters.useOAEP === true) {\n algorithmId = crypto.getOIDByAlgorithm({\n name: \"RSA-OAEP\"\n }, true, \"keyEncryptionAlgorithm\");\n const hashOID = crypto.getOIDByAlgorithm({\n name: encryptionParameters.oaepHashAlgorithm\n }, true, \"RSAES-OAEP-params\");\n const hashAlgorithm = new AlgorithmIdentifier({\n algorithmId: hashOID,\n algorithmParams: new asn1js.Null()\n });\n const rsaOAEPParams = new RSAESOAEPParams({\n hashAlgorithm,\n maskGenAlgorithm: new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.1.8\",\n algorithmParams: hashAlgorithm.toSchema()\n })\n });\n algorithmParams = rsaOAEPParams.toSchema();\n }\n else {\n algorithmId = crypto.getOIDByAlgorithm({\n name: \"RSAES-PKCS1-v1_5\"\n });\n if (algorithmId === EMPTY_STRING)\n throw new Error(\"Can not find OID for RSAES-PKCS1-v1_5\");\n algorithmParams = new asn1js.Null();\n }\n const keyInfo = new KeyTransRecipientInfo({\n version: 0,\n rid: new IssuerAndSerialNumber({\n issuer: certificate.issuer,\n serialNumber: certificate.serialNumber\n }),\n keyEncryptionAlgorithm: new AlgorithmIdentifier({\n algorithmId,\n algorithmParams\n }),\n recipientCertificate: certificate,\n });\n this.recipientInfos.push(new RecipientInfo({\n variant: 1,\n value: keyInfo\n }));\n }\n break;\n case 2:\n {\n const recipientIdentifier = new KeyAgreeRecipientIdentifier({\n variant: 1,\n value: new IssuerAndSerialNumber({\n issuer: certificate.issuer,\n serialNumber: certificate.serialNumber\n })\n });\n this._addKeyAgreeRecipientInfo(recipientIdentifier, encryptionParameters, { recipientCertificate: certificate }, crypto);\n }\n break;\n default:\n throw new Error(`Unknown \"variant\" value: ${variant}`);\n }\n return true;\n }\n addRecipientByPreDefinedData(preDefinedData, parameters = {}, variant, crypto = getCrypto(true)) {\n ArgumentError.assert(preDefinedData, \"preDefinedData\", \"ArrayBuffer\");\n if (!preDefinedData.byteLength) {\n throw new Error(\"Pre-defined data could have zero length\");\n }\n if (!parameters.keyIdentifier) {\n const keyIdentifierBuffer = new ArrayBuffer(16);\n const keyIdentifierView = new Uint8Array(keyIdentifierBuffer);\n crypto.getRandomValues(keyIdentifierView);\n parameters.keyIdentifier = keyIdentifierBuffer;\n }\n if (!parameters.hmacHashAlgorithm)\n parameters.hmacHashAlgorithm = \"SHA-512\";\n if (parameters.iterationCount === undefined) {\n parameters.iterationCount = 2048;\n }\n if (!parameters.keyEncryptionAlgorithm) {\n parameters.keyEncryptionAlgorithm = {\n name: \"AES-KW\",\n length: 256\n };\n }\n if (!parameters.keyEncryptionAlgorithmParams)\n parameters.keyEncryptionAlgorithmParams = new asn1js.Null();\n switch (variant) {\n case 1:\n {\n const kekOID = crypto.getOIDByAlgorithm(parameters.keyEncryptionAlgorithm, true, \"keyEncryptionAlgorithm\");\n const keyInfo = new KEKRecipientInfo({\n version: 4,\n kekid: new KEKIdentifier({\n keyIdentifier: new asn1js.OctetString({ valueHex: parameters.keyIdentifier })\n }),\n keyEncryptionAlgorithm: new AlgorithmIdentifier({\n algorithmId: kekOID,\n algorithmParams: parameters.keyEncryptionAlgorithmParams\n }),\n preDefinedKEK: preDefinedData\n });\n this.recipientInfos.push(new RecipientInfo({\n variant: 3,\n value: keyInfo\n }));\n }\n break;\n case 2:\n {\n const pbkdf2OID = crypto.getOIDByAlgorithm({ name: \"PBKDF2\" }, true, \"keyDerivationAlgorithm\");\n const saltBuffer = new ArrayBuffer(64);\n const saltView = new Uint8Array(saltBuffer);\n crypto.getRandomValues(saltView);\n const hmacOID = crypto.getOIDByAlgorithm({\n name: \"HMAC\",\n hash: {\n name: parameters.hmacHashAlgorithm\n }\n }, true, \"hmacHashAlgorithm\");\n const pbkdf2Params = new PBKDF2Params({\n salt: new asn1js.OctetString({ valueHex: saltBuffer }),\n iterationCount: parameters.iterationCount,\n prf: new AlgorithmIdentifier({\n algorithmId: hmacOID,\n algorithmParams: new asn1js.Null()\n })\n });\n const kekOID = crypto.getOIDByAlgorithm(parameters.keyEncryptionAlgorithm, true, \"keyEncryptionAlgorithm\");\n const keyInfo = new PasswordRecipientinfo({\n version: 0,\n keyDerivationAlgorithm: new AlgorithmIdentifier({\n algorithmId: pbkdf2OID,\n algorithmParams: pbkdf2Params.toSchema()\n }),\n keyEncryptionAlgorithm: new AlgorithmIdentifier({\n algorithmId: kekOID,\n algorithmParams: parameters.keyEncryptionAlgorithmParams\n }),\n password: preDefinedData\n });\n this.recipientInfos.push(new RecipientInfo({\n variant: 4,\n value: keyInfo\n }));\n }\n break;\n default:\n throw new Error(`Unknown value for \"variant\": ${variant}`);\n }\n }\n addRecipientByKeyIdentifier(key, keyId, parameters, crypto = getCrypto(true)) {\n const encryptionParameters = Object.assign({}, defaultEncryptionParams, parameters || {});\n const recipientIdentifier = new KeyAgreeRecipientIdentifier({\n variant: 2,\n value: new RecipientKeyIdentifier({\n subjectKeyIdentifier: new asn1js.OctetString({ valueHex: keyId }),\n })\n });\n this._addKeyAgreeRecipientInfo(recipientIdentifier, encryptionParameters, { recipientPublicKey: key }, crypto);\n }\n _addKeyAgreeRecipientInfo(recipientIdentifier, encryptionParameters, extraRecipientInfoParams, crypto = getCrypto(true)) {\n const encryptedKey = new RecipientEncryptedKey({\n rid: recipientIdentifier\n });\n const aesKWoid = crypto.getOIDByAlgorithm({\n name: \"AES-KW\",\n length: encryptionParameters.kekEncryptionLength\n }, true, \"keyEncryptionAlgorithm\");\n const aesKW = new AlgorithmIdentifier({\n algorithmId: aesKWoid,\n });\n const ecdhOID = crypto.getOIDByAlgorithm({\n name: \"ECDH\",\n kdf: encryptionParameters.kdfAlgorithm\n }, true, \"KeyAgreeRecipientInfo\");\n const ukmBuffer = new ArrayBuffer(64);\n const ukmView = new Uint8Array(ukmBuffer);\n crypto.getRandomValues(ukmView);\n const recipientInfoParams = {\n version: 3,\n ukm: new asn1js.OctetString({ valueHex: ukmBuffer }),\n keyEncryptionAlgorithm: new AlgorithmIdentifier({\n algorithmId: ecdhOID,\n algorithmParams: aesKW.toSchema()\n }),\n recipientEncryptedKeys: new RecipientEncryptedKeys({\n encryptedKeys: [encryptedKey]\n })\n };\n const keyInfo = new KeyAgreeRecipientInfo(Object.assign(recipientInfoParams, extraRecipientInfoParams));\n this.recipientInfos.push(new RecipientInfo({\n variant: 2,\n value: keyInfo\n }));\n }\n async encrypt(contentEncryptionAlgorithm, contentToEncrypt, crypto = getCrypto(true)) {\n const ivBuffer = new ArrayBuffer(16);\n const ivView = new Uint8Array(ivBuffer);\n crypto.getRandomValues(ivView);\n const contentView = new Uint8Array(contentToEncrypt);\n const contentEncryptionOID = crypto.getOIDByAlgorithm(contentEncryptionAlgorithm, true, \"contentEncryptionAlgorithm\");\n const sessionKey = await crypto.generateKey(contentEncryptionAlgorithm, true, [\"encrypt\"]);\n const encryptedContent = await crypto.encrypt({\n name: contentEncryptionAlgorithm.name,\n iv: ivView\n }, sessionKey, contentView);\n const exportedSessionKey = await crypto.exportKey(\"raw\", sessionKey);\n this.version = 2;\n this.encryptedContentInfo = new EncryptedContentInfo({\n disableSplit: this.policy.disableSplit,\n contentType: \"1.2.840.113549.1.7.1\",\n contentEncryptionAlgorithm: new AlgorithmIdentifier({\n algorithmId: contentEncryptionOID,\n algorithmParams: new asn1js.OctetString({ valueHex: ivBuffer })\n }),\n encryptedContent: new asn1js.OctetString({ valueHex: encryptedContent })\n });\n const SubKeyAgreeRecipientInfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n let recipientCurve;\n let recipientPublicKey;\n if (recipientInfo.recipientPublicKey) {\n recipientCurve = recipientInfo.recipientPublicKey.algorithm.namedCurve;\n recipientPublicKey = recipientInfo.recipientPublicKey;\n }\n else if (recipientInfo.recipientCertificate) {\n const curveObject = recipientInfo.recipientCertificate.subjectPublicKeyInfo.algorithm.algorithmParams;\n if (curveObject.constructor.blockName() !== asn1js.ObjectIdentifier.blockName())\n throw new Error(`Incorrect \"recipientCertificate\" for index ${index}`);\n const curveOID = curveObject.valueBlock.toString();\n switch (curveOID) {\n case \"1.2.840.10045.3.1.7\":\n recipientCurve = \"P-256\";\n break;\n case \"1.3.132.0.34\":\n recipientCurve = \"P-384\";\n break;\n case \"1.3.132.0.35\":\n recipientCurve = \"P-521\";\n break;\n default:\n throw new Error(`Incorrect curve OID for index ${index}`);\n }\n recipientPublicKey = await recipientInfo.recipientCertificate.getPublicKey({\n algorithm: {\n algorithm: {\n name: \"ECDH\",\n namedCurve: recipientCurve\n },\n usages: []\n }\n }, crypto);\n }\n else {\n throw new Error(\"Unsupported RecipientInfo\");\n }\n const recipientCurveLength = curveLengthByName[recipientCurve];\n const ecdhKeys = await crypto.generateKey({ name: \"ECDH\", namedCurve: recipientCurve }, true, [\"deriveBits\"]);\n const exportedECDHPublicKey = await crypto.exportKey(\"spki\", ecdhKeys.publicKey);\n const derivedBits = await crypto.deriveBits({\n name: \"ECDH\",\n public: recipientPublicKey\n }, ecdhKeys.privateKey, recipientCurveLength);\n const aesKWAlgorithm = new AlgorithmIdentifier({ schema: recipientInfo.keyEncryptionAlgorithm.algorithmParams });\n const kwAlgorithm = crypto.getAlgorithmByOID(aesKWAlgorithm.algorithmId, true, \"aesKWAlgorithm\");\n let kwLength = kwAlgorithm.length;\n const kwLengthBuffer = new ArrayBuffer(4);\n const kwLengthView = new Uint8Array(kwLengthBuffer);\n for (let j = 3; j >= 0; j--) {\n kwLengthView[j] = kwLength;\n kwLength >>= 8;\n }\n const eccInfo = new ECCCMSSharedInfo({\n keyInfo: new AlgorithmIdentifier({\n algorithmId: aesKWAlgorithm.algorithmId\n }),\n entityUInfo: recipientInfo.ukm,\n suppPubInfo: new asn1js.OctetString({ valueHex: kwLengthBuffer })\n });\n const encodedInfo = eccInfo.toSchema().toBER(false);\n const ecdhAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"ecdhAlgorithm\");\n const derivedKeyRaw = await kdf(ecdhAlgorithm.kdf, derivedBits, kwAlgorithm.length, encodedInfo, crypto);\n const awsKW = await crypto.importKey(\"raw\", derivedKeyRaw, { name: \"AES-KW\" }, true, [\"wrapKey\"]);\n const wrappedKey = await crypto.wrapKey(\"raw\", sessionKey, awsKW, { name: \"AES-KW\" });\n const originator = new OriginatorIdentifierOrKey();\n originator.variant = 3;\n originator.value = OriginatorPublicKey.fromBER(exportedECDHPublicKey);\n recipientInfo.originator = originator;\n recipientInfo.recipientEncryptedKeys.encryptedKeys[0].encryptedKey = new asn1js.OctetString({ valueHex: wrappedKey });\n return { ecdhPrivateKey: ecdhKeys.privateKey };\n };\n const SubKeyTransRecipientInfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n const algorithmParameters = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"keyEncryptionAlgorithm\");\n if (algorithmParameters.name === \"RSA-OAEP\") {\n const schema = recipientInfo.keyEncryptionAlgorithm.algorithmParams;\n const rsaOAEPParams = new RSAESOAEPParams({ schema });\n algorithmParameters.hash = crypto.getAlgorithmByOID(rsaOAEPParams.hashAlgorithm.algorithmId);\n if ((\"name\" in algorithmParameters.hash) === false)\n throw new Error(`Incorrect OID for hash algorithm: ${rsaOAEPParams.hashAlgorithm.algorithmId}`);\n }\n try {\n const publicKey = await recipientInfo.recipientCertificate.getPublicKey({\n algorithm: {\n algorithm: algorithmParameters,\n usages: [\"encrypt\", \"wrapKey\"]\n }\n }, crypto);\n const encryptedKey = await crypto.encrypt(publicKey.algorithm, publicKey, exportedSessionKey);\n recipientInfo.encryptedKey = new asn1js.OctetString({ valueHex: encryptedKey });\n }\n catch {\n }\n };\n const SubKEKRecipientInfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n const kekAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"kekAlgorithm\");\n const kekKey = await crypto.importKey(\"raw\", new Uint8Array(recipientInfo.preDefinedKEK), kekAlgorithm, true, [\"wrapKey\"]);\n const wrappedKey = await crypto.wrapKey(\"raw\", sessionKey, kekKey, kekAlgorithm);\n recipientInfo.encryptedKey = new asn1js.OctetString({ valueHex: wrappedKey });\n };\n const SubPasswordRecipientinfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n let pbkdf2Params;\n if (!recipientInfo.keyDerivationAlgorithm)\n throw new Error(\"Please append encoded \\\"keyDerivationAlgorithm\\\"\");\n if (!recipientInfo.keyDerivationAlgorithm.algorithmParams)\n throw new Error(\"Incorrectly encoded \\\"keyDerivationAlgorithm\\\"\");\n try {\n pbkdf2Params = new PBKDF2Params({ schema: recipientInfo.keyDerivationAlgorithm.algorithmParams });\n }\n catch (ex) {\n throw new Error(\"Incorrectly encoded \\\"keyDerivationAlgorithm\\\"\");\n }\n const passwordView = new Uint8Array(recipientInfo.password);\n const derivationKey = await crypto.importKey(\"raw\", passwordView, \"PBKDF2\", false, [\"deriveKey\"]);\n const kekAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"kekAlgorithm\");\n let hmacHashAlgorithm = \"SHA-1\";\n if (pbkdf2Params.prf) {\n const prfAlgorithm = crypto.getAlgorithmByOID(pbkdf2Params.prf.algorithmId, true, \"prfAlgorithm\");\n hmacHashAlgorithm = prfAlgorithm.hash.name;\n }\n const saltView = new Uint8Array(pbkdf2Params.salt.valueBlock.valueHex);\n const iterations = pbkdf2Params.iterationCount;\n const derivedKey = await crypto.deriveKey({\n name: \"PBKDF2\",\n hash: {\n name: hmacHashAlgorithm\n },\n salt: saltView,\n iterations\n }, derivationKey, kekAlgorithm, true, [\"wrapKey\"]);\n const wrappedKey = await crypto.wrapKey(\"raw\", sessionKey, derivedKey, kekAlgorithm);\n recipientInfo.encryptedKey = new asn1js.OctetString({ valueHex: wrappedKey });\n };\n const res = [];\n for (let i = 0; i < this.recipientInfos.length; i++) {\n switch (this.recipientInfos[i].variant) {\n case 1:\n res.push(await SubKeyTransRecipientInfo(i));\n break;\n case 2:\n res.push(await SubKeyAgreeRecipientInfo(i));\n break;\n case 3:\n res.push(await SubKEKRecipientInfo(i));\n break;\n case 4:\n res.push(await SubPasswordRecipientinfo(i));\n break;\n default:\n throw new Error(`Unknown recipient type in array with index ${i}`);\n }\n }\n return res;\n }\n async decrypt(recipientIndex, parameters, crypto = getCrypto(true)) {\n const decryptionParameters = parameters || {};\n if ((recipientIndex + 1) > this.recipientInfos.length) {\n throw new Error(`Maximum value for \"index\" is: ${this.recipientInfos.length - 1}`);\n }\n const SubKeyAgreeRecipientInfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n let curveOID;\n let recipientCurve;\n let recipientCurveLength;\n const originator = recipientInfo.originator;\n if (decryptionParameters.recipientCertificate) {\n const curveObject = decryptionParameters.recipientCertificate.subjectPublicKeyInfo.algorithm.algorithmParams;\n if (curveObject.constructor.blockName() !== asn1js.ObjectIdentifier.blockName()) {\n throw new Error(`Incorrect \"recipientCertificate\" for index ${index}`);\n }\n curveOID = curveObject.valueBlock.toString();\n }\n else if (originator.value.algorithm.algorithmParams) {\n const curveObject = originator.value.algorithm.algorithmParams;\n if (curveObject.constructor.blockName() !== asn1js.ObjectIdentifier.blockName()) {\n throw new Error(`Incorrect originator for index ${index}`);\n }\n curveOID = curveObject.valueBlock.toString();\n }\n else {\n throw new Error(\"Parameter \\\"recipientCertificate\\\" is mandatory for \\\"KeyAgreeRecipientInfo\\\" if algorithm params are missing from originator\");\n }\n if (!decryptionParameters.recipientPrivateKey)\n throw new Error(\"Parameter \\\"recipientPrivateKey\\\" is mandatory for \\\"KeyAgreeRecipientInfo\\\"\");\n switch (curveOID) {\n case \"1.2.840.10045.3.1.7\":\n recipientCurve = \"P-256\";\n recipientCurveLength = 256;\n break;\n case \"1.3.132.0.34\":\n recipientCurve = \"P-384\";\n recipientCurveLength = 384;\n break;\n case \"1.3.132.0.35\":\n recipientCurve = \"P-521\";\n recipientCurveLength = 528;\n break;\n default:\n throw new Error(`Incorrect curve OID for index ${index}`);\n }\n let ecdhPrivateKey;\n let keyCrypto = crypto;\n if (BufferSourceConverter.isBufferSource(decryptionParameters.recipientPrivateKey)) {\n ecdhPrivateKey = await crypto.importKey(\"pkcs8\", decryptionParameters.recipientPrivateKey, {\n name: \"ECDH\",\n namedCurve: recipientCurve\n }, true, [\"deriveBits\"]);\n }\n else {\n ecdhPrivateKey = decryptionParameters.recipientPrivateKey;\n if (\"crypto\" in decryptionParameters && decryptionParameters.crypto) {\n keyCrypto = decryptionParameters.crypto.subtle;\n }\n }\n if ((\"algorithmParams\" in originator.value.algorithm) === false)\n originator.value.algorithm.algorithmParams = new asn1js.ObjectIdentifier({ value: curveOID });\n const buffer = originator.value.toSchema().toBER(false);\n const ecdhPublicKey = await crypto.importKey(\"spki\", buffer, {\n name: \"ECDH\",\n namedCurve: recipientCurve\n }, true, []);\n const sharedSecret = await keyCrypto.deriveBits({\n name: \"ECDH\",\n public: ecdhPublicKey\n }, ecdhPrivateKey, recipientCurveLength);\n async function applyKDF(includeAlgorithmParams) {\n includeAlgorithmParams = includeAlgorithmParams || false;\n const aesKWAlgorithm = new AlgorithmIdentifier({ schema: recipientInfo.keyEncryptionAlgorithm.algorithmParams });\n const kwAlgorithm = crypto.getAlgorithmByOID(aesKWAlgorithm.algorithmId, true, \"kwAlgorithm\");\n let kwLength = kwAlgorithm.length;\n const kwLengthBuffer = new ArrayBuffer(4);\n const kwLengthView = new Uint8Array(kwLengthBuffer);\n for (let j = 3; j >= 0; j--) {\n kwLengthView[j] = kwLength;\n kwLength >>= 8;\n }\n const keyInfoAlgorithm = {\n algorithmId: aesKWAlgorithm.algorithmId\n };\n if (includeAlgorithmParams) {\n keyInfoAlgorithm.algorithmParams = new asn1js.Null();\n }\n const eccInfo = new ECCCMSSharedInfo({\n keyInfo: new AlgorithmIdentifier(keyInfoAlgorithm),\n entityUInfo: recipientInfo.ukm,\n suppPubInfo: new asn1js.OctetString({ valueHex: kwLengthBuffer })\n });\n const encodedInfo = eccInfo.toSchema().toBER(false);\n const ecdhAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"ecdhAlgorithm\");\n if (!ecdhAlgorithm.name) {\n throw new Error(`Incorrect OID for key encryption algorithm: ${recipientInfo.keyEncryptionAlgorithm.algorithmId}`);\n }\n return kdf(ecdhAlgorithm.kdf, sharedSecret, kwAlgorithm.length, encodedInfo, crypto);\n }\n const kdfResult = await applyKDF();\n const importAesKwKey = async (kdfResult) => {\n return crypto.importKey(\"raw\", kdfResult, { name: \"AES-KW\" }, true, [\"unwrapKey\"]);\n };\n const aesKwKey = await importAesKwKey(kdfResult);\n const unwrapSessionKey = async (aesKwKey) => {\n const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId;\n const contentEncryptionAlgorithm = crypto.getAlgorithmByOID(algorithmId, true, \"contentEncryptionAlgorithm\");\n return crypto.unwrapKey(\"raw\", recipientInfo.recipientEncryptedKeys.encryptedKeys[0].encryptedKey.valueBlock.valueHexView, aesKwKey, { name: \"AES-KW\" }, contentEncryptionAlgorithm, true, [\"decrypt\"]);\n };\n try {\n return await unwrapSessionKey(aesKwKey);\n }\n catch {\n const kdfResult = await applyKDF(true);\n const aesKwKey = await importAesKwKey(kdfResult);\n return unwrapSessionKey(aesKwKey);\n }\n };\n const SubKeyTransRecipientInfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n if (!decryptionParameters.recipientPrivateKey) {\n throw new Error(\"Parameter \\\"recipientPrivateKey\\\" is mandatory for \\\"KeyTransRecipientInfo\\\"\");\n }\n const algorithmParameters = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"keyEncryptionAlgorithm\");\n if (algorithmParameters.name === \"RSA-OAEP\") {\n const schema = recipientInfo.keyEncryptionAlgorithm.algorithmParams;\n const rsaOAEPParams = new RSAESOAEPParams({ schema });\n algorithmParameters.hash = crypto.getAlgorithmByOID(rsaOAEPParams.hashAlgorithm.algorithmId);\n if ((\"name\" in algorithmParameters.hash) === false)\n throw new Error(`Incorrect OID for hash algorithm: ${rsaOAEPParams.hashAlgorithm.algorithmId}`);\n }\n let privateKey;\n let keyCrypto = crypto;\n if (BufferSourceConverter.isBufferSource(decryptionParameters.recipientPrivateKey)) {\n privateKey = await crypto.importKey(\"pkcs8\", decryptionParameters.recipientPrivateKey, algorithmParameters, true, [\"decrypt\"]);\n }\n else {\n privateKey = decryptionParameters.recipientPrivateKey;\n if (\"crypto\" in decryptionParameters && decryptionParameters.crypto) {\n keyCrypto = decryptionParameters.crypto.subtle;\n }\n }\n const sessionKey = await keyCrypto.decrypt(privateKey.algorithm, privateKey, recipientInfo.encryptedKey.valueBlock.valueHexView);\n const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId;\n const contentEncryptionAlgorithm = crypto.getAlgorithmByOID(algorithmId, true, \"contentEncryptionAlgorithm\");\n if ((\"name\" in contentEncryptionAlgorithm) === false)\n throw new Error(`Incorrect \"contentEncryptionAlgorithm\": ${algorithmId}`);\n return crypto.importKey(\"raw\", sessionKey, contentEncryptionAlgorithm, true, [\"decrypt\"]);\n };\n const SubKEKRecipientInfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n if (!decryptionParameters.preDefinedData)\n throw new Error(\"Parameter \\\"preDefinedData\\\" is mandatory for \\\"KEKRecipientInfo\\\"\");\n const kekAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"kekAlgorithm\");\n const importedKey = await crypto.importKey(\"raw\", decryptionParameters.preDefinedData, kekAlgorithm, true, [\"unwrapKey\"]);\n const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId;\n const contentEncryptionAlgorithm = crypto.getAlgorithmByOID(algorithmId, true, \"contentEncryptionAlgorithm\");\n if (!contentEncryptionAlgorithm.name) {\n throw new Error(`Incorrect \"contentEncryptionAlgorithm\": ${algorithmId}`);\n }\n return crypto.unwrapKey(\"raw\", recipientInfo.encryptedKey.valueBlock.valueHexView, importedKey, kekAlgorithm, contentEncryptionAlgorithm, true, [\"decrypt\"]);\n };\n const SubPasswordRecipientinfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n let pbkdf2Params;\n if (!decryptionParameters.preDefinedData) {\n throw new Error(\"Parameter \\\"preDefinedData\\\" is mandatory for \\\"KEKRecipientInfo\\\"\");\n }\n if (!recipientInfo.keyDerivationAlgorithm) {\n throw new Error(\"Please append encoded \\\"keyDerivationAlgorithm\\\"\");\n }\n if (!recipientInfo.keyDerivationAlgorithm.algorithmParams) {\n throw new Error(\"Incorrectly encoded \\\"keyDerivationAlgorithm\\\"\");\n }\n try {\n pbkdf2Params = new PBKDF2Params({ schema: recipientInfo.keyDerivationAlgorithm.algorithmParams });\n }\n catch (ex) {\n throw new Error(\"Incorrectly encoded \\\"keyDerivationAlgorithm\\\"\");\n }\n const pbkdf2Key = await crypto.importKey(\"raw\", decryptionParameters.preDefinedData, \"PBKDF2\", false, [\"deriveKey\"]);\n const kekAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"keyEncryptionAlgorithm\");\n const hmacHashAlgorithm = pbkdf2Params.prf\n ? crypto.getAlgorithmByOID(pbkdf2Params.prf.algorithmId, true, \"prfAlgorithm\").hash.name\n : \"SHA-1\";\n const saltView = new Uint8Array(pbkdf2Params.salt.valueBlock.valueHex);\n const iterations = pbkdf2Params.iterationCount;\n const kekKey = await crypto.deriveKey({\n name: \"PBKDF2\",\n hash: {\n name: hmacHashAlgorithm\n },\n salt: saltView,\n iterations\n }, pbkdf2Key, kekAlgorithm, true, [\"unwrapKey\"]);\n const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId;\n const contentEncryptionAlgorithm = crypto.getAlgorithmByOID(algorithmId, true, \"contentEncryptionAlgorithm\");\n return crypto.unwrapKey(\"raw\", recipientInfo.encryptedKey.valueBlock.valueHexView, kekKey, kekAlgorithm, contentEncryptionAlgorithm, true, [\"decrypt\"]);\n };\n let unwrappedKey;\n switch (this.recipientInfos[recipientIndex].variant) {\n case 1:\n unwrappedKey = await SubKeyTransRecipientInfo(recipientIndex);\n break;\n case 2:\n unwrappedKey = await SubKeyAgreeRecipientInfo(recipientIndex);\n break;\n case 3:\n unwrappedKey = await SubKEKRecipientInfo(recipientIndex);\n break;\n case 4:\n unwrappedKey = await SubPasswordRecipientinfo(recipientIndex);\n break;\n default:\n throw new Error(`Unknown recipient type in array with index ${recipientIndex}`);\n }\n const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId;\n const contentEncryptionAlgorithm = crypto.getAlgorithmByOID(algorithmId, true, \"contentEncryptionAlgorithm\");\n const ivBuffer = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmParams.valueBlock.valueHex;\n const ivView = new Uint8Array(ivBuffer);\n if (!this.encryptedContentInfo.encryptedContent) {\n throw new Error(\"Required property `encryptedContent` is empty\");\n }\n const dataBuffer = this.encryptedContentInfo.getEncryptedContent();\n return crypto.decrypt({\n name: contentEncryptionAlgorithm.name,\n iv: ivView\n }, unwrappedKey, dataBuffer);\n }\n}\nEnvelopedData.CLASS_NAME = \"EnvelopedData\";\n\nconst SAFE_CONTENTS = \"safeContents\";\nconst PARSED_VALUE$1 = \"parsedValue\";\nconst CONTENT_INFOS = \"contentInfos\";\nclass AuthenticatedSafe extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.safeContents = pvutils.getParametersValue(parameters, SAFE_CONTENTS, AuthenticatedSafe.defaultValues(SAFE_CONTENTS));\n if (PARSED_VALUE$1 in parameters) {\n this.parsedValue = pvutils.getParametersValue(parameters, PARSED_VALUE$1, AuthenticatedSafe.defaultValues(PARSED_VALUE$1));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case SAFE_CONTENTS:\n return [];\n case PARSED_VALUE$1:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case SAFE_CONTENTS:\n return (memberValue.length === 0);\n case PARSED_VALUE$1:\n return ((memberValue instanceof Object) && (Object.keys(memberValue).length === 0));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.contentInfos || EMPTY_STRING),\n value: ContentInfo.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n CONTENT_INFOS\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, AuthenticatedSafe.schema({\n names: {\n contentInfos: CONTENT_INFOS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.safeContents = Array.from(asn1.result.contentInfos, element => new ContentInfo({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.safeContents, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n safeContents: Array.from(this.safeContents, o => o.toJSON())\n };\n }\n async parseInternalValues(parameters, crypto = getCrypto(true)) {\n ParameterError.assert(parameters, SAFE_CONTENTS);\n ArgumentError.assert(parameters.safeContents, SAFE_CONTENTS, \"Array\");\n if (parameters.safeContents.length !== this.safeContents.length) {\n throw new ArgumentError(\"Length of \\\"parameters.safeContents\\\" must be equal to \\\"this.safeContents.length\\\"\");\n }\n this.parsedValue = {\n safeContents: [],\n };\n for (const [index, content] of this.safeContents.entries()) {\n const safeContent = parameters.safeContents[index];\n const errorTarget = `parameters.safeContents[${index}]`;\n switch (content.contentType) {\n case id_ContentType_Data:\n {\n ArgumentError.assert(content.content, \"this.safeContents[j].content\", asn1js.OctetString);\n const authSafeContent = content.content.getValue();\n this.parsedValue.safeContents.push({\n privacyMode: 0,\n value: SafeContents.fromBER(authSafeContent)\n });\n }\n break;\n case id_ContentType_EnvelopedData:\n {\n const cmsEnveloped = new EnvelopedData({ schema: content.content });\n ParameterError.assert(errorTarget, safeContent, \"recipientCertificate\", \"recipientKey\");\n const envelopedData = safeContent;\n const recipientCertificate = envelopedData.recipientCertificate;\n const recipientKey = envelopedData.recipientKey;\n const decrypted = await cmsEnveloped.decrypt(0, {\n recipientCertificate,\n recipientPrivateKey: recipientKey\n }, crypto);\n this.parsedValue.safeContents.push({\n privacyMode: 2,\n value: SafeContents.fromBER(decrypted),\n });\n }\n break;\n case id_ContentType_EncryptedData:\n {\n const cmsEncrypted = new EncryptedData({ schema: content.content });\n ParameterError.assert(errorTarget, safeContent, \"password\");\n const password = safeContent.password;\n const decrypted = await cmsEncrypted.decrypt({\n password\n }, crypto);\n this.parsedValue.safeContents.push({\n privacyMode: 1,\n value: SafeContents.fromBER(decrypted),\n });\n }\n break;\n default:\n throw new Error(`Unknown \"contentType\" for AuthenticatedSafe: \" ${content.contentType}`);\n }\n }\n }\n async makeInternalValues(parameters, crypto = getCrypto(true)) {\n if (!(this.parsedValue)) {\n throw new Error(\"Please run \\\"parseValues\\\" first or add \\\"parsedValue\\\" manually\");\n }\n ArgumentError.assert(this.parsedValue, \"this.parsedValue\", \"object\");\n ArgumentError.assert(this.parsedValue.safeContents, \"this.parsedValue.safeContents\", \"Array\");\n ArgumentError.assert(parameters, \"parameters\", \"object\");\n ParameterError.assert(parameters, \"safeContents\");\n ArgumentError.assert(parameters.safeContents, \"parameters.safeContents\", \"Array\");\n if (parameters.safeContents.length !== this.parsedValue.safeContents.length) {\n throw new ArgumentError(\"Length of \\\"parameters.safeContents\\\" must be equal to \\\"this.parsedValue.safeContents\\\"\");\n }\n this.safeContents = [];\n for (const [index, content] of this.parsedValue.safeContents.entries()) {\n ParameterError.assert(\"content\", content, \"privacyMode\", \"value\");\n ArgumentError.assert(content.value, \"content.value\", SafeContents);\n switch (content.privacyMode) {\n case 0:\n {\n const contentBuffer = content.value.toSchema().toBER(false);\n this.safeContents.push(new ContentInfo({\n contentType: \"1.2.840.113549.1.7.1\",\n content: new asn1js.OctetString({ valueHex: contentBuffer })\n }));\n }\n break;\n case 1:\n {\n const cmsEncrypted = new EncryptedData();\n const currentParameters = parameters.safeContents[index];\n currentParameters.contentToEncrypt = content.value.toSchema().toBER(false);\n await cmsEncrypted.encrypt(currentParameters, crypto);\n this.safeContents.push(new ContentInfo({\n contentType: \"1.2.840.113549.1.7.6\",\n content: cmsEncrypted.toSchema()\n }));\n }\n break;\n case 2:\n {\n const cmsEnveloped = new EnvelopedData();\n const contentToEncrypt = content.value.toSchema().toBER(false);\n const safeContent = parameters.safeContents[index];\n ParameterError.assert(`parameters.safeContents[${index}]`, safeContent, \"encryptingCertificate\", \"encryptionAlgorithm\");\n switch (true) {\n case (safeContent.encryptionAlgorithm.name.toLowerCase() === \"aes-cbc\"):\n case (safeContent.encryptionAlgorithm.name.toLowerCase() === \"aes-gcm\"):\n break;\n default:\n throw new Error(`Incorrect parameter \"encryptionAlgorithm\" in \"parameters.safeContents[i]\": ${safeContent.encryptionAlgorithm}`);\n }\n switch (true) {\n case (safeContent.encryptionAlgorithm.length === 128):\n case (safeContent.encryptionAlgorithm.length === 192):\n case (safeContent.encryptionAlgorithm.length === 256):\n break;\n default:\n throw new Error(`Incorrect parameter \"encryptionAlgorithm.length\" in \"parameters.safeContents[i]\": ${safeContent.encryptionAlgorithm.length}`);\n }\n const encryptionAlgorithm = safeContent.encryptionAlgorithm;\n cmsEnveloped.addRecipientByCertificate(safeContent.encryptingCertificate, {}, undefined, crypto);\n await cmsEnveloped.encrypt(encryptionAlgorithm, contentToEncrypt, crypto);\n this.safeContents.push(new ContentInfo({\n contentType: \"1.2.840.113549.1.7.3\",\n content: cmsEnveloped.toSchema()\n }));\n }\n break;\n default:\n throw new Error(`Incorrect value for \"content.privacyMode\": ${content.privacyMode}`);\n }\n }\n return this;\n }\n}\nAuthenticatedSafe.CLASS_NAME = \"AuthenticatedSafe\";\n\nconst HASH_ALGORITHM$1 = \"hashAlgorithm\";\nconst ISSUER_NAME_HASH = \"issuerNameHash\";\nconst ISSUER_KEY_HASH = \"issuerKeyHash\";\nconst SERIAL_NUMBER$1 = \"serialNumber\";\nconst CLEAR_PROPS$j = [\n HASH_ALGORITHM$1,\n ISSUER_NAME_HASH,\n ISSUER_KEY_HASH,\n SERIAL_NUMBER$1,\n];\nclass CertID extends PkiObject {\n static async create(certificate, parameters, crypto = getCrypto(true)) {\n const certID = new CertID();\n await certID.createForCertificate(certificate, parameters, crypto);\n return certID;\n }\n constructor(parameters = {}) {\n super();\n this.hashAlgorithm = pvutils.getParametersValue(parameters, HASH_ALGORITHM$1, CertID.defaultValues(HASH_ALGORITHM$1));\n this.issuerNameHash = pvutils.getParametersValue(parameters, ISSUER_NAME_HASH, CertID.defaultValues(ISSUER_NAME_HASH));\n this.issuerKeyHash = pvutils.getParametersValue(parameters, ISSUER_KEY_HASH, CertID.defaultValues(ISSUER_KEY_HASH));\n this.serialNumber = pvutils.getParametersValue(parameters, SERIAL_NUMBER$1, CertID.defaultValues(SERIAL_NUMBER$1));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case HASH_ALGORITHM$1:\n return new AlgorithmIdentifier();\n case ISSUER_NAME_HASH:\n case ISSUER_KEY_HASH:\n return new asn1js.OctetString();\n case SERIAL_NUMBER$1:\n return new asn1js.Integer();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case HASH_ALGORITHM$1:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case ISSUER_NAME_HASH:\n case ISSUER_KEY_HASH:\n case SERIAL_NUMBER$1:\n return (memberValue.isEqual(CertID.defaultValues(SERIAL_NUMBER$1)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.hashAlgorithmObject || {\n names: {\n blockName: (names.hashAlgorithm || EMPTY_STRING)\n }\n }),\n new asn1js.OctetString({ name: (names.issuerNameHash || EMPTY_STRING) }),\n new asn1js.OctetString({ name: (names.issuerKeyHash || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.serialNumber || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$j);\n const asn1 = asn1js.compareSchema(schema, schema, CertID.schema({\n names: {\n hashAlgorithm: HASH_ALGORITHM$1,\n issuerNameHash: ISSUER_NAME_HASH,\n issuerKeyHash: ISSUER_KEY_HASH,\n serialNumber: SERIAL_NUMBER$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.hashAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.hashAlgorithm });\n this.issuerNameHash = asn1.result.issuerNameHash;\n this.issuerKeyHash = asn1.result.issuerKeyHash;\n this.serialNumber = asn1.result.serialNumber;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.hashAlgorithm.toSchema(),\n this.issuerNameHash,\n this.issuerKeyHash,\n this.serialNumber\n ]\n }));\n }\n toJSON() {\n return {\n hashAlgorithm: this.hashAlgorithm.toJSON(),\n issuerNameHash: this.issuerNameHash.toJSON(),\n issuerKeyHash: this.issuerKeyHash.toJSON(),\n serialNumber: this.serialNumber.toJSON(),\n };\n }\n isEqual(certificateID) {\n if (this.hashAlgorithm.algorithmId !== certificateID.hashAlgorithm.algorithmId) {\n return false;\n }\n if (!pvtsutils.BufferSourceConverter.isEqual(this.issuerNameHash.valueBlock.valueHexView, certificateID.issuerNameHash.valueBlock.valueHexView)) {\n return false;\n }\n if (!pvtsutils.BufferSourceConverter.isEqual(this.issuerKeyHash.valueBlock.valueHexView, certificateID.issuerKeyHash.valueBlock.valueHexView)) {\n return false;\n }\n if (!this.serialNumber.isEqual(certificateID.serialNumber)) {\n return false;\n }\n return true;\n }\n async createForCertificate(certificate, parameters, crypto = getCrypto(true)) {\n ParameterError.assert(parameters, HASH_ALGORITHM$1, \"issuerCertificate\");\n const hashOID = crypto.getOIDByAlgorithm({ name: parameters.hashAlgorithm }, true, \"hashAlgorithm\");\n this.hashAlgorithm = new AlgorithmIdentifier({\n algorithmId: hashOID,\n algorithmParams: new asn1js.Null()\n });\n const issuerCertificate = parameters.issuerCertificate;\n this.serialNumber = certificate.serialNumber;\n const hashIssuerName = await crypto.digest({ name: parameters.hashAlgorithm }, issuerCertificate.subject.toSchema().toBER(false));\n this.issuerNameHash = new asn1js.OctetString({ valueHex: hashIssuerName });\n const issuerKeyBuffer = issuerCertificate.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView;\n const hashIssuerKey = await crypto.digest({ name: parameters.hashAlgorithm }, issuerKeyBuffer);\n this.issuerKeyHash = new asn1js.OctetString({ valueHex: hashIssuerKey });\n }\n}\nCertID.CLASS_NAME = \"CertID\";\n\nconst CERT_ID = \"certID\";\nconst CERT_STATUS = \"certStatus\";\nconst THIS_UPDATE = \"thisUpdate\";\nconst NEXT_UPDATE = \"nextUpdate\";\nconst SINGLE_EXTENSIONS = \"singleExtensions\";\nconst CLEAR_PROPS$i = [\n CERT_ID,\n CERT_STATUS,\n THIS_UPDATE,\n NEXT_UPDATE,\n SINGLE_EXTENSIONS,\n];\nclass SingleResponse extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.certID = pvutils.getParametersValue(parameters, CERT_ID, SingleResponse.defaultValues(CERT_ID));\n this.certStatus = pvutils.getParametersValue(parameters, CERT_STATUS, SingleResponse.defaultValues(CERT_STATUS));\n this.thisUpdate = pvutils.getParametersValue(parameters, THIS_UPDATE, SingleResponse.defaultValues(THIS_UPDATE));\n if (NEXT_UPDATE in parameters) {\n this.nextUpdate = pvutils.getParametersValue(parameters, NEXT_UPDATE, SingleResponse.defaultValues(NEXT_UPDATE));\n }\n if (SINGLE_EXTENSIONS in parameters) {\n this.singleExtensions = pvutils.getParametersValue(parameters, SINGLE_EXTENSIONS, SingleResponse.defaultValues(SINGLE_EXTENSIONS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CERT_ID:\n return new CertID();\n case CERT_STATUS:\n return {};\n case THIS_UPDATE:\n case NEXT_UPDATE:\n return new Date(0, 0, 0);\n case SINGLE_EXTENSIONS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case CERT_ID:\n return ((CertID.compareWithDefault(\"hashAlgorithm\", memberValue.hashAlgorithm)) &&\n (CertID.compareWithDefault(\"issuerNameHash\", memberValue.issuerNameHash)) &&\n (CertID.compareWithDefault(\"issuerKeyHash\", memberValue.issuerKeyHash)) &&\n (CertID.compareWithDefault(\"serialNumber\", memberValue.serialNumber)));\n case CERT_STATUS:\n return (Object.keys(memberValue).length === 0);\n case THIS_UPDATE:\n case NEXT_UPDATE:\n return (memberValue === SingleResponse.defaultValues(memberName));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n CertID.schema(names.certID || {}),\n new asn1js.Choice({\n value: [\n new asn1js.Primitive({\n name: (names.certStatus || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n }),\n new asn1js.Constructed({\n name: (names.certStatus || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.GeneralizedTime(),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Enumerated()]\n })\n ]\n }),\n new asn1js.Primitive({\n name: (names.certStatus || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n lenBlock: { length: 1 }\n })\n ]\n }),\n new asn1js.GeneralizedTime({ name: (names.thisUpdate || EMPTY_STRING) }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.GeneralizedTime({ name: (names.nextUpdate || EMPTY_STRING) })]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [Extensions.schema(names.singleExtensions || {})]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$i);\n const asn1 = asn1js.compareSchema(schema, schema, SingleResponse.schema({\n names: {\n certID: {\n names: {\n blockName: CERT_ID\n }\n },\n certStatus: CERT_STATUS,\n thisUpdate: THIS_UPDATE,\n nextUpdate: NEXT_UPDATE,\n singleExtensions: {\n names: {\n blockName: SINGLE_EXTENSIONS\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.certID = new CertID({ schema: asn1.result.certID });\n this.certStatus = asn1.result.certStatus;\n this.thisUpdate = asn1.result.thisUpdate.toDate();\n if (NEXT_UPDATE in asn1.result)\n this.nextUpdate = asn1.result.nextUpdate.toDate();\n if (SINGLE_EXTENSIONS in asn1.result)\n this.singleExtensions = Array.from(asn1.result.singleExtensions.valueBlock.value, element => new Extension({ schema: element }));\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.certID.toSchema());\n outputArray.push(this.certStatus);\n outputArray.push(new asn1js.GeneralizedTime({ valueDate: this.thisUpdate }));\n if (this.nextUpdate) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.GeneralizedTime({ valueDate: this.nextUpdate })]\n }));\n }\n if (this.singleExtensions) {\n outputArray.push(new asn1js.Sequence({\n value: Array.from(this.singleExtensions, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n certID: this.certID.toJSON(),\n certStatus: this.certStatus.toJSON(),\n thisUpdate: this.thisUpdate\n };\n if (this.nextUpdate) {\n res.nextUpdate = this.nextUpdate;\n }\n if (this.singleExtensions) {\n res.singleExtensions = Array.from(this.singleExtensions, o => o.toJSON());\n }\n return res;\n }\n}\nSingleResponse.CLASS_NAME = \"SingleResponse\";\n\nconst TBS$2 = \"tbs\";\nconst VERSION$7 = \"version\";\nconst RESPONDER_ID = \"responderID\";\nconst PRODUCED_AT = \"producedAt\";\nconst RESPONSES = \"responses\";\nconst RESPONSE_EXTENSIONS = \"responseExtensions\";\nconst RESPONSE_DATA = \"ResponseData\";\nconst RESPONSE_DATA_VERSION = `${RESPONSE_DATA}.${VERSION$7}`;\nconst RESPONSE_DATA_RESPONDER_ID = `${RESPONSE_DATA}.${RESPONDER_ID}`;\nconst RESPONSE_DATA_PRODUCED_AT = `${RESPONSE_DATA}.${PRODUCED_AT}`;\nconst RESPONSE_DATA_RESPONSES = `${RESPONSE_DATA}.${RESPONSES}`;\nconst RESPONSE_DATA_RESPONSE_EXTENSIONS = `${RESPONSE_DATA}.${RESPONSE_EXTENSIONS}`;\nconst CLEAR_PROPS$h = [\n RESPONSE_DATA,\n RESPONSE_DATA_VERSION,\n RESPONSE_DATA_RESPONDER_ID,\n RESPONSE_DATA_PRODUCED_AT,\n RESPONSE_DATA_RESPONSES,\n RESPONSE_DATA_RESPONSE_EXTENSIONS\n];\nclass ResponseData extends PkiObject {\n get tbs() {\n return pvtsutils.BufferSourceConverter.toArrayBuffer(this.tbsView);\n }\n set tbs(value) {\n this.tbsView = new Uint8Array(value);\n }\n constructor(parameters = {}) {\n super();\n this.tbsView = new Uint8Array(pvutils.getParametersValue(parameters, TBS$2, ResponseData.defaultValues(TBS$2)));\n if (VERSION$7 in parameters) {\n this.version = pvutils.getParametersValue(parameters, VERSION$7, ResponseData.defaultValues(VERSION$7));\n }\n this.responderID = pvutils.getParametersValue(parameters, RESPONDER_ID, ResponseData.defaultValues(RESPONDER_ID));\n this.producedAt = pvutils.getParametersValue(parameters, PRODUCED_AT, ResponseData.defaultValues(PRODUCED_AT));\n this.responses = pvutils.getParametersValue(parameters, RESPONSES, ResponseData.defaultValues(RESPONSES));\n if (RESPONSE_EXTENSIONS in parameters) {\n this.responseExtensions = pvutils.getParametersValue(parameters, RESPONSE_EXTENSIONS, ResponseData.defaultValues(RESPONSE_EXTENSIONS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$7:\n return 0;\n case TBS$2:\n return EMPTY_BUFFER;\n case RESPONDER_ID:\n return {};\n case PRODUCED_AT:\n return new Date(0, 0, 0);\n case RESPONSES:\n case RESPONSE_EXTENSIONS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TBS$2:\n return (memberValue.byteLength === 0);\n case RESPONDER_ID:\n return (Object.keys(memberValue).length === 0);\n case PRODUCED_AT:\n return (memberValue === ResponseData.defaultValues(memberName));\n case RESPONSES:\n case RESPONSE_EXTENSIONS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || RESPONSE_DATA),\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Integer({ name: (names.version || RESPONSE_DATA_VERSION) })]\n }),\n new asn1js.Choice({\n value: [\n new asn1js.Constructed({\n name: (names.responderID || RESPONSE_DATA_RESPONDER_ID),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [RelativeDistinguishedNames.schema(names.ResponseDataByName || {\n names: {\n blockName: \"ResponseData.byName\"\n }\n })]\n }),\n new asn1js.Constructed({\n name: (names.responderID || RESPONSE_DATA_RESPONDER_ID),\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [new asn1js.OctetString({ name: (names.ResponseDataByKey || \"ResponseData.byKey\") })]\n })\n ]\n }),\n new asn1js.GeneralizedTime({ name: (names.producedAt || RESPONSE_DATA_PRODUCED_AT) }),\n new asn1js.Sequence({\n value: [\n new asn1js.Repeated({\n name: RESPONSE_DATA_RESPONSES,\n value: SingleResponse.schema(names.response || {})\n })\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [Extensions.schema(names.extensions || {\n names: {\n blockName: RESPONSE_DATA_RESPONSE_EXTENSIONS\n }\n })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$h);\n const asn1 = asn1js.compareSchema(schema, schema, ResponseData.schema());\n AsnError.assertSchema(asn1, this.className);\n this.tbsView = asn1.result.ResponseData.valueBeforeDecodeView;\n if (RESPONSE_DATA_VERSION in asn1.result)\n this.version = asn1.result[RESPONSE_DATA_VERSION].valueBlock.valueDec;\n if (asn1.result[RESPONSE_DATA_RESPONDER_ID].idBlock.tagNumber === 1)\n this.responderID = new RelativeDistinguishedNames({ schema: asn1.result[RESPONSE_DATA_RESPONDER_ID].valueBlock.value[0] });\n else\n this.responderID = asn1.result[RESPONSE_DATA_RESPONDER_ID].valueBlock.value[0];\n this.producedAt = asn1.result[RESPONSE_DATA_PRODUCED_AT].toDate();\n this.responses = Array.from(asn1.result[RESPONSE_DATA_RESPONSES], element => new SingleResponse({ schema: element }));\n if (RESPONSE_DATA_RESPONSE_EXTENSIONS in asn1.result)\n this.responseExtensions = Array.from(asn1.result[RESPONSE_DATA_RESPONSE_EXTENSIONS].valueBlock.value, element => new Extension({ schema: element }));\n }\n toSchema(encodeFlag = false) {\n let tbsSchema;\n if (encodeFlag === false) {\n if (!this.tbsView.byteLength) {\n return ResponseData.schema();\n }\n const asn1 = asn1js.fromBER(this.tbsView);\n AsnError.assert(asn1, \"TBS Response Data\");\n tbsSchema = asn1.result;\n }\n else {\n const outputArray = [];\n if (VERSION$7 in this) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Integer({ value: this.version })]\n }));\n }\n if (this.responderID instanceof RelativeDistinguishedNames) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [this.responderID.toSchema()]\n }));\n }\n else {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [this.responderID]\n }));\n }\n outputArray.push(new asn1js.GeneralizedTime({ valueDate: this.producedAt }));\n outputArray.push(new asn1js.Sequence({\n value: Array.from(this.responses, o => o.toSchema())\n }));\n if (this.responseExtensions) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [new asn1js.Sequence({\n value: Array.from(this.responseExtensions, o => o.toSchema())\n })]\n }));\n }\n tbsSchema = new asn1js.Sequence({\n value: outputArray\n });\n }\n return tbsSchema;\n }\n toJSON() {\n const res = {};\n if (VERSION$7 in this) {\n res.version = this.version;\n }\n if (this.responderID) {\n res.responderID = this.responderID;\n }\n if (this.producedAt) {\n res.producedAt = this.producedAt;\n }\n if (this.responses) {\n res.responses = Array.from(this.responses, o => o.toJSON());\n }\n if (this.responseExtensions) {\n res.responseExtensions = Array.from(this.responseExtensions, o => o.toJSON());\n }\n return res;\n }\n}\nResponseData.CLASS_NAME = \"ResponseData\";\n\nconst TRUSTED_CERTS = \"trustedCerts\";\nconst CERTS$2 = \"certs\";\nconst CRLS$1 = \"crls\";\nconst OCSPS$1 = \"ocsps\";\nconst CHECK_DATE = \"checkDate\";\nconst FIND_ORIGIN = \"findOrigin\";\nconst FIND_ISSUER = \"findIssuer\";\nvar ChainValidationCode;\n(function (ChainValidationCode) {\n ChainValidationCode[ChainValidationCode[\"unknown\"] = -1] = \"unknown\";\n ChainValidationCode[ChainValidationCode[\"success\"] = 0] = \"success\";\n ChainValidationCode[ChainValidationCode[\"noRevocation\"] = 11] = \"noRevocation\";\n ChainValidationCode[ChainValidationCode[\"noPath\"] = 60] = \"noPath\";\n ChainValidationCode[ChainValidationCode[\"noValidPath\"] = 97] = \"noValidPath\";\n})(ChainValidationCode || (ChainValidationCode = {}));\nclass ChainValidationError extends Error {\n constructor(code, message) {\n super(message);\n this.name = ChainValidationError.NAME;\n this.code = code;\n this.message = message;\n }\n}\nChainValidationError.NAME = \"ChainValidationError\";\nfunction isTrusted(cert, trustedList) {\n for (let i = 0; i < trustedList.length; i++) {\n if (pvtsutils.BufferSourceConverter.isEqual(cert.tbsView, trustedList[i].tbsView)) {\n return true;\n }\n }\n return false;\n}\nclass CertificateChainValidationEngine {\n constructor(parameters = {}) {\n this.trustedCerts = pvutils.getParametersValue(parameters, TRUSTED_CERTS, this.defaultValues(TRUSTED_CERTS));\n this.certs = pvutils.getParametersValue(parameters, CERTS$2, this.defaultValues(CERTS$2));\n this.crls = pvutils.getParametersValue(parameters, CRLS$1, this.defaultValues(CRLS$1));\n this.ocsps = pvutils.getParametersValue(parameters, OCSPS$1, this.defaultValues(OCSPS$1));\n this.checkDate = pvutils.getParametersValue(parameters, CHECK_DATE, this.defaultValues(CHECK_DATE));\n this.findOrigin = pvutils.getParametersValue(parameters, FIND_ORIGIN, this.defaultValues(FIND_ORIGIN));\n this.findIssuer = pvutils.getParametersValue(parameters, FIND_ISSUER, this.defaultValues(FIND_ISSUER));\n }\n static defaultFindOrigin(certificate, validationEngine) {\n if (certificate.tbsView.byteLength === 0) {\n certificate.tbsView = new Uint8Array(certificate.encodeTBS().toBER());\n }\n for (const localCert of validationEngine.certs) {\n if (localCert.tbsView.byteLength === 0) {\n localCert.tbsView = new Uint8Array(localCert.encodeTBS().toBER());\n }\n if (pvtsutils.BufferSourceConverter.isEqual(certificate.tbsView, localCert.tbsView))\n return \"Intermediate Certificates\";\n }\n for (const trustedCert of validationEngine.trustedCerts) {\n if (trustedCert.tbsView.byteLength === 0)\n trustedCert.tbsView = new Uint8Array(trustedCert.encodeTBS().toBER());\n if (pvtsutils.BufferSourceConverter.isEqual(certificate.tbsView, trustedCert.tbsView))\n return \"Trusted Certificates\";\n }\n return \"Unknown\";\n }\n async defaultFindIssuer(certificate, validationEngine, crypto = getCrypto(true)) {\n const result = [];\n let keyIdentifier = null;\n let authorityCertIssuer = null;\n let authorityCertSerialNumber = null;\n if (certificate.subject.isEqual(certificate.issuer)) {\n try {\n const verificationResult = await certificate.verify(undefined, crypto);\n if (verificationResult) {\n return [certificate];\n }\n }\n catch (ex) {\n }\n }\n if (certificate.extensions) {\n for (const extension of certificate.extensions) {\n if (extension.extnID === id_AuthorityKeyIdentifier && extension.parsedValue instanceof AuthorityKeyIdentifier) {\n if (extension.parsedValue.keyIdentifier) {\n keyIdentifier = extension.parsedValue.keyIdentifier;\n }\n else {\n if (extension.parsedValue.authorityCertIssuer) {\n authorityCertIssuer = extension.parsedValue.authorityCertIssuer;\n }\n if (extension.parsedValue.authorityCertSerialNumber) {\n authorityCertSerialNumber = extension.parsedValue.authorityCertSerialNumber;\n }\n }\n break;\n }\n }\n }\n function checkCertificate(possibleIssuer) {\n if (keyIdentifier !== null) {\n if (possibleIssuer.extensions) {\n let extensionFound = false;\n for (const extension of possibleIssuer.extensions) {\n if (extension.extnID === id_SubjectKeyIdentifier && extension.parsedValue) {\n extensionFound = true;\n if (pvtsutils.BufferSourceConverter.isEqual(extension.parsedValue.valueBlock.valueHex, keyIdentifier.valueBlock.valueHexView)) {\n result.push(possibleIssuer);\n }\n break;\n }\n }\n if (extensionFound) {\n return;\n }\n }\n }\n let authorityCertSerialNumberEqual = false;\n if (authorityCertSerialNumber !== null)\n authorityCertSerialNumberEqual = possibleIssuer.serialNumber.isEqual(authorityCertSerialNumber);\n if (authorityCertIssuer !== null) {\n if (possibleIssuer.subject.isEqual(authorityCertIssuer)) {\n if (authorityCertSerialNumberEqual)\n result.push(possibleIssuer);\n }\n }\n else {\n if (certificate.issuer.isEqual(possibleIssuer.subject))\n result.push(possibleIssuer);\n }\n }\n for (const trustedCert of validationEngine.trustedCerts) {\n checkCertificate(trustedCert);\n }\n for (const intermediateCert of validationEngine.certs) {\n checkCertificate(intermediateCert);\n }\n for (let i = result.length - 1; i >= 0; i--) {\n try {\n const verificationResult = await certificate.verify(result[i], crypto);\n if (verificationResult === false)\n result.splice(i, 1);\n }\n catch (ex) {\n result.splice(i, 1);\n }\n }\n return result;\n }\n defaultValues(memberName) {\n switch (memberName) {\n case TRUSTED_CERTS:\n return [];\n case CERTS$2:\n return [];\n case CRLS$1:\n return [];\n case OCSPS$1:\n return [];\n case CHECK_DATE:\n return new Date();\n case FIND_ORIGIN:\n return CertificateChainValidationEngine.defaultFindOrigin;\n case FIND_ISSUER:\n return this.defaultFindIssuer;\n default:\n throw new Error(`Invalid member name for CertificateChainValidationEngine class: ${memberName}`);\n }\n }\n async sort(passedWhenNotRevValues = false, crypto = getCrypto(true)) {\n const localCerts = [];\n const buildPath = async (certificate, crypto) => {\n const result = [];\n function checkUnique(array) {\n let unique = true;\n for (let i = 0; i < array.length; i++) {\n for (let j = 0; j < array.length; j++) {\n if (j === i)\n continue;\n if (array[i] === array[j]) {\n unique = false;\n break;\n }\n }\n if (!unique)\n break;\n }\n return unique;\n }\n if (isTrusted(certificate, this.trustedCerts)) {\n return [[certificate]];\n }\n const findIssuerResult = await this.findIssuer(certificate, this, crypto);\n if (findIssuerResult.length === 0) {\n throw new Error(\"No valid certificate paths found\");\n }\n for (let i = 0; i < findIssuerResult.length; i++) {\n if (pvtsutils.BufferSourceConverter.isEqual(findIssuerResult[i].tbsView, certificate.tbsView)) {\n result.push([findIssuerResult[i]]);\n continue;\n }\n const buildPathResult = await buildPath(findIssuerResult[i], crypto);\n for (let j = 0; j < buildPathResult.length; j++) {\n const copy = buildPathResult[j].slice();\n copy.splice(0, 0, findIssuerResult[i]);\n if (checkUnique(copy))\n result.push(copy);\n else\n result.push(buildPathResult[j]);\n }\n }\n return result;\n };\n const findCRL = async (certificate) => {\n const issuerCertificates = [];\n const crls = [];\n const crlsAndCertificates = [];\n issuerCertificates.push(...localCerts.filter(element => certificate.issuer.isEqual(element.subject)));\n if (issuerCertificates.length === 0) {\n return {\n status: 1,\n statusMessage: \"No certificate's issuers\"\n };\n }\n crls.push(...this.crls.filter(o => o.issuer.isEqual(certificate.issuer)));\n if (crls.length === 0) {\n return {\n status: 2,\n statusMessage: \"No CRLs for specific certificate issuer\"\n };\n }\n for (let i = 0; i < crls.length; i++) {\n const crl = crls[i];\n if (crl.nextUpdate && crl.nextUpdate.value < this.checkDate) {\n continue;\n }\n for (let j = 0; j < issuerCertificates.length; j++) {\n try {\n const result = await crls[i].verify({ issuerCertificate: issuerCertificates[j] }, crypto);\n if (result) {\n crlsAndCertificates.push({\n crl: crls[i],\n certificate: issuerCertificates[j]\n });\n break;\n }\n }\n catch (ex) {\n }\n }\n }\n if (crlsAndCertificates.length) {\n return {\n status: 0,\n statusMessage: EMPTY_STRING,\n result: crlsAndCertificates\n };\n }\n return {\n status: 3,\n statusMessage: \"No valid CRLs found\"\n };\n };\n const findOCSP = async (certificate, issuerCertificate) => {\n const hashAlgorithm = crypto.getAlgorithmByOID(certificate.signatureAlgorithm.algorithmId);\n if (!hashAlgorithm.name) {\n return 1;\n }\n if (!hashAlgorithm.hash) {\n return 1;\n }\n for (let i = 0; i < this.ocsps.length; i++) {\n const ocsp = this.ocsps[i];\n const result = await ocsp.getCertificateStatus(certificate, issuerCertificate, crypto);\n if (result.isForCertificate) {\n if (result.status === 0)\n return 0;\n return 1;\n }\n }\n return 2;\n };\n async function checkForCA(certificate, needToCheckCRL = false) {\n let isCA = false;\n let mustBeCA = false;\n let keyUsagePresent = false;\n let cRLSign = false;\n if (certificate.extensions) {\n for (let j = 0; j < certificate.extensions.length; j++) {\n const extension = certificate.extensions[j];\n if (extension.critical && !extension.parsedValue) {\n return {\n result: false,\n resultCode: 6,\n resultMessage: `Unable to parse critical certificate extension: ${extension.extnID}`\n };\n }\n if (extension.extnID === id_KeyUsage) {\n keyUsagePresent = true;\n const view = new Uint8Array(extension.parsedValue.valueBlock.valueHex);\n if ((view[0] & 0x04) === 0x04)\n mustBeCA = true;\n if ((view[0] & 0x02) === 0x02)\n cRLSign = true;\n }\n if (extension.extnID === id_BasicConstraints) {\n if (\"cA\" in extension.parsedValue) {\n if (extension.parsedValue.cA === true)\n isCA = true;\n }\n }\n }\n if ((mustBeCA === true) && (isCA === false)) {\n return {\n result: false,\n resultCode: 3,\n resultMessage: \"Unable to build certificate chain - using \\\"keyCertSign\\\" flag set without BasicConstraints\"\n };\n }\n if ((keyUsagePresent === true) && (isCA === true) && (mustBeCA === false)) {\n return {\n result: false,\n resultCode: 4,\n resultMessage: \"Unable to build certificate chain - \\\"keyCertSign\\\" flag was not set\"\n };\n }\n if ((isCA === true) && (keyUsagePresent === true) && ((needToCheckCRL) && (cRLSign === false))) {\n return {\n result: false,\n resultCode: 5,\n resultMessage: \"Unable to build certificate chain - intermediate certificate must have \\\"cRLSign\\\" key usage flag\"\n };\n }\n }\n if (isCA === false) {\n return {\n result: false,\n resultCode: 7,\n resultMessage: \"Unable to build certificate chain - more than one possible end-user certificate\"\n };\n }\n return {\n result: true,\n resultCode: 0,\n resultMessage: EMPTY_STRING\n };\n }\n const basicCheck = async (path, checkDate) => {\n for (let i = 0; i < path.length; i++) {\n if ((path[i].notBefore.value > checkDate) ||\n (path[i].notAfter.value < checkDate)) {\n return {\n result: false,\n resultCode: 8,\n resultMessage: \"The certificate is either not yet valid or expired\"\n };\n }\n }\n if (path.length < 2) {\n return {\n result: false,\n resultCode: 9,\n resultMessage: \"Too short certificate path\"\n };\n }\n for (let i = (path.length - 2); i >= 0; i--) {\n if (path[i].issuer.isEqual(path[i].subject) === false) {\n if (path[i].issuer.isEqual(path[i + 1].subject) === false) {\n return {\n result: false,\n resultCode: 10,\n resultMessage: \"Incorrect name chaining\"\n };\n }\n }\n }\n if ((this.crls.length !== 0) || (this.ocsps.length !== 0)) {\n for (let i = 0; i < (path.length - 1); i++) {\n let ocspResult = 2;\n let crlResult = {\n status: 0,\n statusMessage: EMPTY_STRING\n };\n if (this.ocsps.length !== 0) {\n ocspResult = await findOCSP(path[i], path[i + 1]);\n switch (ocspResult) {\n case 0:\n continue;\n case 1:\n return {\n result: false,\n resultCode: 12,\n resultMessage: \"One of certificates was revoked via OCSP response\"\n };\n }\n }\n if (this.crls.length !== 0) {\n crlResult = await findCRL(path[i]);\n if (crlResult.status === 0 && crlResult.result) {\n for (let j = 0; j < crlResult.result.length; j++) {\n const isCertificateRevoked = crlResult.result[j].crl.isCertificateRevoked(path[i]);\n if (isCertificateRevoked) {\n return {\n result: false,\n resultCode: 12,\n resultMessage: \"One of certificates had been revoked\"\n };\n }\n const isCertificateCA = await checkForCA(crlResult.result[j].certificate, true);\n if (isCertificateCA.result === false) {\n return {\n result: false,\n resultCode: 13,\n resultMessage: \"CRL issuer certificate is not a CA certificate or does not have crlSign flag\"\n };\n }\n }\n }\n else {\n if (passedWhenNotRevValues === false) {\n throw new ChainValidationError(ChainValidationCode.noRevocation, `No revocation values found for one of certificates: ${crlResult.statusMessage}`);\n }\n }\n }\n else {\n if (ocspResult === 2) {\n return {\n result: false,\n resultCode: 11,\n resultMessage: \"No revocation values found for one of certificates\"\n };\n }\n }\n if ((ocspResult === 2) && (crlResult.status === 2) && passedWhenNotRevValues) {\n const issuerCertificate = path[i + 1];\n let extensionFound = false;\n if (issuerCertificate.extensions) {\n for (const extension of issuerCertificate.extensions) {\n switch (extension.extnID) {\n case id_CRLDistributionPoints:\n case id_FreshestCRL:\n case id_AuthorityInfoAccess:\n extensionFound = true;\n break;\n }\n }\n }\n if (extensionFound) {\n throw new ChainValidationError(ChainValidationCode.noRevocation, `No revocation values found for one of certificates: ${crlResult.statusMessage}`);\n }\n }\n }\n }\n for (const [i, cert] of path.entries()) {\n if (!i) {\n continue;\n }\n const result = await checkForCA(cert);\n if (!result.result) {\n return {\n result: false,\n resultCode: 14,\n resultMessage: \"One of intermediate certificates is not a CA certificate\"\n };\n }\n }\n return {\n result: true\n };\n };\n localCerts.push(...this.trustedCerts);\n localCerts.push(...this.certs);\n for (let i = 0; i < localCerts.length; i++) {\n for (let j = 0; j < localCerts.length; j++) {\n if (i === j)\n continue;\n if (pvtsutils.BufferSourceConverter.isEqual(localCerts[i].tbsView, localCerts[j].tbsView)) {\n localCerts.splice(j, 1);\n i = 0;\n break;\n }\n }\n }\n const leafCert = localCerts[localCerts.length - 1];\n let result;\n const certificatePath = [leafCert];\n result = await buildPath(leafCert, crypto);\n if (result.length === 0) {\n throw new ChainValidationError(ChainValidationCode.noPath, \"Unable to find certificate path\");\n }\n for (let i = result.length - 1; i >= 0; i--) {\n let found = false;\n for (let j = 0; j < (result[i]).length; j++) {\n const certificate = (result[i])[j];\n for (let k = 0; k < this.trustedCerts.length; k++) {\n if (pvtsutils.BufferSourceConverter.isEqual(certificate.tbsView, this.trustedCerts[k].tbsView)) {\n found = true;\n break;\n }\n }\n if (found)\n break;\n }\n if (!found) {\n result.splice(i, 1);\n }\n }\n if (result.length === 0) {\n throw new ChainValidationError(ChainValidationCode.noValidPath, \"No valid certificate paths found\");\n }\n let shortestLength = result[0].length;\n let shortestIndex = 0;\n for (let i = 0; i < result.length; i++) {\n if (result[i].length < shortestLength) {\n shortestLength = result[i].length;\n shortestIndex = i;\n }\n }\n for (let i = 0; i < result[shortestIndex].length; i++)\n certificatePath.push((result[shortestIndex])[i]);\n result = await basicCheck(certificatePath, this.checkDate);\n if (result.result === false)\n throw result;\n return certificatePath;\n }\n async verify(parameters = {}, crypto = getCrypto(true)) {\n function compareDNSName(name, constraint) {\n const namePrepared = stringPrep(name);\n const constraintPrepared = stringPrep(constraint);\n const nameSplitted = namePrepared.split(\".\");\n const constraintSplitted = constraintPrepared.split(\".\");\n const nameLen = nameSplitted.length;\n const constrLen = constraintSplitted.length;\n if ((nameLen === 0) || (constrLen === 0) || (nameLen < constrLen)) {\n return false;\n }\n for (let i = 0; i < nameLen; i++) {\n if (nameSplitted[i].length === 0) {\n return false;\n }\n }\n for (let i = 0; i < constrLen; i++) {\n if (constraintSplitted[i].length === 0) {\n if (i === 0) {\n if (constrLen === 1) {\n return false;\n }\n continue;\n }\n return false;\n }\n }\n for (let i = 0; i < constrLen; i++) {\n if (constraintSplitted[constrLen - 1 - i].length === 0) {\n continue;\n }\n if (nameSplitted[nameLen - 1 - i].localeCompare(constraintSplitted[constrLen - 1 - i]) !== 0) {\n return false;\n }\n }\n return true;\n }\n function compareRFC822Name(name, constraint) {\n const namePrepared = stringPrep(name);\n const constraintPrepared = stringPrep(constraint);\n const nameSplitted = namePrepared.split(\"@\");\n const constraintSplitted = constraintPrepared.split(\"@\");\n if ((nameSplitted.length === 0) || (constraintSplitted.length === 0) || (nameSplitted.length < constraintSplitted.length))\n return false;\n if (constraintSplitted.length === 1) {\n const result = compareDNSName(nameSplitted[1], constraintSplitted[0]);\n if (result) {\n const ns = nameSplitted[1].split(\".\");\n const cs = constraintSplitted[0].split(\".\");\n if (cs[0].length === 0)\n return true;\n return ns.length === cs.length;\n }\n return false;\n }\n return (namePrepared.localeCompare(constraintPrepared) === 0);\n }\n function compareUniformResourceIdentifier(name, constraint) {\n let namePrepared = stringPrep(name);\n const constraintPrepared = stringPrep(constraint);\n const ns = namePrepared.split(\"/\");\n const cs = constraintPrepared.split(\"/\");\n if (cs.length > 1)\n return false;\n if (ns.length > 1) {\n for (let i = 0; i < ns.length; i++) {\n if ((ns[i].length > 0) && (ns[i].charAt(ns[i].length - 1) !== \":\")) {\n const nsPort = ns[i].split(\":\");\n namePrepared = nsPort[0];\n break;\n }\n }\n }\n const result = compareDNSName(namePrepared, constraintPrepared);\n if (result) {\n const nameSplitted = namePrepared.split(\".\");\n const constraintSplitted = constraintPrepared.split(\".\");\n if (constraintSplitted[0].length === 0)\n return true;\n return nameSplitted.length === constraintSplitted.length;\n }\n return false;\n }\n function compareIPAddress(name, constraint) {\n const nameView = name.valueBlock.valueHexView;\n const constraintView = constraint.valueBlock.valueHexView;\n if ((nameView.length === 4) && (constraintView.length === 8)) {\n for (let i = 0; i < 4; i++) {\n if ((nameView[i] ^ constraintView[i]) & constraintView[i + 4])\n return false;\n }\n return true;\n }\n if ((nameView.length === 16) && (constraintView.length === 32)) {\n for (let i = 0; i < 16; i++) {\n if ((nameView[i] ^ constraintView[i]) & constraintView[i + 16])\n return false;\n }\n return true;\n }\n return false;\n }\n function compareDirectoryName(name, constraint) {\n if ((name.typesAndValues.length === 0) || (constraint.typesAndValues.length === 0))\n return true;\n if (name.typesAndValues.length < constraint.typesAndValues.length)\n return false;\n let result = true;\n let nameStart = 0;\n for (let i = 0; i < constraint.typesAndValues.length; i++) {\n let localResult = false;\n for (let j = nameStart; j < name.typesAndValues.length; j++) {\n localResult = name.typesAndValues[j].isEqual(constraint.typesAndValues[i]);\n if (name.typesAndValues[j].type === constraint.typesAndValues[i].type)\n result = result && localResult;\n if (localResult === true) {\n if ((nameStart === 0) || (nameStart === j)) {\n nameStart = j + 1;\n break;\n }\n else\n return false;\n }\n }\n if (localResult === false)\n return false;\n }\n return (nameStart === 0) ? false : result;\n }\n try {\n if (this.certs.length === 0)\n throw new Error(\"Empty certificate array\");\n const passedWhenNotRevValues = parameters.passedWhenNotRevValues || false;\n const initialPolicySet = parameters.initialPolicySet || [id_AnyPolicy];\n const initialExplicitPolicy = parameters.initialExplicitPolicy || false;\n const initialPolicyMappingInhibit = parameters.initialPolicyMappingInhibit || false;\n const initialInhibitPolicy = parameters.initialInhibitPolicy || false;\n const initialPermittedSubtreesSet = parameters.initialPermittedSubtreesSet || [];\n const initialExcludedSubtreesSet = parameters.initialExcludedSubtreesSet || [];\n const initialRequiredNameForms = parameters.initialRequiredNameForms || [];\n let explicitPolicyIndicator = initialExplicitPolicy;\n let policyMappingInhibitIndicator = initialPolicyMappingInhibit;\n let inhibitAnyPolicyIndicator = initialInhibitPolicy;\n const pendingConstraints = [\n false,\n false,\n false,\n ];\n let explicitPolicyPending = 0;\n let policyMappingInhibitPending = 0;\n let inhibitAnyPolicyPending = 0;\n let permittedSubtrees = initialPermittedSubtreesSet;\n let excludedSubtrees = initialExcludedSubtreesSet;\n const requiredNameForms = initialRequiredNameForms;\n let pathDepth = 1;\n this.certs = await this.sort(passedWhenNotRevValues, crypto);\n const allPolicies = [];\n allPolicies.push(id_AnyPolicy);\n const policiesAndCerts = [];\n const anyPolicyArray = new Array(this.certs.length - 1);\n for (let ii = 0; ii < (this.certs.length - 1); ii++)\n anyPolicyArray[ii] = true;\n policiesAndCerts.push(anyPolicyArray);\n const policyMappings = new Array(this.certs.length - 1);\n const certPolicies = new Array(this.certs.length - 1);\n let explicitPolicyStart = (explicitPolicyIndicator) ? (this.certs.length - 1) : (-1);\n for (let i = (this.certs.length - 2); i >= 0; i--, pathDepth++) {\n const cert = this.certs[i];\n if (cert.extensions) {\n for (let j = 0; j < cert.extensions.length; j++) {\n const extension = cert.extensions[j];\n if (extension.extnID === id_CertificatePolicies) {\n certPolicies[i] = extension.parsedValue;\n for (let s = 0; s < allPolicies.length; s++) {\n if (allPolicies[s] === id_AnyPolicy) {\n delete (policiesAndCerts[s])[i];\n break;\n }\n }\n for (let k = 0; k < extension.parsedValue.certificatePolicies.length; k++) {\n let policyIndex = (-1);\n const policyId = extension.parsedValue.certificatePolicies[k].policyIdentifier;\n for (let s = 0; s < allPolicies.length; s++) {\n if (policyId === allPolicies[s]) {\n policyIndex = s;\n break;\n }\n }\n if (policyIndex === (-1)) {\n allPolicies.push(policyId);\n const certArray = new Array(this.certs.length - 1);\n certArray[i] = true;\n policiesAndCerts.push(certArray);\n }\n else\n (policiesAndCerts[policyIndex])[i] = true;\n }\n }\n if (extension.extnID === id_PolicyMappings) {\n if (policyMappingInhibitIndicator) {\n return {\n result: false,\n resultCode: 98,\n resultMessage: \"Policy mapping prohibited\"\n };\n }\n policyMappings[i] = extension.parsedValue;\n }\n if (extension.extnID === id_PolicyConstraints) {\n if (explicitPolicyIndicator === false) {\n if (extension.parsedValue.requireExplicitPolicy === 0) {\n explicitPolicyIndicator = true;\n explicitPolicyStart = i;\n }\n else {\n if (pendingConstraints[0] === false) {\n pendingConstraints[0] = true;\n explicitPolicyPending = extension.parsedValue.requireExplicitPolicy;\n }\n else\n explicitPolicyPending = (explicitPolicyPending > extension.parsedValue.requireExplicitPolicy) ? extension.parsedValue.requireExplicitPolicy : explicitPolicyPending;\n }\n if (extension.parsedValue.inhibitPolicyMapping === 0)\n policyMappingInhibitIndicator = true;\n else {\n if (pendingConstraints[1] === false) {\n pendingConstraints[1] = true;\n policyMappingInhibitPending = extension.parsedValue.inhibitPolicyMapping + 1;\n }\n else\n policyMappingInhibitPending = (policyMappingInhibitPending > (extension.parsedValue.inhibitPolicyMapping + 1)) ? (extension.parsedValue.inhibitPolicyMapping + 1) : policyMappingInhibitPending;\n }\n }\n }\n if (extension.extnID === id_InhibitAnyPolicy) {\n if (inhibitAnyPolicyIndicator === false) {\n if (extension.parsedValue.valueBlock.valueDec === 0)\n inhibitAnyPolicyIndicator = true;\n else {\n if (pendingConstraints[2] === false) {\n pendingConstraints[2] = true;\n inhibitAnyPolicyPending = extension.parsedValue.valueBlock.valueDec;\n }\n else\n inhibitAnyPolicyPending = (inhibitAnyPolicyPending > extension.parsedValue.valueBlock.valueDec) ? extension.parsedValue.valueBlock.valueDec : inhibitAnyPolicyPending;\n }\n }\n }\n }\n if (inhibitAnyPolicyIndicator === true) {\n let policyIndex = (-1);\n for (let searchAnyPolicy = 0; searchAnyPolicy < allPolicies.length; searchAnyPolicy++) {\n if (allPolicies[searchAnyPolicy] === id_AnyPolicy) {\n policyIndex = searchAnyPolicy;\n break;\n }\n }\n if (policyIndex !== (-1))\n delete (policiesAndCerts[0])[i];\n }\n if (explicitPolicyIndicator === false) {\n if (pendingConstraints[0] === true) {\n explicitPolicyPending--;\n if (explicitPolicyPending === 0) {\n explicitPolicyIndicator = true;\n explicitPolicyStart = i;\n pendingConstraints[0] = false;\n }\n }\n }\n if (policyMappingInhibitIndicator === false) {\n if (pendingConstraints[1] === true) {\n policyMappingInhibitPending--;\n if (policyMappingInhibitPending === 0) {\n policyMappingInhibitIndicator = true;\n pendingConstraints[1] = false;\n }\n }\n }\n if (inhibitAnyPolicyIndicator === false) {\n if (pendingConstraints[2] === true) {\n inhibitAnyPolicyPending--;\n if (inhibitAnyPolicyPending === 0) {\n inhibitAnyPolicyIndicator = true;\n pendingConstraints[2] = false;\n }\n }\n }\n }\n }\n for (let i = 0; i < (this.certs.length - 1); i++) {\n if ((i < (this.certs.length - 2)) && (typeof policyMappings[i + 1] !== \"undefined\")) {\n for (let k = 0; k < policyMappings[i + 1].mappings.length; k++) {\n if ((policyMappings[i + 1].mappings[k].issuerDomainPolicy === id_AnyPolicy) || (policyMappings[i + 1].mappings[k].subjectDomainPolicy === id_AnyPolicy)) {\n return {\n result: false,\n resultCode: 99,\n resultMessage: \"The \\\"anyPolicy\\\" should not be a part of policy mapping scheme\"\n };\n }\n let issuerDomainPolicyIndex = (-1);\n let subjectDomainPolicyIndex = (-1);\n for (let n = 0; n < allPolicies.length; n++) {\n if (allPolicies[n] === policyMappings[i + 1].mappings[k].issuerDomainPolicy)\n issuerDomainPolicyIndex = n;\n if (allPolicies[n] === policyMappings[i + 1].mappings[k].subjectDomainPolicy)\n subjectDomainPolicyIndex = n;\n }\n if (typeof (policiesAndCerts[issuerDomainPolicyIndex])[i] !== \"undefined\")\n delete (policiesAndCerts[issuerDomainPolicyIndex])[i];\n for (let j = 0; j < certPolicies[i].certificatePolicies.length; j++) {\n if (policyMappings[i + 1].mappings[k].subjectDomainPolicy === certPolicies[i].certificatePolicies[j].policyIdentifier) {\n if ((issuerDomainPolicyIndex !== (-1)) && (subjectDomainPolicyIndex !== (-1))) {\n for (let m = 0; m <= i; m++) {\n if (typeof (policiesAndCerts[subjectDomainPolicyIndex])[m] !== \"undefined\") {\n (policiesAndCerts[issuerDomainPolicyIndex])[m] = true;\n delete (policiesAndCerts[subjectDomainPolicyIndex])[m];\n }\n }\n }\n }\n }\n }\n }\n }\n for (let i = 0; i < allPolicies.length; i++) {\n if (allPolicies[i] === id_AnyPolicy) {\n for (let j = 0; j < explicitPolicyStart; j++)\n delete (policiesAndCerts[i])[j];\n }\n }\n const authConstrPolicies = [];\n for (let i = 0; i < policiesAndCerts.length; i++) {\n let found = true;\n for (let j = 0; j < (this.certs.length - 1); j++) {\n let anyPolicyFound = false;\n if ((j < explicitPolicyStart) && (allPolicies[i] === id_AnyPolicy) && (allPolicies.length > 1)) {\n found = false;\n break;\n }\n if (typeof (policiesAndCerts[i])[j] === \"undefined\") {\n if (j >= explicitPolicyStart) {\n for (let k = 0; k < allPolicies.length; k++) {\n if (allPolicies[k] === id_AnyPolicy) {\n if ((policiesAndCerts[k])[j] === true)\n anyPolicyFound = true;\n break;\n }\n }\n }\n if (!anyPolicyFound) {\n found = false;\n break;\n }\n }\n }\n if (found === true)\n authConstrPolicies.push(allPolicies[i]);\n }\n let userConstrPolicies = [];\n if ((initialPolicySet.length === 1) && (initialPolicySet[0] === id_AnyPolicy) && (explicitPolicyIndicator === false))\n userConstrPolicies = initialPolicySet;\n else {\n if ((authConstrPolicies.length === 1) && (authConstrPolicies[0] === id_AnyPolicy))\n userConstrPolicies = initialPolicySet;\n else {\n for (let i = 0; i < authConstrPolicies.length; i++) {\n for (let j = 0; j < initialPolicySet.length; j++) {\n if ((initialPolicySet[j] === authConstrPolicies[i]) || (initialPolicySet[j] === id_AnyPolicy)) {\n userConstrPolicies.push(authConstrPolicies[i]);\n break;\n }\n }\n }\n }\n }\n const policyResult = {\n result: (userConstrPolicies.length > 0),\n resultCode: 0,\n resultMessage: (userConstrPolicies.length > 0) ? EMPTY_STRING : \"Zero \\\"userConstrPolicies\\\" array, no intersections with \\\"authConstrPolicies\\\"\",\n authConstrPolicies,\n userConstrPolicies,\n explicitPolicyIndicator,\n policyMappings,\n certificatePath: this.certs\n };\n if (userConstrPolicies.length === 0)\n return policyResult;\n if (policyResult.result === false)\n return policyResult;\n pathDepth = 1;\n for (let i = (this.certs.length - 2); i >= 0; i--, pathDepth++) {\n const cert = this.certs[i];\n let subjectAltNames = [];\n let certPermittedSubtrees = [];\n let certExcludedSubtrees = [];\n if (cert.extensions) {\n for (let j = 0; j < cert.extensions.length; j++) {\n const extension = cert.extensions[j];\n if (extension.extnID === id_NameConstraints) {\n if (\"permittedSubtrees\" in extension.parsedValue)\n certPermittedSubtrees = certPermittedSubtrees.concat(extension.parsedValue.permittedSubtrees);\n if (\"excludedSubtrees\" in extension.parsedValue)\n certExcludedSubtrees = certExcludedSubtrees.concat(extension.parsedValue.excludedSubtrees);\n }\n if (extension.extnID === id_SubjectAltName)\n subjectAltNames = subjectAltNames.concat(extension.parsedValue.altNames);\n }\n }\n let formFound = (requiredNameForms.length <= 0);\n for (let j = 0; j < requiredNameForms.length; j++) {\n switch (requiredNameForms[j].base.type) {\n case 4:\n {\n if (requiredNameForms[j].base.value.typesAndValues.length !== cert.subject.typesAndValues.length)\n continue;\n formFound = true;\n for (let k = 0; k < cert.subject.typesAndValues.length; k++) {\n if (cert.subject.typesAndValues[k].type !== requiredNameForms[j].base.value.typesAndValues[k].type) {\n formFound = false;\n break;\n }\n }\n if (formFound === true)\n break;\n }\n break;\n default:\n }\n }\n if (formFound === false) {\n policyResult.result = false;\n policyResult.resultCode = 21;\n policyResult.resultMessage = \"No necessary name form found\";\n throw policyResult;\n }\n const constrGroups = [\n [],\n [],\n [],\n [],\n [],\n ];\n for (let j = 0; j < permittedSubtrees.length; j++) {\n switch (permittedSubtrees[j].base.type) {\n case 1:\n constrGroups[0].push(permittedSubtrees[j]);\n break;\n case 2:\n constrGroups[1].push(permittedSubtrees[j]);\n break;\n case 4:\n constrGroups[2].push(permittedSubtrees[j]);\n break;\n case 6:\n constrGroups[3].push(permittedSubtrees[j]);\n break;\n case 7:\n constrGroups[4].push(permittedSubtrees[j]);\n break;\n default:\n }\n }\n for (let p = 0; p < 5; p++) {\n let groupPermitted = false;\n let valueExists = false;\n const group = constrGroups[p];\n for (let j = 0; j < group.length; j++) {\n switch (p) {\n case 0:\n if (subjectAltNames.length > 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 1) {\n valueExists = true;\n groupPermitted = groupPermitted || compareRFC822Name(subjectAltNames[k].value, group[j].base.value);\n }\n }\n }\n else {\n for (let k = 0; k < cert.subject.typesAndValues.length; k++) {\n if ((cert.subject.typesAndValues[k].type === \"1.2.840.113549.1.9.1\") ||\n (cert.subject.typesAndValues[k].type === \"0.9.2342.19200300.100.1.3\")) {\n valueExists = true;\n groupPermitted = groupPermitted || compareRFC822Name(cert.subject.typesAndValues[k].value.valueBlock.value, group[j].base.value);\n }\n }\n }\n break;\n case 1:\n if (subjectAltNames.length > 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 2) {\n valueExists = true;\n groupPermitted = groupPermitted || compareDNSName(subjectAltNames[k].value, group[j].base.value);\n }\n }\n }\n break;\n case 2:\n valueExists = true;\n groupPermitted = compareDirectoryName(cert.subject, group[j].base.value);\n break;\n case 3:\n if (subjectAltNames.length > 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 6) {\n valueExists = true;\n groupPermitted = groupPermitted || compareUniformResourceIdentifier(subjectAltNames[k].value, group[j].base.value);\n }\n }\n }\n break;\n case 4:\n if (subjectAltNames.length > 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 7) {\n valueExists = true;\n groupPermitted = groupPermitted || compareIPAddress(subjectAltNames[k].value, group[j].base.value);\n }\n }\n }\n break;\n default:\n }\n if (groupPermitted)\n break;\n }\n if ((groupPermitted === false) && (group.length > 0) && valueExists) {\n policyResult.result = false;\n policyResult.resultCode = 41;\n policyResult.resultMessage = \"Failed to meet \\\"permitted sub-trees\\\" name constraint\";\n throw policyResult;\n }\n }\n let excluded = false;\n for (let j = 0; j < excludedSubtrees.length; j++) {\n switch (excludedSubtrees[j].base.type) {\n case 1:\n if (subjectAltNames.length >= 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 1)\n excluded = excluded || compareRFC822Name(subjectAltNames[k].value, excludedSubtrees[j].base.value);\n }\n }\n else {\n for (let k = 0; k < cert.subject.typesAndValues.length; k++) {\n if ((cert.subject.typesAndValues[k].type === \"1.2.840.113549.1.9.1\") ||\n (cert.subject.typesAndValues[k].type === \"0.9.2342.19200300.100.1.3\"))\n excluded = excluded || compareRFC822Name(cert.subject.typesAndValues[k].value.valueBlock.value, excludedSubtrees[j].base.value);\n }\n }\n break;\n case 2:\n if (subjectAltNames.length > 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 2)\n excluded = excluded || compareDNSName(subjectAltNames[k].value, excludedSubtrees[j].base.value);\n }\n }\n break;\n case 4:\n excluded = excluded || compareDirectoryName(cert.subject, excludedSubtrees[j].base.value);\n break;\n case 6:\n if (subjectAltNames.length > 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 6)\n excluded = excluded || compareUniformResourceIdentifier(subjectAltNames[k].value, excludedSubtrees[j].base.value);\n }\n }\n break;\n case 7:\n if (subjectAltNames.length > 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 7)\n excluded = excluded || compareIPAddress(subjectAltNames[k].value, excludedSubtrees[j].base.value);\n }\n }\n break;\n default:\n }\n if (excluded)\n break;\n }\n if (excluded === true) {\n policyResult.result = false;\n policyResult.resultCode = 42;\n policyResult.resultMessage = \"Failed to meet \\\"excluded sub-trees\\\" name constraint\";\n throw policyResult;\n }\n permittedSubtrees = permittedSubtrees.concat(certPermittedSubtrees);\n excludedSubtrees = excludedSubtrees.concat(certExcludedSubtrees);\n }\n return policyResult;\n }\n catch (error) {\n if (error instanceof Error) {\n if (error instanceof ChainValidationError) {\n return {\n result: false,\n resultCode: error.code,\n resultMessage: error.message,\n error: error,\n };\n }\n return {\n result: false,\n resultCode: ChainValidationCode.unknown,\n resultMessage: error.message,\n error: error,\n };\n }\n if (error && typeof error === \"object\" && \"resultMessage\" in error) {\n return error;\n }\n return {\n result: false,\n resultCode: -1,\n resultMessage: `${error}`,\n };\n }\n }\n}\n\nconst TBS_RESPONSE_DATA = \"tbsResponseData\";\nconst SIGNATURE_ALGORITHM$3 = \"signatureAlgorithm\";\nconst SIGNATURE$2 = \"signature\";\nconst CERTS$1 = \"certs\";\nconst BASIC_OCSP_RESPONSE = \"BasicOCSPResponse\";\nconst BASIC_OCSP_RESPONSE_TBS_RESPONSE_DATA = `${BASIC_OCSP_RESPONSE}.${TBS_RESPONSE_DATA}`;\nconst BASIC_OCSP_RESPONSE_SIGNATURE_ALGORITHM = `${BASIC_OCSP_RESPONSE}.${SIGNATURE_ALGORITHM$3}`;\nconst BASIC_OCSP_RESPONSE_SIGNATURE = `${BASIC_OCSP_RESPONSE}.${SIGNATURE$2}`;\nconst BASIC_OCSP_RESPONSE_CERTS = `${BASIC_OCSP_RESPONSE}.${CERTS$1}`;\nconst CLEAR_PROPS$g = [\n BASIC_OCSP_RESPONSE_TBS_RESPONSE_DATA,\n BASIC_OCSP_RESPONSE_SIGNATURE_ALGORITHM,\n BASIC_OCSP_RESPONSE_SIGNATURE,\n BASIC_OCSP_RESPONSE_CERTS\n];\nclass BasicOCSPResponse extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.tbsResponseData = pvutils.getParametersValue(parameters, TBS_RESPONSE_DATA, BasicOCSPResponse.defaultValues(TBS_RESPONSE_DATA));\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$3, BasicOCSPResponse.defaultValues(SIGNATURE_ALGORITHM$3));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE$2, BasicOCSPResponse.defaultValues(SIGNATURE$2));\n if (CERTS$1 in parameters) {\n this.certs = pvutils.getParametersValue(parameters, CERTS$1, BasicOCSPResponse.defaultValues(CERTS$1));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TBS_RESPONSE_DATA:\n return new ResponseData();\n case SIGNATURE_ALGORITHM$3:\n return new AlgorithmIdentifier();\n case SIGNATURE$2:\n return new asn1js.BitString();\n case CERTS$1:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case \"type\":\n {\n let comparisonResult = ((ResponseData.compareWithDefault(\"tbs\", memberValue.tbs)) &&\n (ResponseData.compareWithDefault(\"responderID\", memberValue.responderID)) &&\n (ResponseData.compareWithDefault(\"producedAt\", memberValue.producedAt)) &&\n (ResponseData.compareWithDefault(\"responses\", memberValue.responses)));\n if (\"responseExtensions\" in memberValue)\n comparisonResult = comparisonResult && (ResponseData.compareWithDefault(\"responseExtensions\", memberValue.responseExtensions));\n return comparisonResult;\n }\n case SIGNATURE_ALGORITHM$3:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case SIGNATURE$2:\n return (memberValue.isEqual(BasicOCSPResponse.defaultValues(memberName)));\n case CERTS$1:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || BASIC_OCSP_RESPONSE),\n value: [\n ResponseData.schema(names.tbsResponseData || {\n names: {\n blockName: BASIC_OCSP_RESPONSE_TBS_RESPONSE_DATA\n }\n }),\n AlgorithmIdentifier.schema(names.signatureAlgorithm || {\n names: {\n blockName: BASIC_OCSP_RESPONSE_SIGNATURE_ALGORITHM\n }\n }),\n new asn1js.BitString({ name: (names.signature || BASIC_OCSP_RESPONSE_SIGNATURE) }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Sequence({\n value: [new asn1js.Repeated({\n name: BASIC_OCSP_RESPONSE_CERTS,\n value: Certificate.schema(names.certs || {})\n })]\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$g);\n const asn1 = asn1js.compareSchema(schema, schema, BasicOCSPResponse.schema());\n AsnError.assertSchema(asn1, this.className);\n this.tbsResponseData = new ResponseData({ schema: asn1.result[BASIC_OCSP_RESPONSE_TBS_RESPONSE_DATA] });\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result[BASIC_OCSP_RESPONSE_SIGNATURE_ALGORITHM] });\n this.signature = asn1.result[BASIC_OCSP_RESPONSE_SIGNATURE];\n if (BASIC_OCSP_RESPONSE_CERTS in asn1.result) {\n this.certs = Array.from(asn1.result[BASIC_OCSP_RESPONSE_CERTS], element => new Certificate({ schema: element }));\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.tbsResponseData.toSchema());\n outputArray.push(this.signatureAlgorithm.toSchema());\n outputArray.push(this.signature);\n if (this.certs) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Sequence({\n value: Array.from(this.certs, o => o.toSchema())\n })\n ]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n tbsResponseData: this.tbsResponseData.toJSON(),\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signature: this.signature.toJSON(),\n };\n if (this.certs) {\n res.certs = Array.from(this.certs, o => o.toJSON());\n }\n return res;\n }\n async getCertificateStatus(certificate, issuerCertificate, crypto = getCrypto(true)) {\n const result = {\n isForCertificate: false,\n status: 2\n };\n const hashesObject = {};\n const certIDs = [];\n for (const response of this.tbsResponseData.responses) {\n const hashAlgorithm = crypto.getAlgorithmByOID(response.certID.hashAlgorithm.algorithmId, true, \"CertID.hashAlgorithm\");\n if (!hashesObject[hashAlgorithm.name]) {\n hashesObject[hashAlgorithm.name] = 1;\n const certID = new CertID();\n certIDs.push(certID);\n await certID.createForCertificate(certificate, {\n hashAlgorithm: hashAlgorithm.name,\n issuerCertificate\n }, crypto);\n }\n }\n for (const response of this.tbsResponseData.responses) {\n for (const id of certIDs) {\n if (response.certID.isEqual(id)) {\n result.isForCertificate = true;\n try {\n switch (response.certStatus.idBlock.isConstructed) {\n case true:\n if (response.certStatus.idBlock.tagNumber === 1)\n result.status = 1;\n break;\n case false:\n switch (response.certStatus.idBlock.tagNumber) {\n case 0:\n result.status = 0;\n break;\n case 2:\n result.status = 2;\n break;\n default:\n }\n break;\n default:\n }\n }\n catch (ex) {\n }\n return result;\n }\n }\n }\n return result;\n }\n async sign(privateKey, hashAlgorithm = \"SHA-1\", crypto = getCrypto(true)) {\n if (!privateKey) {\n throw new Error(\"Need to provide a private key for signing\");\n }\n const signatureParams = await crypto.getSignatureParameters(privateKey, hashAlgorithm);\n const algorithm = signatureParams.parameters.algorithm;\n if (!(\"name\" in algorithm)) {\n throw new Error(\"Empty algorithm\");\n }\n this.signatureAlgorithm = signatureParams.signatureAlgorithm;\n this.tbsResponseData.tbsView = new Uint8Array(this.tbsResponseData.toSchema(true).toBER());\n const signature = await crypto.signWithPrivateKey(this.tbsResponseData.tbsView, privateKey, { algorithm });\n this.signature = new asn1js.BitString({ valueHex: signature });\n }\n async verify(params = {}, crypto = getCrypto(true)) {\n let signerCert = null;\n let certIndex = -1;\n const trustedCerts = params.trustedCerts || [];\n if (!this.certs) {\n throw new Error(\"No certificates attached to the BasicOCSPResponse\");\n }\n switch (true) {\n case (this.tbsResponseData.responderID instanceof RelativeDistinguishedNames):\n for (const [index, certificate] of this.certs.entries()) {\n if (certificate.subject.isEqual(this.tbsResponseData.responderID)) {\n certIndex = index;\n break;\n }\n }\n break;\n case (this.tbsResponseData.responderID instanceof asn1js.OctetString):\n for (const [index, cert] of this.certs.entries()) {\n const hash = await crypto.digest({ name: \"sha-1\" }, cert.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView);\n if (pvutils.isEqualBuffer(hash, this.tbsResponseData.responderID.valueBlock.valueHex)) {\n certIndex = index;\n break;\n }\n }\n break;\n default:\n throw new Error(\"Wrong value for responderID\");\n }\n if (certIndex === (-1))\n throw new Error(\"Correct certificate was not found in OCSP response\");\n signerCert = this.certs[certIndex];\n const additionalCerts = [signerCert];\n for (const cert of this.certs) {\n const caCert = await checkCA(cert, signerCert);\n if (caCert) {\n additionalCerts.push(caCert);\n }\n }\n const certChain = new CertificateChainValidationEngine({\n certs: additionalCerts,\n trustedCerts,\n });\n const verificationResult = await certChain.verify({}, crypto);\n if (!verificationResult.result) {\n throw new Error(\"Validation of signer's certificate failed\");\n }\n return crypto.verifyWithPublicKey(this.tbsResponseData.tbsView, this.signature, this.certs[certIndex].subjectPublicKeyInfo, this.signatureAlgorithm);\n }\n}\nBasicOCSPResponse.CLASS_NAME = \"BasicOCSPResponse\";\n\nconst TBS$1 = \"tbs\";\nconst VERSION$6 = \"version\";\nconst SUBJECT = \"subject\";\nconst SPKI = \"subjectPublicKeyInfo\";\nconst ATTRIBUTES$1 = \"attributes\";\nconst SIGNATURE_ALGORITHM$2 = \"signatureAlgorithm\";\nconst SIGNATURE_VALUE = \"signatureValue\";\nconst CSR_INFO = \"CertificationRequestInfo\";\nconst CSR_INFO_VERSION = `${CSR_INFO}.version`;\nconst CSR_INFO_SUBJECT = `${CSR_INFO}.subject`;\nconst CSR_INFO_SPKI = `${CSR_INFO}.subjectPublicKeyInfo`;\nconst CSR_INFO_ATTRS = `${CSR_INFO}.attributes`;\nconst CLEAR_PROPS$f = [\n CSR_INFO,\n CSR_INFO_VERSION,\n CSR_INFO_SUBJECT,\n CSR_INFO_SPKI,\n CSR_INFO_ATTRS,\n SIGNATURE_ALGORITHM$2,\n SIGNATURE_VALUE\n];\nfunction CertificationRequestInfo(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.CertificationRequestInfo || CSR_INFO),\n value: [\n new asn1js.Integer({ name: (names.CertificationRequestInfoVersion || CSR_INFO_VERSION) }),\n RelativeDistinguishedNames.schema(names.subject || {\n names: {\n blockName: CSR_INFO_SUBJECT\n }\n }),\n PublicKeyInfo.schema({\n names: {\n blockName: CSR_INFO_SPKI\n }\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Repeated({\n optional: true,\n name: (names.CertificationRequestInfoAttributes || CSR_INFO_ATTRS),\n value: Attribute.schema(names.attributes || {})\n })\n ]\n })\n ]\n }));\n}\nclass CertificationRequest extends PkiObject {\n get tbs() {\n return pvtsutils.BufferSourceConverter.toArrayBuffer(this.tbsView);\n }\n set tbs(value) {\n this.tbsView = new Uint8Array(value);\n }\n constructor(parameters = {}) {\n super();\n this.tbsView = new Uint8Array(pvutils.getParametersValue(parameters, TBS$1, CertificationRequest.defaultValues(TBS$1)));\n this.version = pvutils.getParametersValue(parameters, VERSION$6, CertificationRequest.defaultValues(VERSION$6));\n this.subject = pvutils.getParametersValue(parameters, SUBJECT, CertificationRequest.defaultValues(SUBJECT));\n this.subjectPublicKeyInfo = pvutils.getParametersValue(parameters, SPKI, CertificationRequest.defaultValues(SPKI));\n if (ATTRIBUTES$1 in parameters) {\n this.attributes = pvutils.getParametersValue(parameters, ATTRIBUTES$1, CertificationRequest.defaultValues(ATTRIBUTES$1));\n }\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$2, CertificationRequest.defaultValues(SIGNATURE_ALGORITHM$2));\n this.signatureValue = pvutils.getParametersValue(parameters, SIGNATURE_VALUE, CertificationRequest.defaultValues(SIGNATURE_VALUE));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TBS$1:\n return EMPTY_BUFFER;\n case VERSION$6:\n return 0;\n case SUBJECT:\n return new RelativeDistinguishedNames();\n case SPKI:\n return new PublicKeyInfo();\n case ATTRIBUTES$1:\n return [];\n case SIGNATURE_ALGORITHM$2:\n return new AlgorithmIdentifier();\n case SIGNATURE_VALUE:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n value: [\n CertificationRequestInfo(names.certificationRequestInfo || {}),\n new asn1js.Sequence({\n name: (names.signatureAlgorithm || SIGNATURE_ALGORITHM$2),\n value: [\n new asn1js.ObjectIdentifier(),\n new asn1js.Any({ optional: true })\n ]\n }),\n new asn1js.BitString({ name: (names.signatureValue || SIGNATURE_VALUE) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$f);\n const asn1 = asn1js.compareSchema(schema, schema, CertificationRequest.schema());\n AsnError.assertSchema(asn1, this.className);\n this.tbsView = asn1.result.CertificationRequestInfo.valueBeforeDecodeView;\n this.version = asn1.result[CSR_INFO_VERSION].valueBlock.valueDec;\n this.subject = new RelativeDistinguishedNames({ schema: asn1.result[CSR_INFO_SUBJECT] });\n this.subjectPublicKeyInfo = new PublicKeyInfo({ schema: asn1.result[CSR_INFO_SPKI] });\n if (CSR_INFO_ATTRS in asn1.result) {\n this.attributes = Array.from(asn1.result[CSR_INFO_ATTRS], element => new Attribute({ schema: element }));\n }\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.signatureAlgorithm });\n this.signatureValue = asn1.result.signatureValue;\n }\n encodeTBS() {\n const outputArray = [\n new asn1js.Integer({ value: this.version }),\n this.subject.toSchema(),\n this.subjectPublicKeyInfo.toSchema()\n ];\n if (ATTRIBUTES$1 in this) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: Array.from(this.attributes || [], o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toSchema(encodeFlag = false) {\n let tbsSchema;\n if (encodeFlag === false) {\n if (this.tbsView.byteLength === 0) {\n return CertificationRequest.schema();\n }\n const asn1 = asn1js.fromBER(this.tbsView);\n AsnError.assert(asn1, \"PKCS#10 Certificate Request\");\n tbsSchema = asn1.result;\n }\n else {\n tbsSchema = this.encodeTBS();\n }\n return (new asn1js.Sequence({\n value: [\n tbsSchema,\n this.signatureAlgorithm.toSchema(),\n this.signatureValue\n ]\n }));\n }\n toJSON() {\n const object = {\n tbs: pvtsutils.Convert.ToHex(this.tbsView),\n version: this.version,\n subject: this.subject.toJSON(),\n subjectPublicKeyInfo: this.subjectPublicKeyInfo.toJSON(),\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signatureValue: this.signatureValue.toJSON(),\n };\n if (ATTRIBUTES$1 in this) {\n object.attributes = Array.from(this.attributes || [], o => o.toJSON());\n }\n return object;\n }\n async sign(privateKey, hashAlgorithm = \"SHA-1\", crypto = getCrypto(true)) {\n if (!privateKey) {\n throw new Error(\"Need to provide a private key for signing\");\n }\n const signatureParams = await crypto.getSignatureParameters(privateKey, hashAlgorithm);\n const parameters = signatureParams.parameters;\n this.signatureAlgorithm = signatureParams.signatureAlgorithm;\n this.tbsView = new Uint8Array(this.encodeTBS().toBER());\n const signature = await crypto.signWithPrivateKey(this.tbsView, privateKey, parameters);\n this.signatureValue = new asn1js.BitString({ valueHex: signature });\n }\n async verify(crypto = getCrypto(true)) {\n return crypto.verifyWithPublicKey(this.tbsView, this.signatureValue, this.subjectPublicKeyInfo, this.signatureAlgorithm);\n }\n async getPublicKey(parameters, crypto = getCrypto(true)) {\n return crypto.getPublicKey(this.subjectPublicKeyInfo, this.signatureAlgorithm, parameters);\n }\n}\nCertificationRequest.CLASS_NAME = \"CertificationRequest\";\n\nconst DIGEST_ALGORITHM$1 = \"digestAlgorithm\";\nconst DIGEST = \"digest\";\nconst CLEAR_PROPS$e = [\n DIGEST_ALGORITHM$1,\n DIGEST\n];\nclass DigestInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.digestAlgorithm = pvutils.getParametersValue(parameters, DIGEST_ALGORITHM$1, DigestInfo.defaultValues(DIGEST_ALGORITHM$1));\n this.digest = pvutils.getParametersValue(parameters, DIGEST, DigestInfo.defaultValues(DIGEST));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case DIGEST_ALGORITHM$1:\n return new AlgorithmIdentifier();\n case DIGEST:\n return new asn1js.OctetString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case DIGEST_ALGORITHM$1:\n return ((AlgorithmIdentifier.compareWithDefault(\"algorithmId\", memberValue.algorithmId)) &&\n ((\"algorithmParams\" in memberValue) === false));\n case DIGEST:\n return (memberValue.isEqual(DigestInfo.defaultValues(memberName)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.digestAlgorithm || {\n names: {\n blockName: DIGEST_ALGORITHM$1\n }\n }),\n new asn1js.OctetString({ name: (names.digest || DIGEST) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$e);\n const asn1 = asn1js.compareSchema(schema, schema, DigestInfo.schema({\n names: {\n digestAlgorithm: {\n names: {\n blockName: DIGEST_ALGORITHM$1\n }\n },\n digest: DIGEST\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.digestAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.digestAlgorithm });\n this.digest = asn1.result.digest;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.digestAlgorithm.toSchema(),\n this.digest\n ]\n }));\n }\n toJSON() {\n return {\n digestAlgorithm: this.digestAlgorithm.toJSON(),\n digest: this.digest.toJSON(),\n };\n }\n}\nDigestInfo.CLASS_NAME = \"DigestInfo\";\n\nconst E_CONTENT_TYPE = \"eContentType\";\nconst E_CONTENT = \"eContent\";\nconst CLEAR_PROPS$d = [\n E_CONTENT_TYPE,\n E_CONTENT,\n];\nclass EncapsulatedContentInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.eContentType = pvutils.getParametersValue(parameters, E_CONTENT_TYPE, EncapsulatedContentInfo.defaultValues(E_CONTENT_TYPE));\n if (E_CONTENT in parameters) {\n this.eContent = pvutils.getParametersValue(parameters, E_CONTENT, EncapsulatedContentInfo.defaultValues(E_CONTENT));\n if ((this.eContent.idBlock.tagClass === 1) &&\n (this.eContent.idBlock.tagNumber === 4)) {\n if (this.eContent.idBlock.isConstructed === false) {\n const constrString = new asn1js.OctetString({\n idBlock: { isConstructed: true },\n isConstructed: true\n });\n let offset = 0;\n const viewHex = this.eContent.valueBlock.valueHexView.slice().buffer;\n let length = viewHex.byteLength;\n while (length > 0) {\n const pieceView = new Uint8Array(viewHex, offset, ((offset + 65536) > viewHex.byteLength) ? (viewHex.byteLength - offset) : 65536);\n const _array = new ArrayBuffer(pieceView.length);\n const _view = new Uint8Array(_array);\n for (let i = 0; i < _view.length; i++) {\n _view[i] = pieceView[i];\n }\n constrString.valueBlock.value.push(new asn1js.OctetString({ valueHex: _array }));\n length -= pieceView.length;\n offset += pieceView.length;\n }\n this.eContent = constrString;\n }\n }\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case E_CONTENT_TYPE:\n return EMPTY_STRING;\n case E_CONTENT:\n return new asn1js.OctetString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case E_CONTENT_TYPE:\n return (memberValue === EMPTY_STRING);\n case E_CONTENT:\n {\n if ((memberValue.idBlock.tagClass === 1) && (memberValue.idBlock.tagNumber === 4))\n return (memberValue.isEqual(EncapsulatedContentInfo.defaultValues(E_CONTENT)));\n return false;\n }\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.eContentType || EMPTY_STRING) }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Any({ name: (names.eContent || EMPTY_STRING) })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$d);\n const asn1 = asn1js.compareSchema(schema, schema, EncapsulatedContentInfo.schema({\n names: {\n eContentType: E_CONTENT_TYPE,\n eContent: E_CONTENT\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.eContentType = asn1.result.eContentType.valueBlock.toString();\n if (E_CONTENT in asn1.result)\n this.eContent = asn1.result.eContent;\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.eContentType }));\n if (this.eContent) {\n if (EncapsulatedContentInfo.compareWithDefault(E_CONTENT, this.eContent) === false) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.eContent]\n }));\n }\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n eContentType: this.eContentType\n };\n if (this.eContent && EncapsulatedContentInfo.compareWithDefault(E_CONTENT, this.eContent) === false) {\n res.eContent = this.eContent.toJSON();\n }\n return res;\n }\n}\nEncapsulatedContentInfo.CLASS_NAME = \"EncapsulatedContentInfo\";\n\nclass KeyBag extends PrivateKeyInfo {\n constructor(parameters = {}) {\n super(parameters);\n }\n}\n\nconst MAC = \"mac\";\nconst MAC_SALT = \"macSalt\";\nconst ITERATIONS = \"iterations\";\nconst CLEAR_PROPS$c = [\n MAC,\n MAC_SALT,\n ITERATIONS\n];\nclass MacData extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.mac = pvutils.getParametersValue(parameters, MAC, MacData.defaultValues(MAC));\n this.macSalt = pvutils.getParametersValue(parameters, MAC_SALT, MacData.defaultValues(MAC_SALT));\n if (ITERATIONS in parameters) {\n this.iterations = pvutils.getParametersValue(parameters, ITERATIONS, MacData.defaultValues(ITERATIONS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case MAC:\n return new DigestInfo();\n case MAC_SALT:\n return new asn1js.OctetString();\n case ITERATIONS:\n return 1;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case MAC:\n return ((DigestInfo.compareWithDefault(\"digestAlgorithm\", memberValue.digestAlgorithm)) &&\n (DigestInfo.compareWithDefault(\"digest\", memberValue.digest)));\n case MAC_SALT:\n return (memberValue.isEqual(MacData.defaultValues(memberName)));\n case ITERATIONS:\n return (memberValue === MacData.defaultValues(memberName));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n optional: (names.optional || true),\n value: [\n DigestInfo.schema(names.mac || {\n names: {\n blockName: MAC\n }\n }),\n new asn1js.OctetString({ name: (names.macSalt || MAC_SALT) }),\n new asn1js.Integer({\n optional: true,\n name: (names.iterations || ITERATIONS)\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$c);\n const asn1 = asn1js.compareSchema(schema, schema, MacData.schema({\n names: {\n mac: {\n names: {\n blockName: MAC\n }\n },\n macSalt: MAC_SALT,\n iterations: ITERATIONS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.mac = new DigestInfo({ schema: asn1.result.mac });\n this.macSalt = asn1.result.macSalt;\n if (ITERATIONS in asn1.result)\n this.iterations = asn1.result.iterations.valueBlock.valueDec;\n }\n toSchema() {\n const outputArray = [\n this.mac.toSchema(),\n this.macSalt\n ];\n if (this.iterations !== undefined) {\n outputArray.push(new asn1js.Integer({ value: this.iterations }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n mac: this.mac.toJSON(),\n macSalt: this.macSalt.toJSON(),\n };\n if (this.iterations !== undefined) {\n res.iterations = this.iterations;\n }\n return res;\n }\n}\nMacData.CLASS_NAME = \"MacData\";\n\nconst HASH_ALGORITHM = \"hashAlgorithm\";\nconst HASHED_MESSAGE = \"hashedMessage\";\nconst CLEAR_PROPS$b = [\n HASH_ALGORITHM,\n HASHED_MESSAGE,\n];\nclass MessageImprint extends PkiObject {\n static async create(hashAlgorithm, message, crypto = getCrypto(true)) {\n const hashAlgorithmOID = crypto.getOIDByAlgorithm({ name: hashAlgorithm }, true, \"hashAlgorithm\");\n const hashedMessage = await crypto.digest(hashAlgorithm, message);\n const res = new MessageImprint({\n hashAlgorithm: new AlgorithmIdentifier({\n algorithmId: hashAlgorithmOID,\n algorithmParams: new asn1js.Null(),\n }),\n hashedMessage: new asn1js.OctetString({ valueHex: hashedMessage })\n });\n return res;\n }\n constructor(parameters = {}) {\n super();\n this.hashAlgorithm = pvutils.getParametersValue(parameters, HASH_ALGORITHM, MessageImprint.defaultValues(HASH_ALGORITHM));\n this.hashedMessage = pvutils.getParametersValue(parameters, HASHED_MESSAGE, MessageImprint.defaultValues(HASHED_MESSAGE));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case HASH_ALGORITHM:\n return new AlgorithmIdentifier();\n case HASHED_MESSAGE:\n return new asn1js.OctetString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case HASH_ALGORITHM:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case HASHED_MESSAGE:\n return (memberValue.isEqual(MessageImprint.defaultValues(memberName)) === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.hashAlgorithm || {}),\n new asn1js.OctetString({ name: (names.hashedMessage || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$b);\n const asn1 = asn1js.compareSchema(schema, schema, MessageImprint.schema({\n names: {\n hashAlgorithm: {\n names: {\n blockName: HASH_ALGORITHM\n }\n },\n hashedMessage: HASHED_MESSAGE\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.hashAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.hashAlgorithm });\n this.hashedMessage = asn1.result.hashedMessage;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.hashAlgorithm.toSchema(),\n this.hashedMessage\n ]\n }));\n }\n toJSON() {\n return {\n hashAlgorithm: this.hashAlgorithm.toJSON(),\n hashedMessage: this.hashedMessage.toJSON(),\n };\n }\n}\nMessageImprint.CLASS_NAME = \"MessageImprint\";\n\nconst REQ_CERT = \"reqCert\";\nconst SINGLE_REQUEST_EXTENSIONS = \"singleRequestExtensions\";\nconst CLEAR_PROPS$a = [\n REQ_CERT,\n SINGLE_REQUEST_EXTENSIONS,\n];\nclass Request extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.reqCert = pvutils.getParametersValue(parameters, REQ_CERT, Request.defaultValues(REQ_CERT));\n if (SINGLE_REQUEST_EXTENSIONS in parameters) {\n this.singleRequestExtensions = pvutils.getParametersValue(parameters, SINGLE_REQUEST_EXTENSIONS, Request.defaultValues(SINGLE_REQUEST_EXTENSIONS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case REQ_CERT:\n return new CertID();\n case SINGLE_REQUEST_EXTENSIONS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case REQ_CERT:\n return (memberValue.isEqual(Request.defaultValues(memberName)));\n case SINGLE_REQUEST_EXTENSIONS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n CertID.schema(names.reqCert || {}),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [Extension.schema(names.extensions || {\n names: {\n blockName: (names.singleRequestExtensions || EMPTY_STRING)\n }\n })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$a);\n const asn1 = asn1js.compareSchema(schema, schema, Request.schema({\n names: {\n reqCert: {\n names: {\n blockName: REQ_CERT\n }\n },\n extensions: {\n names: {\n blockName: SINGLE_REQUEST_EXTENSIONS\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.reqCert = new CertID({ schema: asn1.result.reqCert });\n if (SINGLE_REQUEST_EXTENSIONS in asn1.result) {\n this.singleRequestExtensions = Array.from(asn1.result.singleRequestExtensions.valueBlock.value, element => new Extension({ schema: element }));\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.reqCert.toSchema());\n if (this.singleRequestExtensions) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Sequence({\n value: Array.from(this.singleRequestExtensions, o => o.toSchema())\n })\n ]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n reqCert: this.reqCert.toJSON()\n };\n if (this.singleRequestExtensions) {\n res.singleRequestExtensions = Array.from(this.singleRequestExtensions, o => o.toJSON());\n }\n return res;\n }\n}\nRequest.CLASS_NAME = \"Request\";\n\nconst TBS = \"tbs\";\nconst VERSION$5 = \"version\";\nconst REQUESTOR_NAME = \"requestorName\";\nconst REQUEST_LIST = \"requestList\";\nconst REQUEST_EXTENSIONS = \"requestExtensions\";\nconst TBS_REQUEST$1 = \"TBSRequest\";\nconst TBS_REQUEST_VERSION = `${TBS_REQUEST$1}.${VERSION$5}`;\nconst TBS_REQUEST_REQUESTOR_NAME = `${TBS_REQUEST$1}.${REQUESTOR_NAME}`;\nconst TBS_REQUEST_REQUESTS = `${TBS_REQUEST$1}.requests`;\nconst TBS_REQUEST_REQUEST_EXTENSIONS = `${TBS_REQUEST$1}.${REQUEST_EXTENSIONS}`;\nconst CLEAR_PROPS$9 = [\n TBS_REQUEST$1,\n TBS_REQUEST_VERSION,\n TBS_REQUEST_REQUESTOR_NAME,\n TBS_REQUEST_REQUESTS,\n TBS_REQUEST_REQUEST_EXTENSIONS\n];\nclass TBSRequest extends PkiObject {\n get tbs() {\n return pvtsutils.BufferSourceConverter.toArrayBuffer(this.tbsView);\n }\n set tbs(value) {\n this.tbsView = new Uint8Array(value);\n }\n constructor(parameters = {}) {\n super();\n this.tbsView = new Uint8Array(pvutils.getParametersValue(parameters, TBS, TBSRequest.defaultValues(TBS)));\n if (VERSION$5 in parameters) {\n this.version = pvutils.getParametersValue(parameters, VERSION$5, TBSRequest.defaultValues(VERSION$5));\n }\n if (REQUESTOR_NAME in parameters) {\n this.requestorName = pvutils.getParametersValue(parameters, REQUESTOR_NAME, TBSRequest.defaultValues(REQUESTOR_NAME));\n }\n this.requestList = pvutils.getParametersValue(parameters, REQUEST_LIST, TBSRequest.defaultValues(REQUEST_LIST));\n if (REQUEST_EXTENSIONS in parameters) {\n this.requestExtensions = pvutils.getParametersValue(parameters, REQUEST_EXTENSIONS, TBSRequest.defaultValues(REQUEST_EXTENSIONS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TBS:\n return EMPTY_BUFFER;\n case VERSION$5:\n return 0;\n case REQUESTOR_NAME:\n return new GeneralName();\n case REQUEST_LIST:\n case REQUEST_EXTENSIONS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TBS:\n return (memberValue.byteLength === 0);\n case VERSION$5:\n return (memberValue === TBSRequest.defaultValues(memberName));\n case REQUESTOR_NAME:\n return ((memberValue.type === GeneralName.defaultValues(\"type\")) && (Object.keys(memberValue.value).length === 0));\n case REQUEST_LIST:\n case REQUEST_EXTENSIONS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || TBS_REQUEST$1),\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Integer({ name: (names.TBSRequestVersion || TBS_REQUEST_VERSION) })]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [GeneralName.schema(names.requestorName || {\n names: {\n blockName: TBS_REQUEST_REQUESTOR_NAME\n }\n })]\n }),\n new asn1js.Sequence({\n name: (names.requestList || \"TBSRequest.requestList\"),\n value: [\n new asn1js.Repeated({\n name: (names.requests || TBS_REQUEST_REQUESTS),\n value: Request.schema(names.requestNames || {})\n })\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [Extensions.schema(names.extensions || {\n names: {\n blockName: (names.requestExtensions || TBS_REQUEST_REQUEST_EXTENSIONS)\n }\n })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$9);\n const asn1 = asn1js.compareSchema(schema, schema, TBSRequest.schema());\n AsnError.assertSchema(asn1, this.className);\n this.tbsView = asn1.result.TBSRequest.valueBeforeDecodeView;\n if (TBS_REQUEST_VERSION in asn1.result)\n this.version = asn1.result[TBS_REQUEST_VERSION].valueBlock.valueDec;\n if (TBS_REQUEST_REQUESTOR_NAME in asn1.result)\n this.requestorName = new GeneralName({ schema: asn1.result[TBS_REQUEST_REQUESTOR_NAME] });\n this.requestList = Array.from(asn1.result[TBS_REQUEST_REQUESTS], element => new Request({ schema: element }));\n if (TBS_REQUEST_REQUEST_EXTENSIONS in asn1.result)\n this.requestExtensions = Array.from(asn1.result[TBS_REQUEST_REQUEST_EXTENSIONS].valueBlock.value, element => new Extension({ schema: element }));\n }\n toSchema(encodeFlag = false) {\n let tbsSchema;\n if (encodeFlag === false) {\n if (this.tbsView.byteLength === 0)\n return TBSRequest.schema();\n const asn1 = asn1js.fromBER(this.tbsView);\n AsnError.assert(asn1, \"TBS Request\");\n if (!(asn1.result instanceof asn1js.Sequence)) {\n throw new Error(\"ASN.1 result should be SEQUENCE\");\n }\n tbsSchema = asn1.result;\n }\n else {\n const outputArray = [];\n if (this.version !== undefined) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Integer({ value: this.version })]\n }));\n }\n if (this.requestorName) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [this.requestorName.toSchema()]\n }));\n }\n outputArray.push(new asn1js.Sequence({\n value: Array.from(this.requestList, o => o.toSchema())\n }));\n if (this.requestExtensions) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [\n new asn1js.Sequence({\n value: Array.from(this.requestExtensions, o => o.toSchema())\n })\n ]\n }));\n }\n tbsSchema = new asn1js.Sequence({\n value: outputArray\n });\n }\n return tbsSchema;\n }\n toJSON() {\n const res = {};\n if (this.version != undefined)\n res.version = this.version;\n if (this.requestorName) {\n res.requestorName = this.requestorName.toJSON();\n }\n res.requestList = Array.from(this.requestList, o => o.toJSON());\n if (this.requestExtensions) {\n res.requestExtensions = Array.from(this.requestExtensions, o => o.toJSON());\n }\n return res;\n }\n}\nTBSRequest.CLASS_NAME = \"TBSRequest\";\n\nconst SIGNATURE_ALGORITHM$1 = \"signatureAlgorithm\";\nconst SIGNATURE$1 = \"signature\";\nconst CERTS = \"certs\";\nclass Signature extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$1, Signature.defaultValues(SIGNATURE_ALGORITHM$1));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE$1, Signature.defaultValues(SIGNATURE$1));\n if (CERTS in parameters) {\n this.certs = pvutils.getParametersValue(parameters, CERTS, Signature.defaultValues(CERTS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case SIGNATURE_ALGORITHM$1:\n return new AlgorithmIdentifier();\n case SIGNATURE$1:\n return new asn1js.BitString();\n case CERTS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case SIGNATURE_ALGORITHM$1:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case SIGNATURE$1:\n return (memberValue.isEqual(Signature.defaultValues(memberName)));\n case CERTS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.signatureAlgorithm || {}),\n new asn1js.BitString({ name: (names.signature || EMPTY_STRING) }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Sequence({\n value: [new asn1js.Repeated({\n name: (names.certs || EMPTY_STRING),\n value: Certificate.schema({})\n })]\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n SIGNATURE_ALGORITHM$1,\n SIGNATURE$1,\n CERTS\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, Signature.schema({\n names: {\n signatureAlgorithm: {\n names: {\n blockName: SIGNATURE_ALGORITHM$1\n }\n },\n signature: SIGNATURE$1,\n certs: CERTS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.signatureAlgorithm });\n this.signature = asn1.result.signature;\n if (CERTS in asn1.result)\n this.certs = Array.from(asn1.result.certs, element => new Certificate({ schema: element }));\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.signatureAlgorithm.toSchema());\n outputArray.push(this.signature);\n if (this.certs) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Sequence({\n value: Array.from(this.certs, o => o.toSchema())\n })\n ]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signature: this.signature.toJSON(),\n };\n if (this.certs) {\n res.certs = Array.from(this.certs, o => o.toJSON());\n }\n return res;\n }\n}\nSignature.CLASS_NAME = \"Signature\";\n\nconst TBS_REQUEST = \"tbsRequest\";\nconst OPTIONAL_SIGNATURE = \"optionalSignature\";\nconst CLEAR_PROPS$8 = [\n TBS_REQUEST,\n OPTIONAL_SIGNATURE\n];\nclass OCSPRequest extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.tbsRequest = pvutils.getParametersValue(parameters, TBS_REQUEST, OCSPRequest.defaultValues(TBS_REQUEST));\n if (OPTIONAL_SIGNATURE in parameters) {\n this.optionalSignature = pvutils.getParametersValue(parameters, OPTIONAL_SIGNATURE, OCSPRequest.defaultValues(OPTIONAL_SIGNATURE));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TBS_REQUEST:\n return new TBSRequest();\n case OPTIONAL_SIGNATURE:\n return new Signature();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TBS_REQUEST:\n return ((TBSRequest.compareWithDefault(\"tbs\", memberValue.tbs)) &&\n (TBSRequest.compareWithDefault(\"version\", memberValue.version)) &&\n (TBSRequest.compareWithDefault(\"requestorName\", memberValue.requestorName)) &&\n (TBSRequest.compareWithDefault(\"requestList\", memberValue.requestList)) &&\n (TBSRequest.compareWithDefault(\"requestExtensions\", memberValue.requestExtensions)));\n case OPTIONAL_SIGNATURE:\n return ((Signature.compareWithDefault(\"signatureAlgorithm\", memberValue.signatureAlgorithm)) &&\n (Signature.compareWithDefault(\"signature\", memberValue.signature)) &&\n (Signature.compareWithDefault(\"certs\", memberValue.certs)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: names.blockName || \"OCSPRequest\",\n value: [\n TBSRequest.schema(names.tbsRequest || {\n names: {\n blockName: TBS_REQUEST\n }\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n Signature.schema(names.optionalSignature || {\n names: {\n blockName: OPTIONAL_SIGNATURE\n }\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$8);\n const asn1 = asn1js.compareSchema(schema, schema, OCSPRequest.schema());\n AsnError.assertSchema(asn1, this.className);\n this.tbsRequest = new TBSRequest({ schema: asn1.result.tbsRequest });\n if (OPTIONAL_SIGNATURE in asn1.result)\n this.optionalSignature = new Signature({ schema: asn1.result.optionalSignature });\n }\n toSchema(encodeFlag = false) {\n const outputArray = [];\n outputArray.push(this.tbsRequest.toSchema(encodeFlag));\n if (this.optionalSignature)\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n this.optionalSignature.toSchema()\n ]\n }));\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n tbsRequest: this.tbsRequest.toJSON()\n };\n if (this.optionalSignature) {\n res.optionalSignature = this.optionalSignature.toJSON();\n }\n return res;\n }\n async createForCertificate(certificate, parameters, crypto = getCrypto(true)) {\n const certID = new CertID();\n await certID.createForCertificate(certificate, parameters, crypto);\n this.tbsRequest.requestList.push(new Request({\n reqCert: certID,\n }));\n }\n async sign(privateKey, hashAlgorithm = \"SHA-1\", crypto = getCrypto(true)) {\n ParameterError.assertEmpty(privateKey, \"privateKey\", \"OCSPRequest.sign method\");\n if (!this.optionalSignature) {\n throw new Error(\"Need to create \\\"optionalSignature\\\" field before signing\");\n }\n const signatureParams = await crypto.getSignatureParameters(privateKey, hashAlgorithm);\n const parameters = signatureParams.parameters;\n this.optionalSignature.signatureAlgorithm = signatureParams.signatureAlgorithm;\n const tbs = this.tbsRequest.toSchema(true).toBER(false);\n const signature = await crypto.signWithPrivateKey(tbs, privateKey, parameters);\n this.optionalSignature.signature = new asn1js.BitString({ valueHex: signature });\n }\n verify() {\n }\n}\nOCSPRequest.CLASS_NAME = \"OCSPRequest\";\n\nconst RESPONSE_TYPE = \"responseType\";\nconst RESPONSE = \"response\";\nconst CLEAR_PROPS$7 = [\n RESPONSE_TYPE,\n RESPONSE\n];\nclass ResponseBytes extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.responseType = pvutils.getParametersValue(parameters, RESPONSE_TYPE, ResponseBytes.defaultValues(RESPONSE_TYPE));\n this.response = pvutils.getParametersValue(parameters, RESPONSE, ResponseBytes.defaultValues(RESPONSE));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case RESPONSE_TYPE:\n return EMPTY_STRING;\n case RESPONSE:\n return new asn1js.OctetString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case RESPONSE_TYPE:\n return (memberValue === EMPTY_STRING);\n case RESPONSE:\n return (memberValue.isEqual(ResponseBytes.defaultValues(memberName)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.responseType || EMPTY_STRING) }),\n new asn1js.OctetString({ name: (names.response || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$7);\n const asn1 = asn1js.compareSchema(schema, schema, ResponseBytes.schema({\n names: {\n responseType: RESPONSE_TYPE,\n response: RESPONSE\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.responseType = asn1.result.responseType.valueBlock.toString();\n this.response = asn1.result.response;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.responseType }),\n this.response\n ]\n }));\n }\n toJSON() {\n return {\n responseType: this.responseType,\n response: this.response.toJSON(),\n };\n }\n}\nResponseBytes.CLASS_NAME = \"ResponseBytes\";\n\nconst RESPONSE_STATUS = \"responseStatus\";\nconst RESPONSE_BYTES = \"responseBytes\";\nclass OCSPResponse extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.responseStatus = pvutils.getParametersValue(parameters, RESPONSE_STATUS, OCSPResponse.defaultValues(RESPONSE_STATUS));\n if (RESPONSE_BYTES in parameters) {\n this.responseBytes = pvutils.getParametersValue(parameters, RESPONSE_BYTES, OCSPResponse.defaultValues(RESPONSE_BYTES));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case RESPONSE_STATUS:\n return new asn1js.Enumerated();\n case RESPONSE_BYTES:\n return new ResponseBytes();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case RESPONSE_STATUS:\n return (memberValue.isEqual(OCSPResponse.defaultValues(memberName)));\n case RESPONSE_BYTES:\n return ((ResponseBytes.compareWithDefault(\"responseType\", memberValue.responseType)) &&\n (ResponseBytes.compareWithDefault(\"response\", memberValue.response)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || \"OCSPResponse\"),\n value: [\n new asn1js.Enumerated({ name: (names.responseStatus || RESPONSE_STATUS) }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n ResponseBytes.schema(names.responseBytes || {\n names: {\n blockName: RESPONSE_BYTES\n }\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n RESPONSE_STATUS,\n RESPONSE_BYTES\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, OCSPResponse.schema());\n AsnError.assertSchema(asn1, this.className);\n this.responseStatus = asn1.result.responseStatus;\n if (RESPONSE_BYTES in asn1.result)\n this.responseBytes = new ResponseBytes({ schema: asn1.result.responseBytes });\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.responseStatus);\n if (this.responseBytes) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.responseBytes.toSchema()]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n responseStatus: this.responseStatus.toJSON()\n };\n if (this.responseBytes) {\n res.responseBytes = this.responseBytes.toJSON();\n }\n return res;\n }\n async getCertificateStatus(certificate, issuerCertificate, crypto = getCrypto(true)) {\n let basicResponse;\n const result = {\n isForCertificate: false,\n status: 2\n };\n if (!this.responseBytes)\n return result;\n if (this.responseBytes.responseType !== id_PKIX_OCSP_Basic)\n return result;\n try {\n const asn1Basic = asn1js.fromBER(this.responseBytes.response.valueBlock.valueHexView);\n AsnError.assert(asn1Basic, \"Basic OCSP response\");\n basicResponse = new BasicOCSPResponse({ schema: asn1Basic.result });\n }\n catch (ex) {\n return result;\n }\n return basicResponse.getCertificateStatus(certificate, issuerCertificate, crypto);\n }\n async sign(privateKey, hashAlgorithm, crypto = getCrypto(true)) {\n var _a;\n if (this.responseBytes && this.responseBytes.responseType === id_PKIX_OCSP_Basic) {\n const basicResponse = BasicOCSPResponse.fromBER(this.responseBytes.response.valueBlock.valueHexView);\n return basicResponse.sign(privateKey, hashAlgorithm, crypto);\n }\n throw new Error(`Unknown ResponseBytes type: ${((_a = this.responseBytes) === null || _a === void 0 ? void 0 : _a.responseType) || \"Unknown\"}`);\n }\n async verify(issuerCertificate = null, crypto = getCrypto(true)) {\n var _a;\n if ((RESPONSE_BYTES in this) === false)\n throw new Error(\"Empty ResponseBytes field\");\n if (this.responseBytes && this.responseBytes.responseType === id_PKIX_OCSP_Basic) {\n const basicResponse = BasicOCSPResponse.fromBER(this.responseBytes.response.valueBlock.valueHexView);\n if (issuerCertificate !== null) {\n if (!basicResponse.certs) {\n basicResponse.certs = [];\n }\n basicResponse.certs.push(issuerCertificate);\n }\n return basicResponse.verify({}, crypto);\n }\n throw new Error(`Unknown ResponseBytes type: ${((_a = this.responseBytes) === null || _a === void 0 ? void 0 : _a.responseType) || \"Unknown\"}`);\n }\n}\nOCSPResponse.CLASS_NAME = \"OCSPResponse\";\n\nconst TYPE = \"type\";\nconst ATTRIBUTES = \"attributes\";\nconst ENCODED_VALUE = \"encodedValue\";\nconst CLEAR_PROPS$6 = [\n ATTRIBUTES\n];\nclass SignedAndUnsignedAttributes extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.type = pvutils.getParametersValue(parameters, TYPE, SignedAndUnsignedAttributes.defaultValues(TYPE));\n this.attributes = pvutils.getParametersValue(parameters, ATTRIBUTES, SignedAndUnsignedAttributes.defaultValues(ATTRIBUTES));\n this.encodedValue = pvutils.getParametersValue(parameters, ENCODED_VALUE, SignedAndUnsignedAttributes.defaultValues(ENCODED_VALUE));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TYPE:\n return (-1);\n case ATTRIBUTES:\n return [];\n case ENCODED_VALUE:\n return EMPTY_BUFFER;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TYPE:\n return (memberValue === SignedAndUnsignedAttributes.defaultValues(TYPE));\n case ATTRIBUTES:\n return (memberValue.length === 0);\n case ENCODED_VALUE:\n return (memberValue.byteLength === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Constructed({\n name: (names.blockName || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: names.tagNumber || 0\n },\n value: [\n new asn1js.Repeated({\n name: (names.attributes || EMPTY_STRING),\n value: Attribute.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$6);\n const asn1 = asn1js.compareSchema(schema, schema, SignedAndUnsignedAttributes.schema({\n names: {\n tagNumber: this.type,\n attributes: ATTRIBUTES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.type = asn1.result.idBlock.tagNumber;\n this.encodedValue = pvtsutils.BufferSourceConverter.toArrayBuffer(asn1.result.valueBeforeDecodeView);\n const encodedView = new Uint8Array(this.encodedValue);\n encodedView[0] = 0x31;\n if ((ATTRIBUTES in asn1.result) === false) {\n if (this.type === 0)\n throw new Error(\"Wrong structure of SignedUnsignedAttributes\");\n else\n return;\n }\n this.attributes = Array.from(asn1.result.attributes, element => new Attribute({ schema: element }));\n }\n toSchema() {\n if (SignedAndUnsignedAttributes.compareWithDefault(TYPE, this.type) || SignedAndUnsignedAttributes.compareWithDefault(ATTRIBUTES, this.attributes))\n throw new Error(\"Incorrectly initialized \\\"SignedAndUnsignedAttributes\\\" class\");\n return (new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: this.type\n },\n value: Array.from(this.attributes, o => o.toSchema())\n }));\n }\n toJSON() {\n if (SignedAndUnsignedAttributes.compareWithDefault(TYPE, this.type) || SignedAndUnsignedAttributes.compareWithDefault(ATTRIBUTES, this.attributes))\n throw new Error(\"Incorrectly initialized \\\"SignedAndUnsignedAttributes\\\" class\");\n return {\n type: this.type,\n attributes: Array.from(this.attributes, o => o.toJSON())\n };\n }\n}\nSignedAndUnsignedAttributes.CLASS_NAME = \"SignedAndUnsignedAttributes\";\n\nconst VERSION$4 = \"version\";\nconst SID = \"sid\";\nconst DIGEST_ALGORITHM = \"digestAlgorithm\";\nconst SIGNED_ATTRS = \"signedAttrs\";\nconst SIGNATURE_ALGORITHM = \"signatureAlgorithm\";\nconst SIGNATURE = \"signature\";\nconst UNSIGNED_ATTRS = \"unsignedAttrs\";\nconst SIGNER_INFO = \"SignerInfo\";\nconst SIGNER_INFO_VERSION = `${SIGNER_INFO}.${VERSION$4}`;\nconst SIGNER_INFO_SID = `${SIGNER_INFO}.${SID}`;\nconst SIGNER_INFO_DIGEST_ALGORITHM = `${SIGNER_INFO}.${DIGEST_ALGORITHM}`;\nconst SIGNER_INFO_SIGNED_ATTRS = `${SIGNER_INFO}.${SIGNED_ATTRS}`;\nconst SIGNER_INFO_SIGNATURE_ALGORITHM = `${SIGNER_INFO}.${SIGNATURE_ALGORITHM}`;\nconst SIGNER_INFO_SIGNATURE = `${SIGNER_INFO}.${SIGNATURE}`;\nconst SIGNER_INFO_UNSIGNED_ATTRS = `${SIGNER_INFO}.${UNSIGNED_ATTRS}`;\nconst CLEAR_PROPS$5 = [\n SIGNER_INFO_VERSION,\n SIGNER_INFO_SID,\n SIGNER_INFO_DIGEST_ALGORITHM,\n SIGNER_INFO_SIGNED_ATTRS,\n SIGNER_INFO_SIGNATURE_ALGORITHM,\n SIGNER_INFO_SIGNATURE,\n SIGNER_INFO_UNSIGNED_ATTRS\n];\nclass SignerInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$4, SignerInfo.defaultValues(VERSION$4));\n this.sid = pvutils.getParametersValue(parameters, SID, SignerInfo.defaultValues(SID));\n this.digestAlgorithm = pvutils.getParametersValue(parameters, DIGEST_ALGORITHM, SignerInfo.defaultValues(DIGEST_ALGORITHM));\n if (SIGNED_ATTRS in parameters) {\n this.signedAttrs = pvutils.getParametersValue(parameters, SIGNED_ATTRS, SignerInfo.defaultValues(SIGNED_ATTRS));\n }\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM, SignerInfo.defaultValues(SIGNATURE_ALGORITHM));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE, SignerInfo.defaultValues(SIGNATURE));\n if (UNSIGNED_ATTRS in parameters) {\n this.unsignedAttrs = pvutils.getParametersValue(parameters, UNSIGNED_ATTRS, SignerInfo.defaultValues(UNSIGNED_ATTRS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$4:\n return 0;\n case SID:\n return new asn1js.Any();\n case DIGEST_ALGORITHM:\n return new AlgorithmIdentifier();\n case SIGNED_ATTRS:\n return new SignedAndUnsignedAttributes({ type: 0 });\n case SIGNATURE_ALGORITHM:\n return new AlgorithmIdentifier();\n case SIGNATURE:\n return new asn1js.OctetString();\n case UNSIGNED_ATTRS:\n return new SignedAndUnsignedAttributes({ type: 1 });\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$4:\n return (SignerInfo.defaultValues(VERSION$4) === memberValue);\n case SID:\n return (memberValue instanceof asn1js.Any);\n case DIGEST_ALGORITHM:\n if ((memberValue instanceof AlgorithmIdentifier) === false)\n return false;\n return memberValue.isEqual(SignerInfo.defaultValues(DIGEST_ALGORITHM));\n case SIGNED_ATTRS:\n return ((SignedAndUnsignedAttributes.compareWithDefault(\"type\", memberValue.type))\n && (SignedAndUnsignedAttributes.compareWithDefault(\"attributes\", memberValue.attributes))\n && (SignedAndUnsignedAttributes.compareWithDefault(\"encodedValue\", memberValue.encodedValue)));\n case SIGNATURE_ALGORITHM:\n if ((memberValue instanceof AlgorithmIdentifier) === false)\n return false;\n return memberValue.isEqual(SignerInfo.defaultValues(SIGNATURE_ALGORITHM));\n case SIGNATURE:\n case UNSIGNED_ATTRS:\n return ((SignedAndUnsignedAttributes.compareWithDefault(\"type\", memberValue.type))\n && (SignedAndUnsignedAttributes.compareWithDefault(\"attributes\", memberValue.attributes))\n && (SignedAndUnsignedAttributes.compareWithDefault(\"encodedValue\", memberValue.encodedValue)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: SIGNER_INFO,\n value: [\n new asn1js.Integer({ name: (names.version || SIGNER_INFO_VERSION) }),\n new asn1js.Choice({\n value: [\n IssuerAndSerialNumber.schema(names.sidSchema || {\n names: {\n blockName: SIGNER_INFO_SID\n }\n }),\n new asn1js.Choice({\n value: [\n new asn1js.Constructed({\n optional: true,\n name: (names.sid || SIGNER_INFO_SID),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.OctetString()]\n }),\n new asn1js.Primitive({\n optional: true,\n name: (names.sid || SIGNER_INFO_SID),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n }\n }),\n ]\n }),\n ]\n }),\n AlgorithmIdentifier.schema(names.digestAlgorithm || {\n names: {\n blockName: SIGNER_INFO_DIGEST_ALGORITHM\n }\n }),\n SignedAndUnsignedAttributes.schema(names.signedAttrs || {\n names: {\n blockName: SIGNER_INFO_SIGNED_ATTRS,\n tagNumber: 0\n }\n }),\n AlgorithmIdentifier.schema(names.signatureAlgorithm || {\n names: {\n blockName: SIGNER_INFO_SIGNATURE_ALGORITHM\n }\n }),\n new asn1js.OctetString({ name: (names.signature || SIGNER_INFO_SIGNATURE) }),\n SignedAndUnsignedAttributes.schema(names.unsignedAttrs || {\n names: {\n blockName: SIGNER_INFO_UNSIGNED_ATTRS,\n tagNumber: 1\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$5);\n const asn1 = asn1js.compareSchema(schema, schema, SignerInfo.schema());\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result[SIGNER_INFO_VERSION].valueBlock.valueDec;\n const currentSid = asn1.result[SIGNER_INFO_SID];\n if (currentSid.idBlock.tagClass === 1)\n this.sid = new IssuerAndSerialNumber({ schema: currentSid });\n else\n this.sid = currentSid;\n this.digestAlgorithm = new AlgorithmIdentifier({ schema: asn1.result[SIGNER_INFO_DIGEST_ALGORITHM] });\n if (SIGNER_INFO_SIGNED_ATTRS in asn1.result)\n this.signedAttrs = new SignedAndUnsignedAttributes({ type: 0, schema: asn1.result[SIGNER_INFO_SIGNED_ATTRS] });\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result[SIGNER_INFO_SIGNATURE_ALGORITHM] });\n this.signature = asn1.result[SIGNER_INFO_SIGNATURE];\n if (SIGNER_INFO_UNSIGNED_ATTRS in asn1.result)\n this.unsignedAttrs = new SignedAndUnsignedAttributes({ type: 1, schema: asn1.result[SIGNER_INFO_UNSIGNED_ATTRS] });\n }\n toSchema() {\n if (SignerInfo.compareWithDefault(SID, this.sid))\n throw new Error(\"Incorrectly initialized \\\"SignerInfo\\\" class\");\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n if (this.sid instanceof IssuerAndSerialNumber)\n outputArray.push(this.sid.toSchema());\n else\n outputArray.push(this.sid);\n outputArray.push(this.digestAlgorithm.toSchema());\n if (this.signedAttrs) {\n if (SignerInfo.compareWithDefault(SIGNED_ATTRS, this.signedAttrs) === false)\n outputArray.push(this.signedAttrs.toSchema());\n }\n outputArray.push(this.signatureAlgorithm.toSchema());\n outputArray.push(this.signature);\n if (this.unsignedAttrs) {\n if (SignerInfo.compareWithDefault(UNSIGNED_ATTRS, this.unsignedAttrs) === false)\n outputArray.push(this.unsignedAttrs.toSchema());\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n if (SignerInfo.compareWithDefault(SID, this.sid)) {\n throw new Error(\"Incorrectly initialized \\\"SignerInfo\\\" class\");\n }\n const res = {\n version: this.version,\n digestAlgorithm: this.digestAlgorithm.toJSON(),\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signature: this.signature.toJSON(),\n };\n if (!(this.sid instanceof asn1js.Any))\n res.sid = this.sid.toJSON();\n if (this.signedAttrs && SignerInfo.compareWithDefault(SIGNED_ATTRS, this.signedAttrs) === false) {\n res.signedAttrs = this.signedAttrs.toJSON();\n }\n if (this.unsignedAttrs && SignerInfo.compareWithDefault(UNSIGNED_ATTRS, this.unsignedAttrs) === false) {\n res.unsignedAttrs = this.unsignedAttrs.toJSON();\n }\n return res;\n }\n}\nSignerInfo.CLASS_NAME = \"SignerInfo\";\n\nconst VERSION$3 = \"version\";\nconst POLICY = \"policy\";\nconst MESSAGE_IMPRINT$1 = \"messageImprint\";\nconst SERIAL_NUMBER = \"serialNumber\";\nconst GEN_TIME = \"genTime\";\nconst ORDERING = \"ordering\";\nconst NONCE$1 = \"nonce\";\nconst ACCURACY = \"accuracy\";\nconst TSA = \"tsa\";\nconst EXTENSIONS$1 = \"extensions\";\nconst TST_INFO = \"TSTInfo\";\nconst TST_INFO_VERSION = `${TST_INFO}.${VERSION$3}`;\nconst TST_INFO_POLICY = `${TST_INFO}.${POLICY}`;\nconst TST_INFO_MESSAGE_IMPRINT = `${TST_INFO}.${MESSAGE_IMPRINT$1}`;\nconst TST_INFO_SERIAL_NUMBER = `${TST_INFO}.${SERIAL_NUMBER}`;\nconst TST_INFO_GEN_TIME = `${TST_INFO}.${GEN_TIME}`;\nconst TST_INFO_ACCURACY = `${TST_INFO}.${ACCURACY}`;\nconst TST_INFO_ORDERING = `${TST_INFO}.${ORDERING}`;\nconst TST_INFO_NONCE = `${TST_INFO}.${NONCE$1}`;\nconst TST_INFO_TSA = `${TST_INFO}.${TSA}`;\nconst TST_INFO_EXTENSIONS = `${TST_INFO}.${EXTENSIONS$1}`;\nconst CLEAR_PROPS$4 = [\n TST_INFO_VERSION,\n TST_INFO_POLICY,\n TST_INFO_MESSAGE_IMPRINT,\n TST_INFO_SERIAL_NUMBER,\n TST_INFO_GEN_TIME,\n TST_INFO_ACCURACY,\n TST_INFO_ORDERING,\n TST_INFO_NONCE,\n TST_INFO_TSA,\n TST_INFO_EXTENSIONS\n];\nclass TSTInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$3, TSTInfo.defaultValues(VERSION$3));\n this.policy = pvutils.getParametersValue(parameters, POLICY, TSTInfo.defaultValues(POLICY));\n this.messageImprint = pvutils.getParametersValue(parameters, MESSAGE_IMPRINT$1, TSTInfo.defaultValues(MESSAGE_IMPRINT$1));\n this.serialNumber = pvutils.getParametersValue(parameters, SERIAL_NUMBER, TSTInfo.defaultValues(SERIAL_NUMBER));\n this.genTime = pvutils.getParametersValue(parameters, GEN_TIME, TSTInfo.defaultValues(GEN_TIME));\n if (ACCURACY in parameters) {\n this.accuracy = pvutils.getParametersValue(parameters, ACCURACY, TSTInfo.defaultValues(ACCURACY));\n }\n if (ORDERING in parameters) {\n this.ordering = pvutils.getParametersValue(parameters, ORDERING, TSTInfo.defaultValues(ORDERING));\n }\n if (NONCE$1 in parameters) {\n this.nonce = pvutils.getParametersValue(parameters, NONCE$1, TSTInfo.defaultValues(NONCE$1));\n }\n if (TSA in parameters) {\n this.tsa = pvutils.getParametersValue(parameters, TSA, TSTInfo.defaultValues(TSA));\n }\n if (EXTENSIONS$1 in parameters) {\n this.extensions = pvutils.getParametersValue(parameters, EXTENSIONS$1, TSTInfo.defaultValues(EXTENSIONS$1));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$3:\n return 0;\n case POLICY:\n return EMPTY_STRING;\n case MESSAGE_IMPRINT$1:\n return new MessageImprint();\n case SERIAL_NUMBER:\n return new asn1js.Integer();\n case GEN_TIME:\n return new Date(0, 0, 0);\n case ACCURACY:\n return new Accuracy();\n case ORDERING:\n return false;\n case NONCE$1:\n return new asn1js.Integer();\n case TSA:\n return new GeneralName();\n case EXTENSIONS$1:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$3:\n case POLICY:\n case GEN_TIME:\n case ORDERING:\n return (memberValue === TSTInfo.defaultValues(ORDERING));\n case MESSAGE_IMPRINT$1:\n return ((MessageImprint.compareWithDefault(HASH_ALGORITHM, memberValue.hashAlgorithm)) &&\n (MessageImprint.compareWithDefault(HASHED_MESSAGE, memberValue.hashedMessage)));\n case SERIAL_NUMBER:\n case NONCE$1:\n return (memberValue.isEqual(TSTInfo.defaultValues(NONCE$1)));\n case ACCURACY:\n return ((Accuracy.compareWithDefault(SECONDS, memberValue.seconds)) &&\n (Accuracy.compareWithDefault(MILLIS, memberValue.millis)) &&\n (Accuracy.compareWithDefault(MICROS, memberValue.micros)));\n case TSA:\n return ((GeneralName.compareWithDefault(TYPE$4, memberValue.type)) &&\n (GeneralName.compareWithDefault(VALUE$5, memberValue.value)));\n case EXTENSIONS$1:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || TST_INFO),\n value: [\n new asn1js.Integer({ name: (names.version || TST_INFO_VERSION) }),\n new asn1js.ObjectIdentifier({ name: (names.policy || TST_INFO_POLICY) }),\n MessageImprint.schema(names.messageImprint || {\n names: {\n blockName: TST_INFO_MESSAGE_IMPRINT\n }\n }),\n new asn1js.Integer({ name: (names.serialNumber || TST_INFO_SERIAL_NUMBER) }),\n new asn1js.GeneralizedTime({ name: (names.genTime || TST_INFO_GEN_TIME) }),\n Accuracy.schema(names.accuracy || {\n names: {\n blockName: TST_INFO_ACCURACY\n }\n }),\n new asn1js.Boolean({\n name: (names.ordering || TST_INFO_ORDERING),\n optional: true\n }),\n new asn1js.Integer({\n name: (names.nonce || TST_INFO_NONCE),\n optional: true\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [GeneralName.schema(names.tsa || {\n names: {\n blockName: TST_INFO_TSA\n }\n })]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.Repeated({\n name: (names.extensions || TST_INFO_EXTENSIONS),\n value: Extension.schema(names.extension || {})\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$4);\n const asn1 = asn1js.compareSchema(schema, schema, TSTInfo.schema());\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result[TST_INFO_VERSION].valueBlock.valueDec;\n this.policy = asn1.result[TST_INFO_POLICY].valueBlock.toString();\n this.messageImprint = new MessageImprint({ schema: asn1.result[TST_INFO_MESSAGE_IMPRINT] });\n this.serialNumber = asn1.result[TST_INFO_SERIAL_NUMBER];\n this.genTime = asn1.result[TST_INFO_GEN_TIME].toDate();\n if (TST_INFO_ACCURACY in asn1.result)\n this.accuracy = new Accuracy({ schema: asn1.result[TST_INFO_ACCURACY] });\n if (TST_INFO_ORDERING in asn1.result)\n this.ordering = asn1.result[TST_INFO_ORDERING].valueBlock.value;\n if (TST_INFO_NONCE in asn1.result)\n this.nonce = asn1.result[TST_INFO_NONCE];\n if (TST_INFO_TSA in asn1.result)\n this.tsa = new GeneralName({ schema: asn1.result[TST_INFO_TSA] });\n if (TST_INFO_EXTENSIONS in asn1.result)\n this.extensions = Array.from(asn1.result[TST_INFO_EXTENSIONS], element => new Extension({ schema: element }));\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.policy }));\n outputArray.push(this.messageImprint.toSchema());\n outputArray.push(this.serialNumber);\n outputArray.push(new asn1js.GeneralizedTime({ valueDate: this.genTime }));\n if (this.accuracy)\n outputArray.push(this.accuracy.toSchema());\n if (this.ordering !== undefined)\n outputArray.push(new asn1js.Boolean({ value: this.ordering }));\n if (this.nonce)\n outputArray.push(this.nonce);\n if (this.tsa) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.tsa.toSchema()]\n }));\n }\n if (this.extensions) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: Array.from(this.extensions, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n version: this.version,\n policy: this.policy,\n messageImprint: this.messageImprint.toJSON(),\n serialNumber: this.serialNumber.toJSON(),\n genTime: this.genTime\n };\n if (this.accuracy)\n res.accuracy = this.accuracy.toJSON();\n if (this.ordering !== undefined)\n res.ordering = this.ordering;\n if (this.nonce)\n res.nonce = this.nonce.toJSON();\n if (this.tsa)\n res.tsa = this.tsa.toJSON();\n if (this.extensions)\n res.extensions = Array.from(this.extensions, o => o.toJSON());\n return res;\n }\n async verify(params, crypto = getCrypto(true)) {\n if (!params.data) {\n throw new Error(\"\\\"data\\\" is a mandatory attribute for TST_INFO verification\");\n }\n const data = params.data;\n if (params.notBefore) {\n if (this.genTime < params.notBefore)\n throw new Error(\"Generation time for TSTInfo object is less than notBefore value\");\n }\n if (params.notAfter) {\n if (this.genTime > params.notAfter)\n throw new Error(\"Generation time for TSTInfo object is more than notAfter value\");\n }\n const shaAlgorithm = crypto.getAlgorithmByOID(this.messageImprint.hashAlgorithm.algorithmId, true, \"MessageImprint.hashAlgorithm\");\n const hash = await crypto.digest(shaAlgorithm.name, new Uint8Array(data));\n return pvtsutils.BufferSourceConverter.isEqual(hash, this.messageImprint.hashedMessage.valueBlock.valueHexView);\n }\n}\nTSTInfo.CLASS_NAME = \"TSTInfo\";\n\nconst VERSION$2 = \"version\";\nconst DIGEST_ALGORITHMS = \"digestAlgorithms\";\nconst ENCAP_CONTENT_INFO = \"encapContentInfo\";\nconst CERTIFICATES = \"certificates\";\nconst CRLS = \"crls\";\nconst SIGNER_INFOS = \"signerInfos\";\nconst OCSPS = \"ocsps\";\nconst SIGNED_DATA = \"SignedData\";\nconst SIGNED_DATA_VERSION = `${SIGNED_DATA}.${VERSION$2}`;\nconst SIGNED_DATA_DIGEST_ALGORITHMS = `${SIGNED_DATA}.${DIGEST_ALGORITHMS}`;\nconst SIGNED_DATA_ENCAP_CONTENT_INFO = `${SIGNED_DATA}.${ENCAP_CONTENT_INFO}`;\nconst SIGNED_DATA_CERTIFICATES = `${SIGNED_DATA}.${CERTIFICATES}`;\nconst SIGNED_DATA_CRLS = `${SIGNED_DATA}.${CRLS}`;\nconst SIGNED_DATA_SIGNER_INFOS = `${SIGNED_DATA}.${SIGNER_INFOS}`;\nconst CLEAR_PROPS$3 = [\n SIGNED_DATA_VERSION,\n SIGNED_DATA_DIGEST_ALGORITHMS,\n SIGNED_DATA_ENCAP_CONTENT_INFO,\n SIGNED_DATA_CERTIFICATES,\n SIGNED_DATA_CRLS,\n SIGNED_DATA_SIGNER_INFOS\n];\nclass SignedDataVerifyError extends Error {\n constructor({ message, code = 0, date = new Date(), signatureVerified = null, signerCertificate = null, signerCertificateVerified = null, timestampSerial = null, certificatePath = [], }) {\n super(message);\n this.name = \"SignedDataVerifyError\";\n this.date = date;\n this.code = code;\n this.timestampSerial = timestampSerial;\n this.signatureVerified = signatureVerified;\n this.signerCertificate = signerCertificate;\n this.signerCertificateVerified = signerCertificateVerified;\n this.certificatePath = certificatePath;\n }\n}\nclass SignedData extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$2, SignedData.defaultValues(VERSION$2));\n this.digestAlgorithms = pvutils.getParametersValue(parameters, DIGEST_ALGORITHMS, SignedData.defaultValues(DIGEST_ALGORITHMS));\n this.encapContentInfo = pvutils.getParametersValue(parameters, ENCAP_CONTENT_INFO, SignedData.defaultValues(ENCAP_CONTENT_INFO));\n if (CERTIFICATES in parameters) {\n this.certificates = pvutils.getParametersValue(parameters, CERTIFICATES, SignedData.defaultValues(CERTIFICATES));\n }\n if (CRLS in parameters) {\n this.crls = pvutils.getParametersValue(parameters, CRLS, SignedData.defaultValues(CRLS));\n }\n if (OCSPS in parameters) {\n this.ocsps = pvutils.getParametersValue(parameters, OCSPS, SignedData.defaultValues(OCSPS));\n }\n this.signerInfos = pvutils.getParametersValue(parameters, SIGNER_INFOS, SignedData.defaultValues(SIGNER_INFOS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$2:\n return 0;\n case DIGEST_ALGORITHMS:\n return [];\n case ENCAP_CONTENT_INFO:\n return new EncapsulatedContentInfo();\n case CERTIFICATES:\n return [];\n case CRLS:\n return [];\n case OCSPS:\n return [];\n case SIGNER_INFOS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$2:\n return (memberValue === SignedData.defaultValues(VERSION$2));\n case ENCAP_CONTENT_INFO:\n return EncapsulatedContentInfo.compareWithDefault(\"eContentType\", memberValue.eContentType) &&\n EncapsulatedContentInfo.compareWithDefault(\"eContent\", memberValue.eContent);\n case DIGEST_ALGORITHMS:\n case CERTIFICATES:\n case CRLS:\n case OCSPS:\n case SIGNER_INFOS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n if (names.optional === undefined) {\n names.optional = false;\n }\n return (new asn1js.Sequence({\n name: (names.blockName || SIGNED_DATA),\n optional: names.optional,\n value: [\n new asn1js.Integer({ name: (names.version || SIGNED_DATA_VERSION) }),\n new asn1js.Set({\n value: [\n new asn1js.Repeated({\n name: (names.digestAlgorithms || SIGNED_DATA_DIGEST_ALGORITHMS),\n value: AlgorithmIdentifier.schema()\n })\n ]\n }),\n EncapsulatedContentInfo.schema(names.encapContentInfo || {\n names: {\n blockName: SIGNED_DATA_ENCAP_CONTENT_INFO\n }\n }),\n new asn1js.Constructed({\n name: (names.certificates || SIGNED_DATA_CERTIFICATES),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: CertificateSet.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: RevocationInfoChoices.schema(names.crls || {\n names: {\n crls: SIGNED_DATA_CRLS\n }\n }).valueBlock.value\n }),\n new asn1js.Set({\n value: [\n new asn1js.Repeated({\n name: (names.signerInfos || SIGNED_DATA_SIGNER_INFOS),\n value: SignerInfo.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$3);\n const asn1 = asn1js.compareSchema(schema, schema, SignedData.schema());\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result[SIGNED_DATA_VERSION].valueBlock.valueDec;\n if (SIGNED_DATA_DIGEST_ALGORITHMS in asn1.result)\n this.digestAlgorithms = Array.from(asn1.result[SIGNED_DATA_DIGEST_ALGORITHMS], algorithm => new AlgorithmIdentifier({ schema: algorithm }));\n this.encapContentInfo = new EncapsulatedContentInfo({ schema: asn1.result[SIGNED_DATA_ENCAP_CONTENT_INFO] });\n if (SIGNED_DATA_CERTIFICATES in asn1.result) {\n const certificateSet = new CertificateSet({\n schema: new asn1js.Set({\n value: asn1.result[SIGNED_DATA_CERTIFICATES].valueBlock.value\n })\n });\n this.certificates = certificateSet.certificates.slice(0);\n }\n if (SIGNED_DATA_CRLS in asn1.result) {\n this.crls = Array.from(asn1.result[SIGNED_DATA_CRLS], (crl) => {\n if (crl.idBlock.tagClass === 1)\n return new CertificateRevocationList({ schema: crl });\n crl.idBlock.tagClass = 1;\n crl.idBlock.tagNumber = 16;\n return new OtherRevocationInfoFormat({ schema: crl });\n });\n }\n if (SIGNED_DATA_SIGNER_INFOS in asn1.result)\n this.signerInfos = Array.from(asn1.result[SIGNED_DATA_SIGNER_INFOS], signerInfoSchema => new SignerInfo({ schema: signerInfoSchema }));\n }\n toSchema(encodeFlag = false) {\n const outputArray = [];\n if ((this.certificates && this.certificates.length && this.certificates.some(o => o instanceof OtherCertificateFormat))\n || (this.crls && this.crls.length && this.crls.some(o => o instanceof OtherRevocationInfoFormat))) {\n this.version = 5;\n }\n else if (this.certificates && this.certificates.length && this.certificates.some(o => o instanceof AttributeCertificateV2)) {\n this.version = 4;\n }\n else if ((this.certificates && this.certificates.length && this.certificates.some(o => o instanceof AttributeCertificateV1))\n || this.signerInfos.some(o => o.version === 3)\n || this.encapContentInfo.eContentType !== SignedData.ID_DATA) {\n this.version = 3;\n }\n else {\n this.version = 1;\n }\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(new asn1js.Set({\n value: Array.from(this.digestAlgorithms, algorithm => algorithm.toSchema())\n }));\n outputArray.push(this.encapContentInfo.toSchema());\n if (this.certificates) {\n const certificateSet = new CertificateSet({ certificates: this.certificates });\n const certificateSetSchema = certificateSet.toSchema();\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: certificateSetSchema.valueBlock.value\n }));\n }\n if (this.crls) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: Array.from(this.crls, crl => {\n if (crl instanceof OtherRevocationInfoFormat) {\n const crlSchema = crl.toSchema();\n crlSchema.idBlock.tagClass = 3;\n crlSchema.idBlock.tagNumber = 1;\n return crlSchema;\n }\n return crl.toSchema(encodeFlag);\n })\n }));\n }\n outputArray.push(new asn1js.Set({\n value: Array.from(this.signerInfos, signerInfo => signerInfo.toSchema())\n }));\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n version: this.version,\n digestAlgorithms: Array.from(this.digestAlgorithms, algorithm => algorithm.toJSON()),\n encapContentInfo: this.encapContentInfo.toJSON(),\n signerInfos: Array.from(this.signerInfos, signerInfo => signerInfo.toJSON()),\n };\n if (this.certificates) {\n res.certificates = Array.from(this.certificates, certificate => certificate.toJSON());\n }\n if (this.crls) {\n res.crls = Array.from(this.crls, crl => crl.toJSON());\n }\n return res;\n }\n async verify({ signer = (-1), data = (EMPTY_BUFFER), trustedCerts = [], checkDate = (new Date()), checkChain = false, passedWhenNotRevValues = false, extendedMode = false, findOrigin = null, findIssuer = null } = {}, crypto = getCrypto(true)) {\n let signerCert = null;\n let timestampSerial = null;\n try {\n let messageDigestValue = EMPTY_BUFFER;\n let shaAlgorithm = EMPTY_STRING;\n let certificatePath = [];\n const signerInfo = this.signerInfos[signer];\n if (!signerInfo) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 1,\n message: \"Unable to get signer by supplied index\",\n });\n }\n if (!this.certificates) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 2,\n message: \"No certificates attached to this signed data\",\n });\n }\n if (signerInfo.sid instanceof IssuerAndSerialNumber) {\n for (const certificate of this.certificates) {\n if (!(certificate instanceof Certificate))\n continue;\n if ((certificate.issuer.isEqual(signerInfo.sid.issuer)) &&\n (certificate.serialNumber.isEqual(signerInfo.sid.serialNumber))) {\n signerCert = certificate;\n break;\n }\n }\n }\n else {\n const sid = signerInfo.sid;\n const keyId = sid.idBlock.isConstructed\n ? sid.valueBlock.value[0].valueBlock.valueHex\n : sid.valueBlock.valueHex;\n for (const certificate of this.certificates) {\n if (!(certificate instanceof Certificate)) {\n continue;\n }\n const digest = await crypto.digest({ name: \"sha-1\" }, certificate.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView);\n if (pvutils.isEqualBuffer(digest, keyId)) {\n signerCert = certificate;\n break;\n }\n }\n }\n if (!signerCert) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 3,\n message: \"Unable to find signer certificate\",\n });\n }\n if (this.encapContentInfo.eContentType === id_eContentType_TSTInfo) {\n if (!this.encapContentInfo.eContent) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 15,\n message: \"Error during verification: TSTInfo eContent is empty\",\n signatureVerified: null,\n signerCertificate: signerCert,\n timestampSerial,\n signerCertificateVerified: true\n });\n }\n let tstInfo;\n try {\n tstInfo = TSTInfo.fromBER(this.encapContentInfo.eContent.valueBlock.valueHexView);\n }\n catch (ex) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 15,\n message: \"Error during verification: TSTInfo wrong ASN.1 schema \",\n signatureVerified: null,\n signerCertificate: signerCert,\n timestampSerial,\n signerCertificateVerified: true\n });\n }\n checkDate = tstInfo.genTime;\n timestampSerial = tstInfo.serialNumber.valueBlock.valueHexView.slice();\n if (data.byteLength === 0) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 4,\n message: \"Missed detached data input array\",\n });\n }\n if (!(await tstInfo.verify({ data }, crypto))) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 15,\n message: \"Error during verification: TSTInfo verification is failed\",\n signatureVerified: false,\n signerCertificate: signerCert,\n timestampSerial,\n signerCertificateVerified: true\n });\n }\n }\n if (checkChain) {\n const certs = this.certificates.filter(certificate => (certificate instanceof Certificate && !!checkCA(certificate, signerCert)));\n const chainParams = {\n checkDate,\n certs,\n trustedCerts,\n };\n if (findIssuer) {\n chainParams.findIssuer = findIssuer;\n }\n if (findOrigin) {\n chainParams.findOrigin = findOrigin;\n }\n const chainEngine = new CertificateChainValidationEngine(chainParams);\n chainEngine.certs.push(signerCert);\n if (this.crls) {\n for (const crl of this.crls) {\n if (\"thisUpdate\" in crl)\n chainEngine.crls.push(crl);\n else {\n if (crl.otherRevInfoFormat === id_PKIX_OCSP_Basic)\n chainEngine.ocsps.push(new BasicOCSPResponse({ schema: crl.otherRevInfo }));\n }\n }\n }\n if (this.ocsps) {\n chainEngine.ocsps.push(...(this.ocsps));\n }\n const verificationResult = await chainEngine.verify({ passedWhenNotRevValues }, crypto)\n .catch(e => {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 5,\n message: `Validation of signer's certificate failed with error: ${((e instanceof Object) ? e.resultMessage : e)}`,\n signerCertificate: signerCert,\n signerCertificateVerified: false\n });\n });\n if (verificationResult.certificatePath) {\n certificatePath = verificationResult.certificatePath;\n }\n if (!verificationResult.result)\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 5,\n message: `Validation of signer's certificate failed: ${verificationResult.resultMessage}`,\n signerCertificate: signerCert,\n signerCertificateVerified: false\n });\n }\n const signerInfoHashAlgorithm = crypto.getAlgorithmByOID(signerInfo.digestAlgorithm.algorithmId);\n if (!(\"name\" in signerInfoHashAlgorithm)) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 7,\n message: `Unsupported signature algorithm: ${signerInfo.digestAlgorithm.algorithmId}`,\n signerCertificate: signerCert,\n signerCertificateVerified: true\n });\n }\n shaAlgorithm = signerInfoHashAlgorithm.name;\n const eContent = this.encapContentInfo.eContent;\n if (eContent) {\n if ((eContent.idBlock.tagClass === 1) &&\n (eContent.idBlock.tagNumber === 4)) {\n data = eContent.getValue();\n }\n else\n data = eContent.valueBlock.valueBeforeDecodeView;\n }\n else {\n if (data.byteLength === 0) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 8,\n message: \"Missed detached data input array\",\n signerCertificate: signerCert,\n signerCertificateVerified: true\n });\n }\n }\n if (signerInfo.signedAttrs) {\n let foundContentType = false;\n let foundMessageDigest = false;\n for (const attribute of signerInfo.signedAttrs.attributes) {\n if (attribute.type === \"1.2.840.113549.1.9.3\")\n foundContentType = true;\n if (attribute.type === \"1.2.840.113549.1.9.4\") {\n foundMessageDigest = true;\n messageDigestValue = attribute.values[0].valueBlock.valueHex;\n }\n if (foundContentType && foundMessageDigest)\n break;\n }\n if (foundContentType === false) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 9,\n message: \"Attribute \\\"content-type\\\" is a mandatory attribute for \\\"signed attributes\\\"\",\n signerCertificate: signerCert,\n signerCertificateVerified: true\n });\n }\n if (foundMessageDigest === false) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 10,\n message: \"Attribute \\\"message-digest\\\" is a mandatory attribute for \\\"signed attributes\\\"\",\n signatureVerified: null,\n signerCertificate: signerCert,\n signerCertificateVerified: true\n });\n }\n }\n if (signerInfo.signedAttrs) {\n const messageDigest = await crypto.digest(shaAlgorithm, new Uint8Array(data));\n if (!pvutils.isEqualBuffer(messageDigest, messageDigestValue)) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 15,\n message: \"Error during verification: Message digest doesn't match\",\n signatureVerified: null,\n signerCertificate: signerCert,\n timestampSerial,\n signerCertificateVerified: true\n });\n }\n data = signerInfo.signedAttrs.encodedValue;\n }\n const verifyResult = signerInfo.signatureAlgorithm.algorithmId === \"1.2.840.113549.1.1.1\"\n ? await crypto.verifyWithPublicKey(data, signerInfo.signature, signerCert.subjectPublicKeyInfo, signerInfo.signatureAlgorithm, shaAlgorithm)\n : await crypto.verifyWithPublicKey(data, signerInfo.signature, signerCert.subjectPublicKeyInfo, signerInfo.signatureAlgorithm);\n if (extendedMode) {\n return {\n date: checkDate,\n code: 14,\n message: EMPTY_STRING,\n signatureVerified: verifyResult,\n signerCertificate: signerCert,\n timestampSerial,\n signerCertificateVerified: true,\n certificatePath\n };\n }\n else {\n return verifyResult;\n }\n }\n catch (e) {\n if (e instanceof SignedDataVerifyError) {\n throw e;\n }\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 15,\n message: `Error during verification: ${e instanceof Error ? e.message : e}`,\n signatureVerified: null,\n signerCertificate: signerCert,\n timestampSerial,\n signerCertificateVerified: true\n });\n }\n }\n async sign(privateKey, signerIndex, hashAlgorithm = \"SHA-1\", data = (EMPTY_BUFFER), crypto = getCrypto(true)) {\n var _a;\n if (!privateKey)\n throw new Error(\"Need to provide a private key for signing\");\n const signerInfo = this.signerInfos[signerIndex];\n if (!signerInfo) {\n throw new RangeError(\"SignerInfo index is out of range\");\n }\n if (!((_a = signerInfo.signedAttrs) === null || _a === void 0 ? void 0 : _a.attributes.length) && \"hash\" in privateKey.algorithm && \"hash\" in privateKey.algorithm && privateKey.algorithm.hash) {\n hashAlgorithm = privateKey.algorithm.hash.name;\n }\n const hashAlgorithmOID = crypto.getOIDByAlgorithm({ name: hashAlgorithm }, true, \"hashAlgorithm\");\n if ((this.digestAlgorithms.filter(algorithm => algorithm.algorithmId === hashAlgorithmOID)).length === 0) {\n this.digestAlgorithms.push(new AlgorithmIdentifier({\n algorithmId: hashAlgorithmOID,\n algorithmParams: new asn1js.Null()\n }));\n }\n signerInfo.digestAlgorithm = new AlgorithmIdentifier({\n algorithmId: hashAlgorithmOID,\n algorithmParams: new asn1js.Null()\n });\n const signatureParams = await crypto.getSignatureParameters(privateKey, hashAlgorithm);\n const parameters = signatureParams.parameters;\n signerInfo.signatureAlgorithm = signatureParams.signatureAlgorithm;\n if (signerInfo.signedAttrs) {\n if (signerInfo.signedAttrs.encodedValue.byteLength !== 0)\n data = signerInfo.signedAttrs.encodedValue;\n else {\n data = signerInfo.signedAttrs.toSchema().toBER();\n const view = pvtsutils.BufferSourceConverter.toUint8Array(data);\n view[0] = 0x31;\n }\n }\n else {\n const eContent = this.encapContentInfo.eContent;\n if (eContent) {\n if ((eContent.idBlock.tagClass === 1) &&\n (eContent.idBlock.tagNumber === 4)) {\n data = eContent.getValue();\n }\n else\n data = eContent.valueBlock.valueBeforeDecodeView;\n }\n else {\n if (data.byteLength === 0)\n throw new Error(\"Missed detached data input array\");\n }\n }\n const signature = await crypto.signWithPrivateKey(data, privateKey, parameters);\n signerInfo.signature = new asn1js.OctetString({ valueHex: signature });\n }\n}\nSignedData.CLASS_NAME = \"SignedData\";\nSignedData.ID_DATA = id_ContentType_Data;\n\nconst VERSION$1 = \"version\";\nconst AUTH_SAFE = \"authSafe\";\nconst MAC_DATA = \"macData\";\nconst PARSED_VALUE = \"parsedValue\";\nconst CLERA_PROPS = [\n VERSION$1,\n AUTH_SAFE,\n MAC_DATA\n];\nclass PFX extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$1, PFX.defaultValues(VERSION$1));\n this.authSafe = pvutils.getParametersValue(parameters, AUTH_SAFE, PFX.defaultValues(AUTH_SAFE));\n if (MAC_DATA in parameters) {\n this.macData = pvutils.getParametersValue(parameters, MAC_DATA, PFX.defaultValues(MAC_DATA));\n }\n if (PARSED_VALUE in parameters) {\n this.parsedValue = pvutils.getParametersValue(parameters, PARSED_VALUE, PFX.defaultValues(PARSED_VALUE));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$1:\n return 3;\n case AUTH_SAFE:\n return (new ContentInfo());\n case MAC_DATA:\n return (new MacData());\n case PARSED_VALUE:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$1:\n return (memberValue === PFX.defaultValues(memberName));\n case AUTH_SAFE:\n return ((ContentInfo.compareWithDefault(\"contentType\", memberValue.contentType)) &&\n (ContentInfo.compareWithDefault(\"content\", memberValue.content)));\n case MAC_DATA:\n return ((MacData.compareWithDefault(\"mac\", memberValue.mac)) &&\n (MacData.compareWithDefault(\"macSalt\", memberValue.macSalt)) &&\n (MacData.compareWithDefault(\"iterations\", memberValue.iterations)));\n case PARSED_VALUE:\n return ((memberValue instanceof Object) && (Object.keys(memberValue).length === 0));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || VERSION$1) }),\n ContentInfo.schema(names.authSafe || {\n names: {\n blockName: AUTH_SAFE\n }\n }),\n MacData.schema(names.macData || {\n names: {\n blockName: MAC_DATA,\n optional: true\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLERA_PROPS);\n const asn1 = asn1js.compareSchema(schema, schema, PFX.schema({\n names: {\n version: VERSION$1,\n authSafe: {\n names: {\n blockName: AUTH_SAFE\n }\n },\n macData: {\n names: {\n blockName: MAC_DATA\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.authSafe = new ContentInfo({ schema: asn1.result.authSafe });\n if (MAC_DATA in asn1.result)\n this.macData = new MacData({ schema: asn1.result.macData });\n }\n toSchema() {\n const outputArray = [\n new asn1js.Integer({ value: this.version }),\n this.authSafe.toSchema()\n ];\n if (this.macData) {\n outputArray.push(this.macData.toSchema());\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const output = {\n version: this.version,\n authSafe: this.authSafe.toJSON()\n };\n if (this.macData) {\n output.macData = this.macData.toJSON();\n }\n return output;\n }\n async makeInternalValues(parameters = {}, crypto = getCrypto(true)) {\n ArgumentError.assert(parameters, \"parameters\", \"object\");\n if (!this.parsedValue) {\n throw new Error(\"Please call \\\"parseValues\\\" function first in order to make \\\"parsedValue\\\" data\");\n }\n ParameterError.assertEmpty(this.parsedValue.integrityMode, \"integrityMode\", \"parsedValue\");\n ParameterError.assertEmpty(this.parsedValue.authenticatedSafe, \"authenticatedSafe\", \"parsedValue\");\n switch (this.parsedValue.integrityMode) {\n case 0:\n {\n if (!(\"iterations\" in parameters))\n throw new ParameterError(\"iterations\");\n ParameterError.assertEmpty(parameters.pbkdf2HashAlgorithm, \"pbkdf2HashAlgorithm\");\n ParameterError.assertEmpty(parameters.hmacHashAlgorithm, \"hmacHashAlgorithm\");\n ParameterError.assertEmpty(parameters.password, \"password\");\n const saltBuffer = new ArrayBuffer(64);\n const saltView = new Uint8Array(saltBuffer);\n crypto.getRandomValues(saltView);\n const data = this.parsedValue.authenticatedSafe.toSchema().toBER(false);\n this.authSafe = new ContentInfo({\n contentType: ContentInfo.DATA,\n content: new asn1js.OctetString({ valueHex: data })\n });\n const result = await crypto.stampDataWithPassword({\n password: parameters.password,\n hashAlgorithm: parameters.hmacHashAlgorithm,\n salt: saltBuffer,\n iterationCount: parameters.iterations,\n contentToStamp: data\n });\n this.macData = new MacData({\n mac: new DigestInfo({\n digestAlgorithm: new AlgorithmIdentifier({\n algorithmId: crypto.getOIDByAlgorithm({ name: parameters.hmacHashAlgorithm }, true, \"hmacHashAlgorithm\"),\n }),\n digest: new asn1js.OctetString({ valueHex: result })\n }),\n macSalt: new asn1js.OctetString({ valueHex: saltBuffer }),\n iterations: parameters.iterations\n });\n }\n break;\n case 1:\n {\n if (!(\"signingCertificate\" in parameters)) {\n throw new ParameterError(\"signingCertificate\");\n }\n ParameterError.assertEmpty(parameters.privateKey, \"privateKey\");\n ParameterError.assertEmpty(parameters.hashAlgorithm, \"hashAlgorithm\");\n const toBeSigned = this.parsedValue.authenticatedSafe.toSchema().toBER(false);\n const cmsSigned = new SignedData({\n version: 1,\n encapContentInfo: new EncapsulatedContentInfo({\n eContentType: \"1.2.840.113549.1.7.1\",\n eContent: new asn1js.OctetString({ valueHex: toBeSigned })\n }),\n certificates: [parameters.signingCertificate]\n });\n const result = await crypto.digest({ name: parameters.hashAlgorithm }, new Uint8Array(toBeSigned));\n const signedAttr = [];\n signedAttr.push(new Attribute({\n type: \"1.2.840.113549.1.9.3\",\n values: [\n new asn1js.ObjectIdentifier({ value: \"1.2.840.113549.1.7.1\" })\n ]\n }));\n signedAttr.push(new Attribute({\n type: \"1.2.840.113549.1.9.5\",\n values: [\n new asn1js.UTCTime({ valueDate: new Date() })\n ]\n }));\n signedAttr.push(new Attribute({\n type: \"1.2.840.113549.1.9.4\",\n values: [\n new asn1js.OctetString({ valueHex: result })\n ]\n }));\n cmsSigned.signerInfos.push(new SignerInfo({\n version: 1,\n sid: new IssuerAndSerialNumber({\n issuer: parameters.signingCertificate.issuer,\n serialNumber: parameters.signingCertificate.serialNumber\n }),\n signedAttrs: new SignedAndUnsignedAttributes({\n type: 0,\n attributes: signedAttr\n })\n }));\n await cmsSigned.sign(parameters.privateKey, 0, parameters.hashAlgorithm, undefined, crypto);\n this.authSafe = new ContentInfo({\n contentType: \"1.2.840.113549.1.7.2\",\n content: cmsSigned.toSchema(true)\n });\n }\n break;\n default:\n throw new Error(`Parameter \"integrityMode\" has unknown value: ${this.parsedValue.integrityMode}`);\n }\n }\n async parseInternalValues(parameters, crypto = getCrypto(true)) {\n ArgumentError.assert(parameters, \"parameters\", \"object\");\n if (parameters.checkIntegrity === undefined) {\n parameters.checkIntegrity = true;\n }\n this.parsedValue = {};\n switch (this.authSafe.contentType) {\n case ContentInfo.DATA:\n {\n ParameterError.assertEmpty(parameters.password, \"password\");\n this.parsedValue.integrityMode = 0;\n ArgumentError.assert(this.authSafe.content, \"authSafe.content\", asn1js.OctetString);\n const authSafeContent = this.authSafe.content.getValue();\n this.parsedValue.authenticatedSafe = AuthenticatedSafe.fromBER(authSafeContent);\n if (parameters.checkIntegrity) {\n if (!this.macData) {\n throw new Error(\"Absent \\\"macData\\\" value, can not check PKCS#12 data integrity\");\n }\n const hashAlgorithm = crypto.getAlgorithmByOID(this.macData.mac.digestAlgorithm.algorithmId, true, \"digestAlgorithm\");\n const result = await crypto.verifyDataStampedWithPassword({\n password: parameters.password,\n hashAlgorithm: hashAlgorithm.name,\n salt: BufferSourceConverter.toArrayBuffer(this.macData.macSalt.valueBlock.valueHexView),\n iterationCount: this.macData.iterations || 1,\n contentToVerify: authSafeContent,\n signatureToVerify: BufferSourceConverter.toArrayBuffer(this.macData.mac.digest.valueBlock.valueHexView),\n });\n if (!result) {\n throw new Error(\"Integrity for the PKCS#12 data is broken!\");\n }\n }\n }\n break;\n case ContentInfo.SIGNED_DATA:\n {\n this.parsedValue.integrityMode = 1;\n const cmsSigned = new SignedData({ schema: this.authSafe.content });\n const eContent = cmsSigned.encapContentInfo.eContent;\n ParameterError.assert(eContent, \"eContent\", \"cmsSigned.encapContentInfo\");\n ArgumentError.assert(eContent, \"eContent\", asn1js.OctetString);\n const data = eContent.getValue();\n this.parsedValue.authenticatedSafe = AuthenticatedSafe.fromBER(data);\n const ok = await cmsSigned.verify({ signer: 0, checkChain: false }, crypto);\n if (!ok) {\n throw new Error(\"Integrity for the PKCS#12 data is broken!\");\n }\n }\n break;\n default:\n throw new Error(`Incorrect value for \"this.authSafe.contentType\": ${this.authSafe.contentType}`);\n }\n }\n}\nPFX.CLASS_NAME = \"PFX\";\n\nconst STATUS$1 = \"status\";\nconst STATUS_STRINGS = \"statusStrings\";\nconst FAIL_INFO = \"failInfo\";\nconst CLEAR_PROPS$2 = [\n STATUS$1,\n STATUS_STRINGS,\n FAIL_INFO\n];\nvar PKIStatus;\n(function (PKIStatus) {\n PKIStatus[PKIStatus[\"granted\"] = 0] = \"granted\";\n PKIStatus[PKIStatus[\"grantedWithMods\"] = 1] = \"grantedWithMods\";\n PKIStatus[PKIStatus[\"rejection\"] = 2] = \"rejection\";\n PKIStatus[PKIStatus[\"waiting\"] = 3] = \"waiting\";\n PKIStatus[PKIStatus[\"revocationWarning\"] = 4] = \"revocationWarning\";\n PKIStatus[PKIStatus[\"revocationNotification\"] = 5] = \"revocationNotification\";\n})(PKIStatus || (PKIStatus = {}));\nclass PKIStatusInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.status = pvutils.getParametersValue(parameters, STATUS$1, PKIStatusInfo.defaultValues(STATUS$1));\n if (STATUS_STRINGS in parameters) {\n this.statusStrings = pvutils.getParametersValue(parameters, STATUS_STRINGS, PKIStatusInfo.defaultValues(STATUS_STRINGS));\n }\n if (FAIL_INFO in parameters) {\n this.failInfo = pvutils.getParametersValue(parameters, FAIL_INFO, PKIStatusInfo.defaultValues(FAIL_INFO));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case STATUS$1:\n return 2;\n case STATUS_STRINGS:\n return [];\n case FAIL_INFO:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case STATUS$1:\n return (memberValue === PKIStatusInfo.defaultValues(memberName));\n case STATUS_STRINGS:\n return (memberValue.length === 0);\n case FAIL_INFO:\n return (memberValue.isEqual(PKIStatusInfo.defaultValues(memberName)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.status || EMPTY_STRING) }),\n new asn1js.Sequence({\n optional: true,\n value: [\n new asn1js.Repeated({\n name: (names.statusStrings || EMPTY_STRING),\n value: new asn1js.Utf8String()\n })\n ]\n }),\n new asn1js.BitString({\n name: (names.failInfo || EMPTY_STRING),\n optional: true\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$2);\n const asn1 = asn1js.compareSchema(schema, schema, PKIStatusInfo.schema({\n names: {\n status: STATUS$1,\n statusStrings: STATUS_STRINGS,\n failInfo: FAIL_INFO\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n const _status = asn1.result.status;\n if ((_status.valueBlock.isHexOnly === true) ||\n (_status.valueBlock.valueDec < 0) ||\n (_status.valueBlock.valueDec > 5))\n throw new Error(\"PKIStatusInfo \\\"status\\\" has invalid value\");\n this.status = _status.valueBlock.valueDec;\n if (STATUS_STRINGS in asn1.result)\n this.statusStrings = asn1.result.statusStrings;\n if (FAIL_INFO in asn1.result)\n this.failInfo = asn1.result.failInfo;\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.status }));\n if (this.statusStrings) {\n outputArray.push(new asn1js.Sequence({\n optional: true,\n value: this.statusStrings\n }));\n }\n if (this.failInfo) {\n outputArray.push(this.failInfo);\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n status: this.status\n };\n if (this.statusStrings) {\n res.statusStrings = Array.from(this.statusStrings, o => o.toJSON());\n }\n if (this.failInfo) {\n res.failInfo = this.failInfo.toJSON();\n }\n return res;\n }\n}\nPKIStatusInfo.CLASS_NAME = \"PKIStatusInfo\";\n\nconst VERSION = \"version\";\nconst MESSAGE_IMPRINT = \"messageImprint\";\nconst REQ_POLICY = \"reqPolicy\";\nconst NONCE = \"nonce\";\nconst CERT_REQ = \"certReq\";\nconst EXTENSIONS = \"extensions\";\nconst TIME_STAMP_REQ = \"TimeStampReq\";\nconst TIME_STAMP_REQ_VERSION = `${TIME_STAMP_REQ}.${VERSION}`;\nconst TIME_STAMP_REQ_MESSAGE_IMPRINT = `${TIME_STAMP_REQ}.${MESSAGE_IMPRINT}`;\nconst TIME_STAMP_REQ_POLICY = `${TIME_STAMP_REQ}.${REQ_POLICY}`;\nconst TIME_STAMP_REQ_NONCE = `${TIME_STAMP_REQ}.${NONCE}`;\nconst TIME_STAMP_REQ_CERT_REQ = `${TIME_STAMP_REQ}.${CERT_REQ}`;\nconst TIME_STAMP_REQ_EXTENSIONS = `${TIME_STAMP_REQ}.${EXTENSIONS}`;\nconst CLEAR_PROPS$1 = [\n TIME_STAMP_REQ_VERSION,\n TIME_STAMP_REQ_MESSAGE_IMPRINT,\n TIME_STAMP_REQ_POLICY,\n TIME_STAMP_REQ_NONCE,\n TIME_STAMP_REQ_CERT_REQ,\n TIME_STAMP_REQ_EXTENSIONS,\n];\nclass TimeStampReq extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION, TimeStampReq.defaultValues(VERSION));\n this.messageImprint = pvutils.getParametersValue(parameters, MESSAGE_IMPRINT, TimeStampReq.defaultValues(MESSAGE_IMPRINT));\n if (REQ_POLICY in parameters) {\n this.reqPolicy = pvutils.getParametersValue(parameters, REQ_POLICY, TimeStampReq.defaultValues(REQ_POLICY));\n }\n if (NONCE in parameters) {\n this.nonce = pvutils.getParametersValue(parameters, NONCE, TimeStampReq.defaultValues(NONCE));\n }\n if (CERT_REQ in parameters) {\n this.certReq = pvutils.getParametersValue(parameters, CERT_REQ, TimeStampReq.defaultValues(CERT_REQ));\n }\n if (EXTENSIONS in parameters) {\n this.extensions = pvutils.getParametersValue(parameters, EXTENSIONS, TimeStampReq.defaultValues(EXTENSIONS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION:\n return 0;\n case MESSAGE_IMPRINT:\n return new MessageImprint();\n case REQ_POLICY:\n return EMPTY_STRING;\n case NONCE:\n return new asn1js.Integer();\n case CERT_REQ:\n return false;\n case EXTENSIONS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION:\n case REQ_POLICY:\n case CERT_REQ:\n return (memberValue === TimeStampReq.defaultValues(memberName));\n case MESSAGE_IMPRINT:\n return ((MessageImprint.compareWithDefault(\"hashAlgorithm\", memberValue.hashAlgorithm)) &&\n (MessageImprint.compareWithDefault(\"hashedMessage\", memberValue.hashedMessage)));\n case NONCE:\n return (memberValue.isEqual(TimeStampReq.defaultValues(memberName)));\n case EXTENSIONS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || TIME_STAMP_REQ),\n value: [\n new asn1js.Integer({ name: (names.version || TIME_STAMP_REQ_VERSION) }),\n MessageImprint.schema(names.messageImprint || {\n names: {\n blockName: TIME_STAMP_REQ_MESSAGE_IMPRINT\n }\n }),\n new asn1js.ObjectIdentifier({\n name: (names.reqPolicy || TIME_STAMP_REQ_POLICY),\n optional: true\n }),\n new asn1js.Integer({\n name: (names.nonce || TIME_STAMP_REQ_NONCE),\n optional: true\n }),\n new asn1js.Boolean({\n name: (names.certReq || TIME_STAMP_REQ_CERT_REQ),\n optional: true\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Repeated({\n name: (names.extensions || TIME_STAMP_REQ_EXTENSIONS),\n value: Extension.schema()\n })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1);\n const asn1 = asn1js.compareSchema(schema, schema, TimeStampReq.schema());\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result[TIME_STAMP_REQ_VERSION].valueBlock.valueDec;\n this.messageImprint = new MessageImprint({ schema: asn1.result[TIME_STAMP_REQ_MESSAGE_IMPRINT] });\n if (TIME_STAMP_REQ_POLICY in asn1.result)\n this.reqPolicy = asn1.result[TIME_STAMP_REQ_POLICY].valueBlock.toString();\n if (TIME_STAMP_REQ_NONCE in asn1.result)\n this.nonce = asn1.result[TIME_STAMP_REQ_NONCE];\n if (TIME_STAMP_REQ_CERT_REQ in asn1.result)\n this.certReq = asn1.result[TIME_STAMP_REQ_CERT_REQ].valueBlock.value;\n if (TIME_STAMP_REQ_EXTENSIONS in asn1.result)\n this.extensions = Array.from(asn1.result[TIME_STAMP_REQ_EXTENSIONS], element => new Extension({ schema: element }));\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(this.messageImprint.toSchema());\n if (this.reqPolicy)\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.reqPolicy }));\n if (this.nonce)\n outputArray.push(this.nonce);\n if ((CERT_REQ in this) && (TimeStampReq.compareWithDefault(CERT_REQ, this.certReq) === false))\n outputArray.push(new asn1js.Boolean({ value: this.certReq }));\n if (this.extensions) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: Array.from(this.extensions, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n version: this.version,\n messageImprint: this.messageImprint.toJSON()\n };\n if (this.reqPolicy !== undefined)\n res.reqPolicy = this.reqPolicy;\n if (this.nonce !== undefined)\n res.nonce = this.nonce.toJSON();\n if ((this.certReq !== undefined) && (TimeStampReq.compareWithDefault(CERT_REQ, this.certReq) === false))\n res.certReq = this.certReq;\n if (this.extensions) {\n res.extensions = Array.from(this.extensions, o => o.toJSON());\n }\n return res;\n }\n}\nTimeStampReq.CLASS_NAME = \"TimeStampReq\";\n\nconst STATUS = \"status\";\nconst TIME_STAMP_TOKEN = \"timeStampToken\";\nconst TIME_STAMP_RESP = \"TimeStampResp\";\nconst TIME_STAMP_RESP_STATUS = `${TIME_STAMP_RESP}.${STATUS}`;\nconst TIME_STAMP_RESP_TOKEN = `${TIME_STAMP_RESP}.${TIME_STAMP_TOKEN}`;\nconst CLEAR_PROPS = [\n TIME_STAMP_RESP_STATUS,\n TIME_STAMP_RESP_TOKEN\n];\nclass TimeStampResp extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.status = pvutils.getParametersValue(parameters, STATUS, TimeStampResp.defaultValues(STATUS));\n if (TIME_STAMP_TOKEN in parameters) {\n this.timeStampToken = pvutils.getParametersValue(parameters, TIME_STAMP_TOKEN, TimeStampResp.defaultValues(TIME_STAMP_TOKEN));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case STATUS:\n return new PKIStatusInfo();\n case TIME_STAMP_TOKEN:\n return new ContentInfo();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case STATUS:\n return ((PKIStatusInfo.compareWithDefault(STATUS, memberValue.status)) &&\n ((\"statusStrings\" in memberValue) === false) &&\n ((\"failInfo\" in memberValue) === false));\n case TIME_STAMP_TOKEN:\n return ((memberValue.contentType === EMPTY_STRING) &&\n (memberValue.content instanceof asn1js.Any));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || TIME_STAMP_RESP),\n value: [\n PKIStatusInfo.schema(names.status || {\n names: {\n blockName: TIME_STAMP_RESP_STATUS\n }\n }),\n ContentInfo.schema(names.timeStampToken || {\n names: {\n blockName: TIME_STAMP_RESP_TOKEN,\n optional: true\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS);\n const asn1 = asn1js.compareSchema(schema, schema, TimeStampResp.schema());\n AsnError.assertSchema(asn1, this.className);\n this.status = new PKIStatusInfo({ schema: asn1.result[TIME_STAMP_RESP_STATUS] });\n if (TIME_STAMP_RESP_TOKEN in asn1.result)\n this.timeStampToken = new ContentInfo({ schema: asn1.result[TIME_STAMP_RESP_TOKEN] });\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.status.toSchema());\n if (this.timeStampToken) {\n outputArray.push(this.timeStampToken.toSchema());\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n status: this.status.toJSON()\n };\n if (this.timeStampToken) {\n res.timeStampToken = this.timeStampToken.toJSON();\n }\n return res;\n }\n async sign(privateKey, hashAlgorithm, crypto = getCrypto(true)) {\n this.assertContentType();\n const signed = new SignedData({ schema: this.timeStampToken.content });\n return signed.sign(privateKey, 0, hashAlgorithm, undefined, crypto);\n }\n async verify(verificationParameters = { signer: 0, trustedCerts: [], data: EMPTY_BUFFER }, crypto = getCrypto(true)) {\n this.assertContentType();\n const signed = new SignedData({ schema: this.timeStampToken.content });\n return signed.verify(verificationParameters, crypto);\n }\n assertContentType() {\n if (!this.timeStampToken) {\n throw new Error(\"timeStampToken is absent in TSP response\");\n }\n if (this.timeStampToken.contentType !== id_ContentType_SignedData) {\n throw new Error(`Wrong format of timeStampToken: ${this.timeStampToken.contentType}`);\n }\n }\n}\nTimeStampResp.CLASS_NAME = \"TimeStampResp\";\n\nfunction initCryptoEngine() {\n if (typeof self !== \"undefined\") {\n if (\"crypto\" in self) {\n let engineName = \"webcrypto\";\n if (\"webkitSubtle\" in self.crypto) {\n engineName = \"safari\";\n }\n setEngine(engineName, new CryptoEngine({ name: engineName, crypto: crypto }));\n }\n }\n else if (typeof crypto !== \"undefined\" && \"webcrypto\" in crypto) {\n const name = \"NodeJS ^15\";\n const nodeCrypto = crypto.webcrypto;\n setEngine(name, new CryptoEngine({ name, crypto: nodeCrypto }));\n }\n}\n\ninitCryptoEngine();\n\nexport { AbstractCryptoEngine, AccessDescription, Accuracy, AlgorithmIdentifier, AltName, ArgumentError, AsnError, AttCertValidityPeriod, Attribute, AttributeCertificateInfoV1, AttributeCertificateInfoV2, AttributeCertificateV1, AttributeCertificateV2, AttributeTypeAndValue, AuthenticatedSafe, AuthorityKeyIdentifier, BasicConstraints, BasicOCSPResponse, CAVersion, CRLBag, CRLDistributionPoints, CertBag, CertID, Certificate, CertificateChainValidationEngine, CertificatePolicies, CertificateRevocationList, CertificateSet, CertificateTemplate, CertificationRequest, ChainValidationCode, ChainValidationError, ContentInfo, CryptoEngine, DigestInfo, DistributionPoint, ECCCMSSharedInfo, ECNamedCurves, ECPrivateKey, ECPublicKey, EncapsulatedContentInfo, EncryptedContentInfo, EncryptedData, EnvelopedData, ExtKeyUsage, Extension, ExtensionValueFactory, Extensions, GeneralName, GeneralNames, GeneralSubtree, HASHED_MESSAGE, HASH_ALGORITHM, Holder, InfoAccess, IssuerAndSerialNumber, IssuerSerial, IssuingDistributionPoint, KEKIdentifier, KEKRecipientInfo, KeyAgreeRecipientIdentifier, KeyAgreeRecipientInfo, KeyBag, KeyTransRecipientInfo, MICROS, MILLIS, MacData, MessageImprint, NameConstraints, OCSPRequest, OCSPResponse, ObjectDigestInfo, OriginatorIdentifierOrKey, OriginatorInfo, OriginatorPublicKey, OtherCertificateFormat, OtherKeyAttribute, OtherPrimeInfo, OtherRecipientInfo, OtherRevocationInfoFormat, PBES2Params, PBKDF2Params, PFX, PKCS8ShroudedKeyBag, PKIStatus, PKIStatusInfo, POLICY_IDENTIFIER, POLICY_QUALIFIERS, ParameterError, PasswordRecipientinfo, PkiObject, PolicyConstraints, PolicyInformation, PolicyMapping, PolicyMappings, PolicyQualifierInfo, PrivateKeyInfo, PrivateKeyUsagePeriod, PublicKeyInfo, QCStatement, QCStatements, RDN, RSAESOAEPParams, RSAPrivateKey, RSAPublicKey, RSASSAPSSParams, RecipientEncryptedKey, RecipientEncryptedKeys, RecipientIdentifier, RecipientInfo, RecipientKeyIdentifier, RelativeDistinguishedNames, Request, ResponseBytes, ResponseData, RevocationInfoChoices, RevokedCertificate, SECONDS, SafeBag, SafeBagValueFactory, SafeContents, SecretBag, Signature, SignedAndUnsignedAttributes, SignedCertificateTimestamp, SignedCertificateTimestampList, SignedData, SignedDataVerifyError, SignerInfo, SingleResponse, SubjectDirectoryAttributes, TBSRequest, TSTInfo, TYPE$4 as TYPE, TYPE_AND_VALUES, Time, TimeStampReq, TimeStampResp, TimeType, V2Form, VALUE$5 as VALUE, VALUE_BEFORE_DECODE, checkCA, createCMSECDSASignature, createECDSASignatureFromCMS, engine, getAlgorithmByOID, getAlgorithmParameters, getCrypto, getEngine, getHashAlgorithm, getOIDByAlgorithm, getRandomValues, id_AnyPolicy, id_AuthorityInfoAccess, id_AuthorityKeyIdentifier, id_BaseCRLNumber, id_BasicConstraints, id_CRLBag_X509CRL, id_CRLDistributionPoints, id_CRLNumber, id_CRLReason, id_CertBag_AttributeCertificate, id_CertBag_SDSICertificate, id_CertBag_X509Certificate, id_CertificateIssuer, id_CertificatePolicies, id_ContentType_Data, id_ContentType_EncryptedData, id_ContentType_EnvelopedData, id_ContentType_SignedData, id_ExtKeyUsage, id_FreshestCRL, id_InhibitAnyPolicy, id_InvalidityDate, id_IssuerAltName, id_IssuingDistributionPoint, id_KeyUsage, id_MicrosoftAppPolicies, id_MicrosoftCaVersion, id_MicrosoftCertTemplateV1, id_MicrosoftCertTemplateV2, id_MicrosoftPrevCaCertHash, id_NameConstraints, id_PKIX_OCSP_Basic, id_PolicyConstraints, id_PolicyMappings, id_PrivateKeyUsagePeriod, id_QCStatements, id_SignedCertificateTimestampList, id_SubjectAltName, id_SubjectDirectoryAttributes, id_SubjectInfoAccess, id_SubjectKeyIdentifier, id_ad, id_ad_caIssuers, id_ad_ocsp, id_eContentType_TSTInfo, id_pkix, id_sha1, id_sha256, id_sha384, id_sha512, kdf, setEngine, stringPrep, verifySCTsForCertificate };\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nexport function bufferToString(buffer: Uint8Array): string {\n\treturn String.fromCharCode(...buffer)\n}\n\nexport function stringToBuffer(str: string): Uint8Array {\n\treturn Uint8Array.from(str, c => c.charCodeAt(0))\n}\n\nexport function bufferToBase64(buffer: Uint8Array): string {\n\treturn btoa(bufferToString(buffer))\n}\n\nexport function bufferToHex(buffer: Uint8Array): string {\n\treturn Array.from(buffer).map(byte => byte.toString(16).padStart(2, '0')).join('')\n}\n\nexport function base64ToBuffer(base64Str: string): Uint8Array {\n\treturn stringToBuffer(atob(base64Str))\n}\n\nexport function pemToBuffer(pem: string): Uint8Array {\n\tconst pemContents = pem\n\t\t.replace(/-----BEGIN ((PRIVATE KEY)|(PUBLIC KEY)|(CERTIFICATE))-----/, '')\n\t\t.replace(/-----END ((PRIVATE KEY)|(PUBLIC KEY)|(CERTIFICATE))-----/, '')\n\t\t.replace(/\\n/g, '')\n\n\treturn base64ToBuffer(pemContents)\n}","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { X509Certificate } from '@peculiar/x509'\nimport { Certificate, CryptoEngine, SignedData, ContentInfo } from 'pkijs'\n\nimport { bufferToHex, pemToBuffer } from './bufferUtils'\nimport type { UserWithAccess } from '../models'\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nexport async function encryptWithAES(content: BufferSource, key: CryptoKey, options: Partial = {}) {\n\tconst iv = self.crypto.getRandomValues(new Uint8Array(16))\n\n\tconst encryptedContent = await self.crypto.subtle.encrypt(\n\t\t{ name: 'AES-GCM', iv, ...options },\n\t\tkey,\n\t\tcontent,\n\t)\n\n\treturn {\n\t\tencryptedContent: new Uint8Array(encryptedContent),\n\t\tiv,\n\t}\n}\n\nexport async function decryptWithAES(content: BufferSource, key: CryptoKey, options: Partial = {}): Promise {\n\treturn await self.crypto.subtle.decrypt(\n\t\t{ name: 'AES-GCM', ...options },\n\t\tkey,\n\t\tcontent,\n\t)\n}\n\nexport async function decryptWithRSA(content: BufferSource, key: CryptoKey): Promise {\n\treturn await self.crypto.subtle.decrypt(\n\t\t{ name: 'RSA-OAEP' },\n\t\tkey,\n\t\tcontent,\n\t)\n}\n\nexport async function loadAESPrivateKey(key: Uint8Array): Promise {\n\treturn await self.crypto.subtle.importKey(\n\t\t'raw',\n\t\tkey,\n\t\t{\n\t\t\tname: 'AES-GCM',\n\t\t\tlength: 128,\n\t\t},\n\t\ttrue,\n\t\t['decrypt', 'encrypt'],\n\t)\n}\n\nexport async function loadServerPublicKey(key: Uint8Array): Promise {\n\treturn await self.crypto.subtle.importKey(\n\t\t'spki',\n\t\tkey,\n\t\t{\n\t\t\tname: 'RSASSA-PKCS1-v1_5',\n\t\t\thash: 'SHA-256', // TODO: get from server?\n\t\t},\n\t\ttrue,\n\t\t['verify'],\n\t)\n}\n\nexport async function loadRSAPrivateKey(key: Uint8Array): Promise {\n\treturn await self.crypto.subtle.importKey(\n\t\t'pkcs8',\n\t\tkey,\n\t\t{\n\t\t\tname: 'RSA-OAEP',\n\t\t\thash: 'SHA-256',\n\t\t},\n\t\ttrue,\n\t\t['decrypt'],\n\t)\n}\n\nexport async function exportRSAKey(key: CryptoKey): Promise {\n\tif (key.type === 'public') {\n\t\treturn new Uint8Array(await self.crypto.subtle.exportKey('spki', key))\n\t} else {\n\t\treturn new Uint8Array(await self.crypto.subtle.exportKey('pkcs8', key))\n\t}\n}\n\nexport async function exportAESKey(key: CryptoKey): Promise {\n\treturn new Uint8Array(await self.crypto.subtle.exportKey('raw', key))\n}\n\nexport async function sha256Hash(buffer: Uint8Array): Promise {\n\tconst hashBuffer = await self.crypto.subtle.digest('SHA-256', buffer)\n\treturn bufferToHex(new Uint8Array(hashBuffer))\n}\n\nexport async function validateCertificateSignature(certificate: string, publicKey: CryptoKey): Promise {\n\tconst cert = new X509Certificate(certificate)\n\n\treturn cert.verify({ publicKey }, getPatchedCrypto())\n}\n\n// Return a patched crypto because x509's default does not give the correct data type to the subtle.verify method\nfunction getPatchedCrypto(): Crypto {\n\treturn {\n\t\t...self.crypto,\n\t\tsubtle: {\n\t\t\t...self.crypto.subtle,\n\t\t\tasync verify(algorithm: globalThis.AlgorithmIdentifier | RsaPssParams | EcdsaParams, key: CryptoKey, signature: ArrayBuffer, data: ArrayBuffer): Promise {\n\t\t\t\treturn self.crypto.subtle.verify(algorithm, key, new Uint8Array(signature), new Uint8Array(data))\n\t\t\t},\n\t\t},\n\t}\n}\n\nexport async function validateCMSSignature(signedData: Uint8Array, cmsBuffer: Uint8Array, users: UserWithAccess[]): Promise {\n\t// Parse the CMS buffer\n\tconst cmsContent = ContentInfo.fromBER(cmsBuffer)\n\tconst originalSignedData = new SignedData({ schema: cmsContent.content })\n\n\t// Get the signer certificate from the users array\n\tconst signerInfo = originalSignedData.signerInfos[0]\n\tconst signerUserId = signerInfo.sid.issuer.typesAndValues.find(({ type }) => type === '2.5.4.3' /** Common name OID */).value.valueBlock.value\n\tconst signer = users.find(({ userId }) => userId === signerUserId)\n\tif (signer === undefined) {\n\t\tthrow new Error('Signer not found in the users array')\n\t}\n\tconst signerCertificate = Certificate.fromBER(pemToBuffer(signer.certificate))\n\n\tconst verificationResult = await originalSignedData.verify(\n\t\t{\n\t\t\tsigner: 0,\n\t\t\ttrustedCerts: [signerCertificate],\n\t\t\tdata: signedData as unknown as ArrayBuffer,\n\t\t\tcheckChain: true,\n\t\t},\n\t\tgetPatchedCryptoEngine(),\n\t)\n\n\treturn verificationResult\n}\n\nclass CustomCryptoEngine extends CryptoEngine {\n\n\tverify(algorithm: globalThis.AlgorithmIdentifier | RsaPssParams | EcdsaParams, key: CryptoKey, signature: BufferSource, data: ArrayBuffer): Promise {\n\t\treturn super.verify(algorithm, key, signature, new Uint8Array(data))\n\t}\n\n}\n\n// Return a patched crypto engine because pkijs' default engine does not give the correct data type to the subtle.verify method\nfunction getPatchedCryptoEngine() {\n\treturn new CustomCryptoEngine({ crypto: self.crypto })\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nimport logger from './logger.ts'\nimport type { PrivateKeyInfo } from '../models.ts'\nimport { decryptWithAES, loadRSAPrivateKey } from './crypto.ts'\nimport { bufferToString, pemToBuffer } from './bufferUtils.ts'\n\nexport async function decryptPrivateKey(privateKeyInfo: PrivateKeyInfo, mnemonic: string): Promise {\n\tlogger.debug('Decrypting private key', { privateKeyInfo, mnemonic })\n\n\t// We need to support the old mnemonic formats for backwards compatibility\n\tconst mnemonicPrivateKeys = await Promise.all([\n\t\tawait mnemonicToPrivateKey(mnemonic, privateKeyInfo.salt, { hash: 'SHA-256', iterations: 600000 }),\n\t\tawait mnemonicToPrivateKey(mnemonic, privateKeyInfo.salt, { hash: 'SHA-1', iterations: 1024 }),\n\t\tawait mnemonicToPrivateKey(mnemonic, privateKeyInfo.salt, { hash: 'SHA-1', iterations: 600000 }),\n\t])\n\n\tfor (const mnemonicPrivateKey of mnemonicPrivateKeys) {\n\t\ttry {\n\t\t\tconst rawPrivateKey = await decryptWithAES(\n\t\t\t\tprivateKeyInfo.encryptedPrivateKey,\n\t\t\t\tmnemonicPrivateKey,\n\t\t\t\t{ iv: privateKeyInfo.iv, tagLength: 128 },\n\t\t\t)\n\n\t\t\tconst pemKey = atob(bufferToString(new Uint8Array(rawPrivateKey)))\n\t\t\treturn loadRSAPrivateKey(pemToBuffer(pemKey))\n\t\t} catch {\n\t\t}\n\t}\n\n\tthrow new Error('Failed to decrypt private key')\n}\n\nasync function mnemonicToPrivateKey(mnemonic: string, salt: Uint8Array, params: Partial): Promise {\n\tconst keyMaterial = await crypto.subtle.importKey(\n\t\t'raw',\n\t\tnew TextEncoder().encode(mnemonic.replaceAll(' ', '')),\n\t\t{ name: 'PBKDF2' },\n\t\tfalse,\n\t\t['deriveKey'],\n\t)\n\n\treturn await crypto.subtle.deriveKey(\n\t\t{\n\t\t\tname: 'PBKDF2',\n\t\t\tsalt,\n\t\t\t...params,\n\t\t},\n\t\tkeyMaterial,\n\t\t{ name: 'AES-GCM', length: 256 },\n\t\ttrue,\n\t\t['decrypt', 'encrypt'],\n\t)\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable jsdoc/require-jsdoc */\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport type { PrivateKeyInfo } from '../models.ts'\nimport { base64ToBuffer, pemToBuffer } from './bufferUtils.ts'\nimport { loadServerPublicKey } from './crypto.ts'\n\n// API: https://github.com/nextcloud/end_to_end_encryption/blob/master/doc/api.md\n\nconst API_ROOT = 'apps/end_to_end_encryption/api/v2'\nconst Url = {\n\tPrivateKey: API_ROOT + '/private-key',\n\tMetadata: API_ROOT + '/meta-data/{fileId}',\n\tServerKey: API_ROOT + '/server-key',\n}\n\nexport async function getPrivateKey(): Promise {\n\tconst response = await axios.get>(\n\t\tgenerateOcsUrl(Url.PrivateKey),\n\t\t{ headers: { 'X-E2EE-SUPPORTED': 'true' } },\n\t)\n\tconst encryptedPrivateKeyInfo = response.data.ocs.data['private-key']\n\tconst [encryptedPrivateKey, iv, salt] = encryptedPrivateKeyInfo.split('|')\n\treturn {\n\t\tencryptedPrivateKey: base64ToBuffer(encryptedPrivateKey),\n\t\tiv: base64ToBuffer(iv),\n\t\tsalt: base64ToBuffer(salt),\n\t}\n}\n\nexport async function getServerPublicKey(): Promise {\n\tconst response = await axios.get>(\n\t\tgenerateOcsUrl(Url.ServerKey),\n\t\t{ headers: { 'X-E2EE-SUPPORTED': 'true' } },\n\t)\n\n\treturn await loadServerPublicKey(pemToBuffer(response.data.ocs.data['public-key']))\n}\n","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"AlertCircleOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon alert-circle-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst AlertCircle = __component__.exports;\nexport {\n AlertCircle as A\n};\n","import '../assets/NcInputField-CUsdr7lV.css';\nimport NcButton from \"../Components/NcButton.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-CMooMQt0.mjs\";\nimport { A as AlertCircle } from \"./AlertCircleOutline-DBxbepLy.mjs\";\nimport { C as Check } from \"./Check-BkThHPH7.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcInputField\",\n components: {\n NcButton,\n AlertCircle,\n Check\n },\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n * @deprecated\n */\n value: {\n type: [String, Number],\n default: void 0\n },\n /**\n * The value of the input field\n * If type is 'number' and a number is passed as value than the type of `update:modelValue` will also be 'number'\n */\n modelValue: {\n type: [String, Number],\n default: void 0\n },\n /**\n * The type of the input element\n */\n type: {\n type: String,\n default: \"text\",\n validator: (value) => [\n \"text\",\n \"password\",\n \"email\",\n \"tel\",\n \"url\",\n \"search\",\n \"number\"\n ].includes(value)\n },\n /**\n * The input label, always provide one for accessibility purposes.\n * This will also be used as a placeholder unless the placeholder\n * prop is populated with a different string.\n *\n * Note: If the background color is not `--color-main-background` consider using an external label instead (see `labelOutside`).\n */\n label: {\n type: String,\n default: void 0\n },\n /**\n * Pass in true if you want to use an external label. This is useful\n * if you need a label that looks different from the one provided by\n * this component\n */\n labelOutside: {\n type: Boolean,\n default: false\n },\n /**\n * The placeholder of the input. This defaults as the string that's\n * passed into the label prop. In order to remove the placeholder,\n * pass in an empty string.\n */\n placeholder: {\n type: String,\n default: void 0\n },\n /**\n * Controls whether to display the trailing button.\n */\n showTrailingButton: {\n type: Boolean,\n default: false\n },\n /**\n * Label of the trailing button\n *\n * Required when showTrailingButton is set\n */\n trailingButtonLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Toggles the success state of the component. Adds a checkmark icon.\n * this cannot be used together with canClear.\n */\n success: {\n type: Boolean,\n default: false\n },\n /**\n * Toggles the error state of the component. Adds an error icon.\n * this cannot be used together with canClear.\n */\n error: {\n type: Boolean,\n default: false\n },\n /**\n * Additional helper text message\n *\n * This will be displayed beneath the input field. In case the field is\n * also marked as having an error, the text will be displayed in red.\n */\n helperText: {\n type: String,\n default: \"\"\n },\n /**\n * Disable the input field\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Specifies whether the input should have a pill form.\n * By default, input has rounded corners.\n */\n pill: {\n type: Boolean,\n default: false\n },\n /**\n * Class to add to the input field.\n * Necessary to use NcInputField in the NcActionInput component.\n */\n inputClass: {\n type: [Object, String],\n default: \"\"\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"trailing-button-click\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\", true);\n return {\n model\n };\n },\n computed: {\n computedId() {\n return this.$attrs.id && this.$attrs.id !== \"\" ? this.$attrs.id : this.inputName;\n },\n inputName() {\n return \"input\" + GenRandomId();\n },\n hasLeadingIcon() {\n return this.$slots.default;\n },\n hasTrailingIcon() {\n return this.success;\n },\n hasPlaceholder() {\n return this.placeholder !== \"\" && this.placeholder !== void 0;\n },\n computedPlaceholder() {\n return this.hasPlaceholder ? this.placeholder : this.label;\n },\n isValidLabel() {\n const isValidLabel = this.label || this.labelOutside;\n if (!isValidLabel) {\n console.warn(\"You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\");\n }\n return isValidLabel;\n },\n ariaDescribedby() {\n const ariaDescribedby = [];\n if (this.helperText.length > 0) {\n ariaDescribedby.push(`${this.inputName}-helper-text`);\n }\n if (this.$attrs[\"aria-describedby\"]) {\n ariaDescribedby.push(this.$attrs[\"aria-describedby\"]);\n }\n return ariaDescribedby.join(\" \") || null;\n }\n },\n methods: {\n /**\n * Focus the input element\n *\n * @public\n */\n focus() {\n this.$refs.input.focus();\n },\n /**\n * Select all the text in the input\n *\n * @public\n */\n select() {\n this.$refs.input.select();\n },\n handleInput(event) {\n const newValue = this.type === \"number\" && typeof this.model === \"number\" ? parseFloat(event.target.value, 10) : event.target.value;\n this.model = newValue;\n },\n handleTrailingButtonClick(event) {\n this.$emit(\"trailing-button-click\", event);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"input-field\", class: {\n \"input-field--disabled\": _vm.disabled,\n \"input-field--label-outside\": _vm.labelOutside || !_vm.isValidLabel,\n \"input-field--leading-icon\": _vm.hasLeadingIcon,\n \"input-field--trailing-icon\": _vm.showTrailingButton || _vm.hasTrailingIcon,\n \"input-field--pill\": _vm.pill\n } }, [_c(\"div\", { staticClass: \"input-field__main-wrapper\" }, [_c(\"input\", _vm._g(_vm._b({ ref: \"input\", staticClass: \"input-field__input\", class: [\n _vm.inputClass,\n {\n \"input-field__input--success\": _vm.success,\n \"input-field__input--error\": _vm.error\n }\n ], attrs: { \"id\": _vm.computedId, \"type\": _vm.type, \"disabled\": _vm.disabled, \"placeholder\": _vm.computedPlaceholder, \"aria-describedby\": _vm.ariaDescribedby, \"aria-live\": \"polite\" }, domProps: { \"value\": _vm.model?.toString() }, on: { \"input\": _vm.handleInput } }, \"input\", _vm.$attrs, false), _vm.$listeners)), !_vm.labelOutside && _vm.isValidLabel ? _c(\"label\", { staticClass: \"input-field__label\", attrs: { \"for\": _vm.computedId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e(), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.hasLeadingIcon, expression: \"hasLeadingIcon\" }], staticClass: \"input-field__icon input-field__icon--leading\" }, [_vm._t(\"default\")], 2), _vm.showTrailingButton ? _c(\"NcButton\", { staticClass: \"input-field__trailing-button\", attrs: { \"type\": \"tertiary-no-background\", \"aria-label\": _vm.trailingButtonLabel, \"disabled\": _vm.disabled }, on: { \"click\": _vm.handleTrailingButtonClick }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"trailing-button-icon\")];\n }, proxy: true }], null, true) }) : _vm.success || _vm.error ? _c(\"div\", { staticClass: \"input-field__icon input-field__icon--trailing\" }, [_vm.success ? _c(\"Check\", { staticStyle: { \"color\": \"var(--color-success-text)\" }, attrs: { \"size\": 20 } }) : _vm.error ? _c(\"AlertCircle\", { staticStyle: { \"color\": \"var(--color-error-text)\" }, attrs: { \"size\": 20 } }) : _vm._e()], 1) : _vm._e()], 1), _vm.helperText.length > 0 ? _c(\"p\", { staticClass: \"input-field__helper-text-message\", class: {\n \"input-field__helper-text-message--error\": _vm.error,\n \"input-field__helper-text-message--success\": _vm.success\n }, attrs: { \"id\": `${_vm.inputName}-helper-text` } }, [_vm.success ? _c(\"Check\", { staticClass: \"input-field__helper-text-message__icon\", attrs: { \"size\": 18 } }) : _vm.error ? _c(\"AlertCircle\", { staticClass: \"input-field__helper-text-message__icon\", attrs: { \"size\": 18 } }) : _vm._e(), _vm._v(\" \" + _vm._s(_vm.helperText) + \" \")], 1) : _vm._e()]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"e4fac465\"\n);\nconst NcInputField = __component__.exports;\nexport {\n NcInputField as N\n};\n","import { N as NcInputField } from \"./NcInputField-ixTTHy3h.mjs\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport { A as ArrowRight } from \"./ArrowRight-CY2b9hgN.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { r as register, d as t47, e as t16, a as t } from \"./_l10n-C6OUA0Ge.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nconst _sfc_main$1 = {\n name: \"UndoVariantIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon undo-variant-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst Undo = __component__$1.exports;\nregister(t16, t47);\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props));\nconst _sfc_main = {\n name: \"NcTextField\",\n components: {\n NcInputField,\n Close,\n ArrowRight,\n Undo\n },\n // Allow forwarding all attributes\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {},\n // Reuse all the props from NcInputField for better typing and documentation\n ...NcInputField.props,\n /**\n * The `aria-label` to set on the trailing button\n * If no explicit value is set it will default to the one matching the `trailingButtonIcon`:\n * @default 'Clear text'|'Save changes'|'Undo changes'\n */\n trailingButtonLabel: {\n type: String,\n default: \"\"\n },\n // Custom props\n /**\n * Specifies which material design icon should be used for the trailing\n * button.\n * @type {'close'|'arrowRight'|'undo'}\n */\n trailingButtonIcon: {\n type: String,\n default: \"close\",\n validator: (value) => [\n \"close\",\n \"arrowRight\",\n \"undo\"\n ].includes(value)\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model\n };\n },\n computed: {\n propsAndAttrsToForward() {\n const predefinedLabels = {\n undo: t(\"Undo changes\"),\n close: t(\"Clear text\"),\n arrowRight: t(\"Save changes\")\n };\n return {\n // Proxy all the HTML attributes\n ...this.$attrs,\n // Proxy original NcInputField's props\n ...Object.fromEntries(\n Object.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key))\n ),\n // Adjust aria-label for predefined trailing buttons\n trailingButtonLabel: this.trailingButtonLabel || predefinedLabels[this.trailingButtonIcon]\n };\n }\n },\n methods: {\n /**\n * Focus the input element\n *\n * @public\n */\n focus() {\n this.$refs.inputField.focus();\n },\n /**\n * Select all the text in the input\n *\n * @public\n */\n select() {\n this.$refs.inputField.select();\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcInputField\", _vm._g(_vm._b({ ref: \"inputField\", scopedSlots: _vm._u([_vm.type !== \"search\" ? { key: \"trailing-button-icon\", fn: function() {\n return [_vm.trailingButtonIcon === \"close\" ? _c(\"Close\", { attrs: { \"size\": 20 } }) : _vm.trailingButtonIcon === \"arrowRight\" ? _c(\"ArrowRight\", { attrs: { \"size\": 20 } }) : _vm.trailingButtonIcon === \"undo\" ? _c(\"Undo\", { attrs: { \"size\": 20 } }) : _vm._e()];\n }, proxy: true } : null], null, true) }, \"NcInputField\", _vm.propsAndAttrsToForward, false), _vm.$listeners), [_vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcTextField = __component__.exports;\nexport {\n NcTextField as N\n};\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nimport { spawnDialog } from '@nextcloud/dialogs'\nimport '@nextcloud/dialogs/style.css'\n\nimport MnemonicPromptDialog from '../components/MnemonicPromptDialog.vue'\n\nexport async function promptUserForMnemonic(): Promise {\n\tconst promiseWithResolvers = Promise.withResolvers()\n\n\tspawnDialog(\n\t\tMnemonicPromptDialog,\n\t\tundefined,\n\t\t(mnemonic) => {\n\t\t\tif (mnemonic !== undefined) {\n\t\t\t\tpromiseWithResolvers.resolve(mnemonic as string)\n\t\t\t} else {\n\t\t\t\tpromiseWithResolvers.reject()\n\t\t\t}\n\t\t},\n\t)\n\n\treturn promiseWithResolvers.promise\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Metadata, MetadataInfo } from '../models'\nimport logger from './logger.ts'\nimport { base64ToBuffer } from './bufferUtils.ts'\nimport { decryptWithAES, decryptWithRSA, exportAESKey, loadAESPrivateKey, sha256Hash } from './crypto.ts'\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nexport async function decryptMetadataInfo(metadata: Metadata, metadataPrivateKey: CryptoKey): Promise {\n\tlogger.debug('Decrypting metadata info', { metadata })\n\n\tconst [encryptedMetadata, iv] = metadata.metadata.ciphertext.split('|')\n\n\tconst compressedMetadataInfo = await decryptWithAES(\n\t\tbase64ToBuffer(encryptedMetadata),\n\t\tmetadataPrivateKey,\n\t\t{ iv: base64ToBuffer(iv) },\n\t)\n\n\tconst metadataInfo = JSON.parse(await unzipBuffer(compressedMetadataInfo)) as MetadataInfo\n\n\tvalidateKeyChecksums(metadataInfo, metadata)\n\tawait validateMetadataKeyChecksum(metadataInfo, metadataPrivateKey)\n\n\treturn metadataInfo\n}\n\nfunction validateKeyChecksums(metadataInfo: MetadataInfo, metadata: Metadata): void {\n\tif (metadataInfo.keyChecksums?.length !== metadata.users?.length) {\n\t\tthrow new Error('Key checksums length does not match users length')\n\t}\n}\n\nasync function validateMetadataKeyChecksum(metadataInfo: MetadataInfo, metadataPrivateKey: CryptoKey): Promise {\n\tif (metadataInfo.keyChecksums === undefined) {\n\t\treturn\n\t}\n\n\tconst privateKeyBuffer = await exportAESKey(metadataPrivateKey)\n\tconst privateKeyHash = await sha256Hash(privateKeyBuffer)\n\n\tif (!metadataInfo.keyChecksums.includes(privateKeyHash)) {\n\t\tthrow new Error('Key checksum is not in keyChecksums')\n\t}\n}\n\nasync function unzipBuffer(buffer: ArrayBuffer): Promise {\n\tconst stream = new ReadableStream({\n\t\tstart(controller) {\n\t\t\tcontroller.enqueue(new Uint8Array(buffer))\n\t\t\tcontroller.close()\n\t\t},\n\t})\n\n\tconst decompressedStream = stream.pipeThrough(new DecompressionStream('gzip'))\n\treturn await new Response(decompressedStream).text()\n}\n\nexport async function getMetadataPrivateKey(metadata: Metadata, userId: string, privateKey: CryptoKey): Promise {\n\tlogger.debug('Getting metadata private key', { metadata, userId })\n\n\tconst userInfo = metadata.users?.find(user => user.userId === userId)\n\n\tif (!userInfo) {\n\t\tthrow new Error('User not found in metadata')\n\t}\n\n\tconst encryptedMetadataPrivateKey = base64ToBuffer(userInfo.encryptedMetadataKey)\n\tconst rawMetadataPrivateKey = await decryptWithRSA(encryptedMetadataPrivateKey, privateKey)\n\treturn await loadAESPrivateKey(new Uint8Array(rawMetadataPrivateKey))\n}\n","/* eslint-disable jsdoc/require-jsdoc */\n/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Metadata, RootMetadata } from '../models'\nimport { validateCertificateSignature, validateCMSSignature } from './crypto.ts'\nimport { base64ToBuffer, stringToBuffer } from './bufferUtils.ts'\n\nexport async function validateMetadataSignature(metadata: Metadata, signature: string, rootMetadata: RootMetadata): Promise {\n\tconst signedData = JSON.stringify(metadata, (key, value) => {\n\t\tif (key === 'filedrop') {\n\t\t\treturn undefined\n\t\t}\n\t\treturn value\n\t})\n\n\tconst verificationResult = await validateCMSSignature(\n\t\tstringToBuffer(btoa(signedData)),\n\t\tbase64ToBuffer(signature),\n\t\trootMetadata.users,\n\t)\n\n\tif (!verificationResult) {\n\t\tthrow new Error('Metadata signature verification failed')\n\t}\n\n\treturn verificationResult\n}\n\nexport async function validateUserCertificates(metadata: RootMetadata, serverPublicKey: CryptoKey): Promise {\n\tconst verifications = metadata.users.map(async ({ userId, certificate }) => {\n\t\tconst result = await validateCertificateSignature(certificate, serverPublicKey)\n\n\t\tif (!result) {\n\t\t\tthrow new Error(`Certificate verification failed for user ${userId}`)\n\t\t}\n\n\t\treturn result\n\t})\n\n\treturn await Promise.all(verifications)\n}\n","/* eslint-disable jsdoc/require-jsdoc */\n/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { dirname } from 'path'\nimport type { WebDAVClient } from 'webdav'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getClient, getDefaultPropfind } from '@nextcloud/files/dav'\n\nimport { isRootMetadata, type Metadata, type MetadataInfo, type RootMetadata } from '../models.ts'\nimport { decryptPrivateKey } from './privateKeyUtils'\nimport { getPrivateKey, getServerPublicKey } from './api.ts'\nimport { promptUserForMnemonic } from './mnemonicDialogs.ts'\nimport { decryptMetadataInfo, getMetadataPrivateKey } from './metadataUtils.ts'\nimport logger from './logger.ts'\nimport { validateMetadataSignature, validateUserCertificates } from './security.ts'\n\nconst davClient = getClient() as WebDAVClient\n\nexport const state = {\n\t_userPrivateKey: undefined as CryptoKey | undefined,\n\t_serverPublicKey: undefined as CryptoKey | undefined,\n\t_metadataCache: {} as Record,\n\n\tasync getUserPrivateKey(): Promise {\n\t\tthis._userPrivateKey ??= await decryptPrivateKey(await getPrivateKey(), await promptUserForMnemonic())\n\t\treturn this._userPrivateKey\n\t},\n\n\tasync getServerPublicKey(): Promise {\n\t\tthis._serverPublicKey ??= await getServerPublicKey()\n\t\treturn this._serverPublicKey\n\t},\n\n\tasync getMetadata(path: string): Promise {\n\t\tif (this._metadataCache[path]) {\n\t\t\tlogger.debug('Found metadata in cache', { path, state })\n\t\t\treturn this._metadataCache[path]\n\t\t}\n\n\t\t// The PROPFIND will be intercepted by the WebDAV proxy, and the metadata will be saved in the cache.\n\t\t// Hence, we can directly return the content of the cache.\n\t\tlogger.debug('Fetching PROPFIND for metadata', { path, state })\n\t\tawait davClient.stat(decodeURI(path).replace('remote.php/dav/', ''), { details: true, data: getDefaultPropfind() })\n\n\t\tif (this._metadataCache[path]) {\n\t\t\tlogger.debug('Found metadata in cache after PROPFIND', { path, state })\n\t\t\treturn this._metadataCache[path]\n\t\t}\n\n\t\tthrow new Error(`Could not find metadata for ${path}`)\n\t},\n\n\tasync setMetadata(path: string, rawMetadata: string, metadataSignature: string): Promise {\n\t\tconst metadata = JSON.parse(rawMetadata) as Metadata\n\n\t\tif (isRootMetadata(metadata)) {\n\t\t\tawait validateMetadataSignature(metadata, metadataSignature, metadata)\n\t\t\tawait validateUserCertificates(metadata, await this.getServerPublicKey())\n\t\t} else {\n\t\t\tawait validateMetadataSignature(metadata, metadataSignature, await this.getRootMetadata(dirname(path)))\n\t\t}\n\n\t\tthis._metadataCache[path] = metadata\n\t\tlogger.debug('Added metadata in cache', { path, state })\n\t},\n\n\tasync getMetadataInfo(path: string): Promise {\n\t\tconst metadata = await this.getMetadata(path)\n\t\tconst rootMetadata = await this.getRootMetadata(path)\n\n\t\tconst currentUser = getCurrentUser()\n\t\tif (currentUser === null) {\n\t\t\tthrow new Error('No user logged in')\n\t\t}\n\n\t\treturn decryptMetadataInfo(\n\t\t\tmetadata,\n\t\t\tawait getMetadataPrivateKey(rootMetadata, currentUser.uid, await state.getUserPrivateKey()),\n\t\t)\n\t},\n\n\tasync getRootMetadata(path: string): Promise {\n\t\tconst cachedRootMetadata = Object.entries(state._metadataCache)\n\t\t\t.filter(([metadataPath]) => path.startsWith(metadataPath))\n\t\t\t.map(([, metadata]) => metadata)\n\t\t\t.find(metadata => isRootMetadata(metadata))\n\n\t\tif (cachedRootMetadata) {\n\t\t\tlogger.debug('Found root metadata in cache', { path, state })\n\t\t\treturn cachedRootMetadata\n\t\t}\n\n\t\tlogger.debug('Looking for root metadata', { path, state })\n\t\twhile (path !== '/') {\n\t\t\tconst metadata = await state.getMetadata(path)\n\n\t\t\tif (isRootMetadata(metadata)) {\n\t\t\t\tlogger.debug('Fetched root metadata', { path, state })\n\t\t\t\treturn metadata\n\t\t\t}\n\n\t\t\tpath = dirname(path)\n\t\t}\n\n\t\tthrow new Error(`Found no root metadata for ${path}`)\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nimport { type DAVResult, parseStat, parseXML } from 'webdav'\nimport { XMLBuilder } from 'fast-xml-parser'\nimport { basename, dirname } from 'path'\n\nimport { state } from './state.ts'\nimport { isRootMetadata, type FileEncryptionInfo, type MetadataInfo } from '../models'\nimport logger from './logger.ts'\nimport { decryptWithAES, loadAESPrivateKey } from './crypto.ts'\nimport { base64ToBuffer } from './bufferUtils.ts'\n\nlet originalFetch: typeof window.fetch\n\nexport function setupWebDavDecryptionProxy() {\n\toriginalFetch = window.fetch\n\tlogger.debug('Setting up WebDAV decryption proxy')\n\n\twindow.fetch = async (input: RequestInfo | URL, config: RequestInit = {}): Promise => {\n\t\tlet request = new Request(input, config)\n\n\t\tif (!(request.url.includes('/remote.php/dav/files/') && (request.method === 'GET' || request.method === 'PROPFIND'))) {\n\t\t\treturn originalFetch(request)\n\t\t}\n\n\t\tlogger.debug(`Proxying ${request.method} ${request.url}`, { request })\n\n\t\tconst headers = new Headers(request.headers)\n\t\theaders.set('X-E2EE-SUPPORTED', 'true')\n\t\trequest = new Request(request, { headers })\n\n\t\tswitch (request.method) {\n\t\tcase 'PROPFIND':\n\t\t\treturn handlePropFind(request)\n\t\tcase 'GET':\n\t\tdefault:\n\t\t\treturn handleGet(request)\n\t\t}\n\t}\n}\n\nasync function handleGet(request: Request): Promise {\n\tconst path = new URL(request.url).pathname\n\tconst responsePromise = originalFetch(request)\n\n\ttry {\n\t\t// TODO: Optimize, this will make a propfind request for every GET request even when not encrypted.\n\t\tconst metadataInfo = await state.getMetadataInfo(dirname(path))\n\n\t\tconst fileInfo = metadataInfo.files[basename(request.url)]\n\t\tif (fileInfo === undefined) {\n\t\t\tlogger.debug('Could not find file in metadata', { path, metadataInfo })\n\t\t\tthrow new Error('Could not find file in metadata')\n\t\t}\n\n\t\treturn await decryptFile(await responsePromise, fileInfo)\n\t} catch (error) {\n\t\treturn await responsePromise\n\t}\n}\n\nasync function handlePropFind(request: Request) {\n\tlogger.debug('Fetching raw PROPFIND', { request })\n\tconst response = await originalFetch(request)\n\tconst path = new URL(request.url).pathname\n\tconst body = await response.text()\n\tconst xml = await parseXML(body)\n\tconst stat = parseStat(xml, path, true)\n\n\tif (stat.props?.['e2ee-is-encrypted'] !== 1) {\n\t\tlogger.debug('Node is not e2ee', { xml })\n\t\treturn new Response(body, response)\n\t}\n\n\tif (stat.type === 'directory') {\n\t\tconst rawMetadata = stat.props['e2ee-metadata'] as string|undefined\n\t\tconst metadataSignature = stat.props['e2ee-metadata-signature'] as string|undefined\n\t\tif (rawMetadata !== undefined && metadataSignature !== undefined) {\n\t\t\tawait state.setMetadata(\n\t\t\t\tpath,\n\t\t\t\trawMetadata,\n\t\t\t\tmetadataSignature,\n\t\t\t)\n\t\t}\n\n\t\tconst metadata = await state.getMetadata(path)\n\t\tconst metadataInfo = await state.getMetadataInfo(path)\n\n\t\tif (isRootMetadata(metadata)) {\n\t\t\treplacePlaceholdersInPropfind(xml, path, metadataInfo)\n\t\t} else {\n\t\t\tconst parentMetadataInfo = await state.getMetadataInfo(dirname(path))\n\t\t\treplacePlaceholdersInPropfind(xml, path, metadataInfo, parentMetadataInfo)\n\t\t}\n\t} else if (stat.type === 'file') {\n\t\tconst parentMetadataInfo = await state.getMetadataInfo(dirname(path))\n\n\t\tif (parentMetadataInfo === undefined) {\n\t\t\tlogger.debug('Cannot find metadata for parent folder', { path })\n\t\t\treturn new Response(body, response)\n\t\t}\n\n\t\treplacePlaceholdersInPropfind(xml, path, undefined, parentMetadataInfo)\n\t}\n\n\treturn new Response(new XMLBuilder().build(xml), response)\n}\n\nexport function replacePlaceholdersInPropfind(xml: DAVResult, path: string, decryptedMetadata?: MetadataInfo, decryptedParentMetadata?: MetadataInfo): void {\n\tlogger.debug('Updating PROPFIND info', { path, decryptedMetadata, decryptedParentMetadata, xml })\n\n\txml.multistatus.response.forEach((childNode) => {\n\t\tif (childNode.propstat === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\tconst relevantMetadataInfo = childNode.href === path ? decryptedParentMetadata : decryptedMetadata\n\n\t\tif (relevantMetadataInfo === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\tconst identifier = childNode.propstat.prop.displayname\n\t\tlet name = identifier\n\n\t\tif (relevantMetadataInfo.files[identifier]) {\n\t\t\tname = relevantMetadataInfo.files[identifier].filename\n\t\t\tchildNode.propstat.prop.getcontenttype = relevantMetadataInfo.files[identifier].mimetype\n\t\t} else if (relevantMetadataInfo.folders[identifier]) {\n\t\t\tname = relevantMetadataInfo.folders[identifier]\n\t\t\tchildNode.propstat.prop.getcontenttype = 'httpd/unix-directory'\n\t\t}\n\n\t\tchildNode.propstat.prop.displayname = name\n\t\t// TODO: Enable more feature by keeping permissions\n\t\tchildNode.propstat.prop.permissions = (childNode.propstat.prop.permissions as string).replace(/(R)|(D)|(N)|(V)|(W)|(CK)/g, '')\n\t})\n}\n\nexport async function decryptFile(response: Response, fileEncryptionInfo: FileEncryptionInfo): Promise {\n\tlogger.debug('Decrypting encrypted file', { response, fileEncryptionInfo })\n\tconst decryptedFileContent = await decryptWithAES(\n\t\tnew Uint8Array(await response.arrayBuffer()),\n\t\tawait loadAESPrivateKey(base64ToBuffer(fileEncryptionInfo.key)),\n\t\t{ iv: base64ToBuffer(fileEncryptionInfo.nonce) },\n\t)\n\n\tconst headers = new Headers(response.headers)\n\theaders.set('Content-Type', fileEncryptionInfo.mimetype)\n\n\treturn new Response(decryptedFileContent, { ...response, headers })\n}\n","export default \"\"","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport type { Node } from '@nextcloud/files'\nimport type { ShareAttribute } from './sharing.ts'\n\nimport { Permission } from '@nextcloud/files'\n\n/**\n * Check permissions on the node if it can be downloaded\n * @param node The node to check\n * @return True if downloadable, false otherwise\n */\nexport function isDownloadable(node: Node): boolean {\n\tif ((node.permissions & Permission.READ) === 0) {\n\t\treturn false\n\t}\n\n\t// If the mount type is a share, ensure it got download permissions.\n\tif (node.attributes['share-attributes']) {\n\t\tconst shareAttributes = JSON.parse(node.attributes['share-attributes'] || '[]') as Array\n\t\tconst downloadAttribute = shareAttributes.find(({ scope, key }: ShareAttribute) => scope === 'permissions' && key === 'download')\n\t\tif (downloadAttribute !== undefined) {\n\t\t\treturn downloadAttribute.value === true\n\t\t}\n\t}\n\n\treturn true\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nimport ArrowDownSvg from '@mdi/svg/svg/arrow-down.svg?raw'\n\nimport { t } from '@nextcloud/l10n'\nimport { FileAction, Node, FileType, DefaultType } from '@nextcloud/files'\n\nimport { isDownloadable } from './permissions.ts'\n\nasync function downloadNodes([file]: Node[]) {\n\t// Decryption happens in the proxy.\n\tconst response = await fetch(file.encodedSource)\n\tconst decryptedFileContent = await response.arrayBuffer()\n\tconst blob = new Blob([decryptedFileContent], { type: file.mime })\n\n\tconst link = document.createElement('a')\n\tlink.href = window.URL.createObjectURL(blob)\n\tlink.download = file.displayname\n\tlink.click()\n}\n\nexport default new FileAction({\n\tid: 'download_unencrypted',\n\tdefault: DefaultType.DEFAULT,\n\n\tdisplayName: () => t('files', 'Download unencrypted'),\n\ticonSvgInline: () => ArrowDownSvg,\n\n\tenabled(nodes: Node[]) {\n\t\tif (nodes.length !== 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tif (nodes.some(node => node.attributes['e2ee-is-encrypted'] !== 1)) {\n\t\t\treturn false\n\t\t}\n\n\t\t// We can only download dav ressource\n\t\tif (nodes.some(node => !node.isDavRessource)) {\n\t\t\treturn false\n\t\t}\n\n\t\t// We can only download files\n\t\tif (nodes.some(node => node.type !== FileType.File)) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn nodes.every(isDownloadable)\n\t},\n\n\tasync exec(node: Node) {\n\t\tdownloadNodes([node])\n\t\treturn null\n\t},\n\n\torder: 30,\n})\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { registerFileAction, getFileActions, Node, View } from '@nextcloud/files'\nimport { registerDavProperty } from '@nextcloud/files/dav'\n\nimport { setupWebDavDecryptionProxy } from './services/webDavProxy.ts'\nimport downloadUnencryptedAction from './services/downloadUnencryptedAction.ts'\nimport logger from './services/logger.ts'\n\nconst userConfig = loadState('end_to_end_encryption', 'userConfig', { e2eeInBrowserEnabled: false })\n\nif (userConfig.e2eeInBrowserEnabled) {\n\tsetupWebDavDecryptionProxy()\n\tregisterDavProperty('nc:e2ee-is-encrypted', { nc: 'http://nextcloud.org/ns' })\n\tregisterDavProperty('nc:e2ee-metadata', { nc: 'http://nextcloud.org/ns' })\n\tregisterDavProperty('nc:e2ee-metadata-signature', { nc: 'http://nextcloud.org/ns' })\n\tregisterFileAction(downloadUnencryptedAction)\n\tdisableFileAction('download')\n\tdisableFileAction('move-copy')\n}\n\nfunction disableFileAction(actionId: string) {\n\tlogger.debug(`Inhibiting ${actionId} actions for e2ee files`)\n\tconst actions = getFileActions()\n\n\tconst action = actions.find(action => action.id === actionId) as unknown as { _action: { enabled: (nodes: Node[], view: View) => boolean } }\n\tconst originalEnabled = action._action.enabled\n\n\taction._action.enabled = (nodes: Node[], view: View) => {\n\t\tif (nodes.some(node => node.attributes['e2ee-is-encrypted'] === 1)) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn originalEnabled(nodes, view)\n\t}\n}\n"],"names":["_defineProperty","obj","key","value","_classPrivateFieldInitSpec","privateMap","_checkPrivateRedeclaration","privateCollection","_classPrivateFieldGet","receiver","descriptor","_classExtractFieldDescriptor","_classApplyDescriptorGet","_classPrivateFieldSet","_classApplyDescriptorSet","action","toStringTag","_internals","_promise","CancelablePromiseInternal","_ref","executor","internals","defaultInternals","promise","resolve","reject","onCancel","onfulfilled","onrejected","makeCancelable","createCallback","onfinally","runWhenCanceled","callback","callbacks","err","CancelablePromise","iterable","makeAllCancelable","cancelable","reason","isCancelablePromise","onResult","arg","result","resolvable","t","e","o","n","i","r","s","a","u","c","l","global","d","m","g","y","v","h","b","w","p","f","x","N","P","A","O","E","T","j","S","$","C","I","k","process","en","F","oe","ne","re","Xt","ie","R","L","_","M","U","D","B","W","V","z","G","q","H","X","Z","Y","K","et","J","Q","tt","nt","rt","ot","it","st","at","ut","ct","lt","ht","pt","ft","dt","gt","mt","yt","vt","__privateAdd","_lt_instances","__publicField","#t","#e","#n","#r","#o","#i","#s","#a","#u","#c","#l","__privateSet","__privateGet","_a","_b","_c","#p","__privateMethod","#h","#f","#d","_lt_static","_lt","bt","Gt","wt","xt","Nt","Pt","At","Ot","Et","Tt","jt","St","$t","Ct","It","kt","Rt","Ut","Lt","Ft","_t","Mt","Dt","define_process_env_default","Bt","Wt","Vt","zt","qt","Ht","Zt","Yt","Kt","Jt","Qt","te","ee","se","ae","ue","ce","le","fe","me","de","ge","pe","ye","__spreadProps","__spreadValues","he","ve","be","we","xe","Ne","Pe","Ae","Oe","Ee","Te","je","Ie","Se","$e","Ce","ke","Re","Le","_e","Me","Ue","Fe","De","Be","We","Ve","ze","Ge","qe","He","Xe","Ze","Je","Ye","Ke","Qe","tn","an","un","cn","ln","isPublicShare","loadState","getSharingToken","logger","getLoggerBuilder","Permission","Permission2","FileType","FileType2","defaultDavProperties","defaultDavNamespaces","registerDavProperty","prop","namespace","namespaces","search","ns","getDavProperties","getDavNameSpaces","getDefaultPropfind","getRootPath","getCurrentUser","getRemoteURL","url","generateRemoteUrl","defaultRemoteURL","getClient","remoteURL","headers","client","createClient","setHeaders","token","onRequestTokenUpdate","getRequestToken","getPatcher","options","headers2","DefaultType","DefaultType2","FileAction","registerFileAction","getFileActions","util$3","exports","nameStartChar","nameChar","nameRegexp","regexName","getAllMatches","string","regex","matches","match","allmatches","len","index","isName","target","a2","arrayMode","keys","i2","debug$1","args","debug_1","SEMVER_SPEC_VERSION","MAX_LENGTH$1","MAX_SAFE_INTEGER$1","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","constants","re$1","module","MAX_SAFE_COMPONENT_LENGTH2","MAX_SAFE_BUILD_LENGTH2","MAX_LENGTH2","debug2","re2","safeRe","src","t3","LETTERDASHNUMBER","safeRegexReplacements","makeSafeRegex","max","createToken","name","isGlobal","safe","util","require$$0","defaultOptions","validator","xmlData","tags","tagFound","reachedRoot","readPI","tagStartPos","readCommentAndCDATA","closingTag","tagName","validateTagName","msg","getErrorObject","getLineNumberForPosition","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","otg","openPos","afterAmp","validateAmpersand","isWhiteSpace","char","start","tagname","angleBracketsCount","doubleQuote","singleQuote","startChar","tagClosed","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","validateNumberAmpersand","count","code","message","lineNumber","lines","val","jPath","attrs","buildOptions","OptionsBuilder","XmlNode","node","xmlNode","readDocType","entities","hasBody","comment","exp","isEntity","entityName","readEntityExp","validateEntityName","isElement","isAttlist","isNotation","isComment","DocTypeReader","hexRegex","numRegex","consider","toNumber","str","trimmedStr","sign","leadingZeros","numTrimmedByZeros","trimZeros","eNotation","num","numStr","strnum","getIgnoreAttributesFn","ignoreAttributes","pattern","require$$1","require$$2","require$$3","require$$4","OrderedObjParser$1","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","replaceEntitiesValue","readStopNodeData","saveTextToParentTag","addChild","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","newval","parseValue","prefix","attrsRegx","oldVal","aName","newVal","attrCollection","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","lastTagName","propIndex","tagData","readTagExp","childNode","endIndex","tagExp","rawTagName","attrExpPresent","lastTag","tagContent","entity","stopNodes","currentTagName","allNodesExp","stopNodePath","stopNodeExp","tagExpWithClosingIndex","closingChar","attrBoundary","ch","errMsg","closingIndex","removeNSPrefix","separatorIndex","startIndex","openTagCount","shouldParse","OrderedObjParser_1","OrderedObjParser","prettify","compress","arr","text","compressedObj","tagObj","property","propName","newJpath","isLeaf","isLeafTag","assignAttributes","attrMap","jpath","atrrName","textNodeName","propCount","node2json","XMLParser$1","validationOption","orderedObjParser","orderedResult","XMLParser_1","XMLParser","EOL","toXml","jArray","indentation","arrToStr","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","attr","attrVal","textValue","orderedJs2Xml","buildFromOrderedJs","Builder","isAttribute","processTextOrObjNode","indentate","jObj","level","ajPath","arrLen","listTagVal","listTagAttr","item","Ks","object","tagEndExp","piClosingChar","closeTag","json2xml","XMLBuilder","fxp","isRootMetadata","metadata","getLogger","user","ByteStream","parameters","array","stringLength","length","hexString","hexMap","temp","end","size","buffer","view","stream","initialSize","streamViewLength","subarrayView","start_","length_","backward_","backward","patternLength","patternArray","equal","equalStart","patterns","position","valid","patternFound","currentLength","firstIn","firstNotIn","leftPattern","rightPattern","currentPositionLeft","leftPatterns","rightPatterns","inputLeftPatterns","inputRightPatterns","searchPattern","replacePattern","findAllResult","output","element","patternDifference","changedBuffer","changedView","currentPosition","pow2_24","SeqStream","gap","number","changeLength","block","negative","isBytes","abytes","lengths","aexists","instance","checkFinished","aoutput","out","min","createView","rotr","word","shift","rotl","utf8ToBytes","toBytes","data","Hash","wrapConstructor","hashCons","hashC","tmp","setBigUint64","byteOffset","isLE","_32n","_u32_max","wh","wl","Chi","Maj","HashMD","blockLen","outputLen","padOffset","pos","take","dataView","oview","outLen","state","res","to","finished","destroyed","SHA1_IV","SHA1_W","offset","sha1","SHA1","SHA256_K","SHA256_IV","SHA256_W","W15","W2","s0","s1","sigma1","T1","T2","sha256","SHA256","U32_MASK64","fromBig","split","lst","Ah","Al","toBig","shrSH","_l","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","rotr32H","_h","rotr32L","rotlSH","rotlSL","rotlBH","rotlBL","add","Bh","Bl","add3L","Cl","add3H","low","Ch","add4L","Dl","add4H","Dh","add5L","El","add5H","Eh","u64","SHA512_Kh","SHA512_Kl","SHA512_W_H","SHA512_W_L","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","s0l","W2h","W2l","s1h","s1l","SUMl","SUMh","sigma1h","sigma1l","CHIh","CHIl","T1ll","T1h","T1l","sigma0h","sigma0l","MAJh","MAJl","All","SHA512","sha512","sha384","SHA384","EMPTY_BUFFER","EMPTY_STRING","ArgumentError","type","types","typeNames","ParameterError","params","fields","field","AsnError","asn1","asn","PkiObject","raw","asn1js.fromBER","memberName","encoding","schema","pvtsutils.Convert","stringPrep","inputString","isSpace","cutResult","TYPE$5","VALUE$6","AttributeTypeAndValue","pvutils.getParametersValue","names","asn1js.Sequence","asn1js.ObjectIdentifier","asn1js.Any","pvutils.clearProps","asn1js.compareSchema","_object","compareTo","stringBlockNames","asn1js.Utf8String","asn1js.BmpString","asn1js.UniversalString","asn1js.NumericString","asn1js.PrintableString","asn1js.TeletexString","asn1js.VideotexString","asn1js.IA5String","asn1js.GraphicString","asn1js.VisibleString","asn1js.GeneralString","asn1js.CharacterString","pvtsutils.BufferSourceConverter","isStringPair","thisName","value1","value2","TYPE_AND_VALUES","VALUE_BEFORE_DECODE","RDN","RelativeDistinguishedNames","memberValue","asn1js.Repeated","asn1js.Set","typeAndValue","pvutils.isEqualBuffer","TYPE$4","VALUE$5","builtInStandardAttributes","optional","asn1js.Constructed","asn1js.Choice","asn1js.Primitive","builtInDomainDefinedAttributes","extensionAttributes","GeneralName","valueBER","asnValue","asn1js.OctetString","ACCESS_METHOD","ACCESS_LOCATION","CLEAR_PROPS$1v","AccessDescription","SECONDS","MILLIS","MICROS","Accuracy","asn1js.Integer","intMillis","intMicros","outputArray","ALGORITHM_ID","ALGORITHM_PARAMS","ALGORITHM$2","PARAMS","CLEAR_PROPS$1u","AlgorithmIdentifier","algorithmIdentifier","ALT_NAMES","CLEAR_PROPS$1t","AltName","TYPE$3","VALUES$1","CLEAR_PROPS$1s","Attribute","NOT_BEFORE_TIME","NOT_AFTER_TIME","CLEAR_PROPS$1r","AttCertValidityPeriod","asn1js.GeneralizedTime","NAMES","GENERAL_NAMES","GeneralNames","id_SubjectDirectoryAttributes","id_SubjectKeyIdentifier","id_KeyUsage","id_PrivateKeyUsagePeriod","id_SubjectAltName","id_IssuerAltName","id_BasicConstraints","id_CRLNumber","id_BaseCRLNumber","id_CRLReason","id_InvalidityDate","id_IssuingDistributionPoint","id_CertificateIssuer","id_NameConstraints","id_CRLDistributionPoints","id_FreshestCRL","id_CertificatePolicies","id_AnyPolicy","id_MicrosoftAppPolicies","id_PolicyMappings","id_AuthorityKeyIdentifier","id_PolicyConstraints","id_ExtKeyUsage","id_InhibitAnyPolicy","id_AuthorityInfoAccess","id_SubjectInfoAccess","id_SignedCertificateTimestampList","id_MicrosoftCertTemplateV2","id_MicrosoftCaVersion","id_QCStatements","id_ContentType_Data","id_ContentType_SignedData","id_ContentType_EnvelopedData","id_ContentType_EncryptedData","id_eContentType_TSTInfo","id_CertBag_X509Certificate","id_CertBag_SDSICertificate","id_CertBag_AttributeCertificate","id_CRLBag_X509CRL","id_pkix","id_ad","id_PKIX_OCSP_Basic","KEY_IDENTIFIER$1","AUTHORITY_CERT_ISSUER","AUTHORITY_CERT_SERIAL_NUMBER","CLEAR_PROPS$1q","AuthorityKeyIdentifier","PATH_LENGTH_CONSTRAINT","CA","BasicConstraints","asn1js.Boolean","CERTIFICATE_INDEX","KEY_INDEX","CAVersion","valueView","tempValue","keyIndexBuffer","keyIndexView8","keyIndexView16","certificateIndexBuffer","certificateIndexView8","certificateIndexView16","certificateIndexView","keyIndexView","pvutils.utilConcatBuf","POLICY_QUALIFIER_ID","QUALIFIER","CLEAR_PROPS$1p","PolicyQualifierInfo","POLICY_IDENTIFIER","POLICY_QUALIFIERS","CLEAR_PROPS$1o","PolicyInformation","CERTIFICATE_POLICIES","CLEAR_PROPS$1n","CertificatePolicies","TEMPLATE_ID","TEMPLATE_MAJOR_VERSION","TEMPLATE_MINOR_VERSION","CLEAR_PROPS$1m","CertificateTemplate","DISTRIBUTION_POINT$1","DISTRIBUTION_POINT_NAMES$1","REASONS","CRL_ISSUER","CRL_ISSUER_NAMES","CLEAR_PROPS$1l","DistributionPoint","asn1js.BitString","internalValue","DISTRIBUTION_POINTS","CLEAR_PROPS$1k","CRLDistributionPoints","KEY_PURPOSES","CLEAR_PROPS$1j","ExtKeyUsage","ACCESS_DESCRIPTIONS","InfoAccess","DISTRIBUTION_POINT","DISTRIBUTION_POINT_NAMES","ONLY_CONTAINS_USER_CERTS","ONLY_CONTAINS_CA_CERTS","ONLY_SOME_REASON","INDIRECT_CRL","ONLY_CONTAINS_ATTRIBUTE_CERTS","CLEAR_PROPS$1i","IssuingDistributionPoint","BASE","MINIMUM","MAXIMUM","CLEAR_PROPS$1h","GeneralSubtree","valueMinimum","valueMaximum","PERMITTED_SUBTREES","EXCLUDED_SUBTREES","CLEAR_PROPS$1g","NameConstraints","REQUIRE_EXPLICIT_POLICY","INHIBIT_POLICY_MAPPING","CLEAR_PROPS$1f","PolicyConstraints","field1","ber1","int1","field2","ber2","int2","ISSUER_DOMAIN_POLICY","SUBJECT_DOMAIN_POLICY","CLEAR_PROPS$1e","PolicyMapping","MAPPINGS","CLEAR_PROPS$1d","PolicyMappings","NOT_BEFORE$1","NOT_AFTER$1","CLEAR_PROPS$1c","PrivateKeyUsagePeriod","localNotBefore","localNotAfter","ID","TYPE$2","VALUES","QC_STATEMENT_CLEAR_PROPS","QC_STATEMENTS_CLEAR_PROPS","QCStatement","asn1js.Null","QCStatements","ECNamedCurves","id","nameOrId","NAMED_CURVE$1","ECPublicKey","asn1js.RawData","schema1","BufferSourceConverter","namedCurve","coordinateLength","pvutils.toBase64","pvutils.arrayBufferToString","json","xConvertBuffer","pvutils.stringToArrayBuffer","pvutils.fromBase64","convertBufferView","yConvertBuffer","MODULUS$1","PUBLIC_EXPONENT$1","CLEAR_PROPS$1b","RSAPublicKey","pvutils.nearestPowerOf2","ALGORITHM$1","SUBJECT_PUBLIC_KEY","CLEAR_PROPS$1a","PublicKeyInfo","publicKeyASN1","parsedKey","jwk","publicKeyJWK","publicKey","crypto","getCrypto","exportedKey","VERSION$l","PRIVATE_KEY$1","NAMED_CURVE","PUBLIC_KEY$1","CLEAR_PROPS$19","ECPrivateKey","publicKeyData","curve","privateKeyJSON","publicKeyJSON","convertBuffer","PRIME","EXPONENT","COEFFICIENT$1","CLEAR_PROPS$18","OtherPrimeInfo","VERSION$k","MODULUS","PUBLIC_EXPONENT","PRIVATE_EXPONENT","PRIME1","PRIME2","EXPONENT1","EXPONENT2","COEFFICIENT","OTHER_PRIME_INFOS","CLEAR_PROPS$17","RSAPrivateKey","VERSION$j","PRIVATE_KEY_ALGORITHM","PRIVATE_KEY","ATTRIBUTES$5","PARSED_KEY","CLEAR_PROPS$16","PrivateKeyInfo","privateKeyASN1","CONTENT_TYPE$1","CONTENT_ENCRYPTION_ALGORITHM","ENCRYPTED_CONTENT","CLEAR_PROPS$15","PIECE_SIZE","EncryptedContentInfo","constrString","valueHex","pieceView","_array","_view","sequenceLengthBlock","encryptedValue","HASH_ALGORITHM$4","MASK_GEN_ALGORITHM$1","SALT_LENGTH","TRAILER_FIELD","CLEAR_PROPS$14","RSASSAPSSParams","SALT","ITERATION_COUNT","KEY_LENGTH","PRF","CLEAR_PROPS$13","PBKDF2Params","KEY_DERIVATION_FUNC","ENCRYPTION_SCHEME","CLEAR_PROPS$12","PBES2Params","AbstractCryptoEngine","makePKCS12B2Key","hashAlgorithm","keyLength","password","salt","iterationCount","md","originalPassword","decodedPassword","byte","passwordTransformed","passwordView","saltView","iRound","chunk","prepareAlgorithm","CryptoEngine","format","keyData","algorithm","extractable","keyUsages","_d","_f","alg","publicKeyInfo","privateKeyInfo","inputFormat","outputFormat","oid","safety","algorithmName","operation","signatureAlgorithm","contentEncryptionOID","pbkdf2OID","hmacOID","ivBuffer","ivView","saltBuffer","contentView","pbkdf2Params","pbkdfKey","derivedKey","encryptedData","pbes2Parameters","contentEncryptionAlgorithm","hmacHashAlgorithm","dataBuffer","hmacAlgorithm","pkcsKey","hmacKey","privateKey","paramsObject","hashAlgorithmOID","pssParameters","signature","createCMSECDSASignature","shaAlgorithm","algorithmId","algorithmObject","publicKeyAlgorithm","publicKeyAlgorithmParams","curveObject","publicKeyInfoBuffer","algorithmParamsChecked","signatureValue","createECDSASignatureFromCMS","hashAlgo","engine","isCryptoEngine","setEngine","cryptoArg","subtleArg","getEngine","_engine","signatureBuffer","rBuffer","rInteger","sBuffer","sInteger","cmsSignature","pointSize","rValueView","sValueView","kdfWithCounter","hashFunction","zBuffer","Counter","SharedInfo","counterBuffer","counterView","combinedBuffer","kdf","Zbuffer","keydatalen","hashLength","maxCounter","quotient","incomingResult","currentCounter","found","newBuffer","newView","combinedView","VERSION$i","LOG_ID","EXTENSIONS$6","TIMESTAMP","HASH_ALGORITHM$3","SIGNATURE_ALGORITHM$8","SIGNATURE$7","NONE","MD5","SHA224","ANONYMOUS","RSA","DSA","ECDSA","SignedCertificateTimestamp","seqStream","bs.SeqStream","bs.ByteStream","blockLength","pvutils.utilFromBase","extensionsLength","signatureLength","signatureData","timeBuffer","timeView","baseArray","pvutils.utilToBase","_hashAlgorithm","_signatureAlgorithm","_signature","pvutils.bufferToHexCodes","logs","dataType","logId","publicKeyBase64","log","pki","TIMESTAMPS","SignedCertificateTimestampList","overallLength","timestampsData","timestamp","timestampStream","ATTRIBUTES$4","CLEAR_PROPS$11","SubjectDirectoryAttributes","ExtensionValueFactory","EXTN_ID","CRITICAL","EXTN_VALUE","PARSED_VALUE$5","CLEAR_PROPS$10","Extension","parsedValue","EXTENSIONS$5","CLEAR_PROPS$$","Extensions","ISSUER$5","SERIAL_NUMBER$6","ISSUER_UID","CLEAR_PROPS$_","IssuerSerial","VERSION$h","BASE_CERTIFICATE_ID$2","SUBJECT_NAME","ISSUER$4","SIGNATURE$6","SERIAL_NUMBER$5","ATTR_CERT_VALIDITY_PERIOD$1","ATTRIBUTES$3","ISSUER_UNIQUE_ID$2","EXTENSIONS$4","CLEAR_PROPS$Z","AttributeCertificateInfoV1","ACINFO$1","SIGNATURE_ALGORITHM$7","SIGNATURE_VALUE$4","CLEAR_PROPS$Y","AttributeCertificateV1","DIGESTED_OBJECT_TYPE","OTHER_OBJECT_TYPE_ID","DIGEST_ALGORITHM$2","OBJECT_DIGEST","CLEAR_PROPS$X","ObjectDigestInfo","asn1js.Enumerated","ISSUER_NAME","BASE_CERTIFICATE_ID$1","OBJECT_DIGEST_INFO$1","CLEAR_PROPS$W","V2Form","BASE_CERTIFICATE_ID","ENTITY_NAME","OBJECT_DIGEST_INFO","CLEAR_PROPS$V","Holder","VERSION$g","HOLDER","ISSUER$3","SIGNATURE$5","SERIAL_NUMBER$4","ATTR_CERT_VALIDITY_PERIOD","ATTRIBUTES$2","ISSUER_UNIQUE_ID$1","EXTENSIONS$3","CLEAR_PROPS$U","AttributeCertificateInfoV2","ACINFO","SIGNATURE_ALGORITHM$6","SIGNATURE_VALUE$3","CLEAR_PROPS$T","AttributeCertificateV2","CONTENT_TYPE","CONTENT","CLEAR_PROPS$S","ContentInfo","TYPE$1","VALUE$4","UTC_TIME_NAME","GENERAL_TIME_NAME","CLEAR_PROPS$R","TimeType","Time","asn1js.UTCTime","TBS$4","VERSION$f","SERIAL_NUMBER$3","SIGNATURE$4","ISSUER$2","NOT_BEFORE","NOT_AFTER","SUBJECT$1","SUBJECT_PUBLIC_KEY_INFO","ISSUER_UNIQUE_ID","SUBJECT_UNIQUE_ID","EXTENSIONS$2","SIGNATURE_ALGORITHM$5","SIGNATURE_VALUE$2","TBS_CERTIFICATE","TBS_CERTIFICATE_VERSION","TBS_CERTIFICATE_SERIAL_NUMBER","TBS_CERTIFICATE_SIGNATURE","TBS_CERTIFICATE_ISSUER","TBS_CERTIFICATE_NOT_BEFORE","TBS_CERTIFICATE_NOT_AFTER","TBS_CERTIFICATE_SUBJECT","TBS_CERTIFICATE_SUBJECT_PUBLIC_KEY","TBS_CERTIFICATE_ISSUER_UNIQUE_ID","TBS_CERTIFICATE_SUBJECT_UNIQUE_ID","TBS_CERTIFICATE_EXTENSIONS","CLEAR_PROPS$Q","tbsCertificate","Certificate","encodeFlag","tbsSchema","signatureParameters","issuerCertificate","subjectPublicKeyInfo","checkCA","cert","signerCert","isCA","extension","CERT_ID$1","CERT_VALUE","PARSED_VALUE$4","CLEAR_PROPS$P","CertBag","certValueHex","USER_CERTIFICATE","REVOCATION_DATE","CRL_ENTRY_EXTENSIONS","CLEAR_PROPS$O","RevokedCertificate","TBS$3","VERSION$e","SIGNATURE$3","ISSUER$1","THIS_UPDATE$1","NEXT_UPDATE$1","REVOKED_CERTIFICATES","CRL_EXTENSIONS","SIGNATURE_ALGORITHM$4","SIGNATURE_VALUE$1","TBS_CERT_LIST","TBS_CERT_LIST_VERSION","TBS_CERT_LIST_SIGNATURE","TBS_CERT_LIST_ISSUER","TBS_CERT_LIST_THIS_UPDATE","TBS_CERT_LIST_NEXT_UPDATE","TBS_CERT_LIST_REVOKED_CERTIFICATES","TBS_CERT_LIST_EXTENSIONS","CLEAR_PROPS$N","tbsCertList","WELL_KNOWN_EXTENSIONS","CertificateRevocationList","certificate","revokedCertificate","CRL_ID","CRL_VALUE","PARSED_VALUE$3","CLEAR_PROPS$M","CRLBag","VERSION$d","ENCRYPTED_CONTENT_INFO$1","UNPROTECTED_ATTRS$1","CLEAR_PROPS$L","EncryptedData","encryptParams","decryptParams","ENCRYPTION_ALGORITHM","ENCRYPTED_DATA","PARSED_VALUE$2","CLEAR_PROPS$K","PKCS8ShroudedKeyBag","decryptedData","cmsEncrypted","SECRET_TYPE_ID","SECRET_VALUE","CLEAR_PROPS$J","SecretBag","SafeBagValueFactory","SafeContents","BAG_ID","BAG_VALUE","BAG_ATTRIBUTES","CLEAR_PROPS$I","SafeBag","bagType","SAFE_BUGS","OTHER_CERT_FORMAT","OTHER_CERT","CLEAR_PROPS$H","OtherCertificateFormat","CERTIFICATES$1","CLEAR_PROPS$G","CertificateSet","initialTagNumber","elementSequence","OTHER_REV_INFO_FORMAT","OTHER_REV_INFO","CLEAR_PROPS$F","OtherRevocationInfoFormat","CRLS$3","OTHER_REVOCATION_INFOS","CLEAR_PROPS$E","RevocationInfoChoices","CERTS$3","CRLS$2","CLEAR_PROPS$D","OriginatorInfo","sequenceValue","ISSUER","SERIAL_NUMBER$2","CLEAR_PROPS$C","IssuerAndSerialNumber","VARIANT$3","VALUE$3","CLEAR_PROPS$B","RecipientIdentifier","VERSION$c","RID$1","KEY_ENCRYPTION_ALGORITHM$3","ENCRYPTED_KEY$3","RECIPIENT_CERTIFICATE$1","CLEAR_PROPS$A","KeyTransRecipientInfo","ALGORITHM","PUBLIC_KEY","CLEAR_PROPS$z","OriginatorPublicKey","VARIANT$2","VALUE$2","CLEAR_PROPS$y","OriginatorIdentifierOrKey","_schema","KEY_ATTR_ID","KEY_ATTR","CLEAR_PROPS$x","OtherKeyAttribute","SUBJECT_KEY_IDENTIFIER","DATE$1","OTHER$1","CLEAR_PROPS$w","RecipientKeyIdentifier","VARIANT$1","VALUE$1","CLEAR_PROPS$v","KeyAgreeRecipientIdentifier","RID","ENCRYPTED_KEY$2","CLEAR_PROPS$u","RecipientEncryptedKey","ENCRYPTED_KEYS","RECIPIENT_ENCRYPTED_KEYS","CLEAR_PROPS$t","RecipientEncryptedKeys","VERSION$b","ORIGINATOR","UKM","KEY_ENCRYPTION_ALGORITHM$2","RECIPIENT_ENCRYPTED_KEY","RECIPIENT_CERTIFICATE","RECIPIENT_PUBLIC_KEY","CLEAR_PROPS$s","KeyAgreeRecipientInfo","KEY_IDENTIFIER","DATE","OTHER","CLEAR_PROPS$r","KEKIdentifier","VERSION$a","KEK_ID","KEY_ENCRYPTION_ALGORITHM$1","ENCRYPTED_KEY$1","PER_DEFINED_KEK","CLEAR_PROPS$q","KEKRecipientInfo","VERSION$9","KEY_DERIVATION_ALGORITHM","KEY_ENCRYPTION_ALGORITHM","ENCRYPTED_KEY","PASSWORD","CLEAR_PROPS$p","PasswordRecipientinfo","ORI_TYPE","ORI_VALUE","CLEAR_PROPS$o","OtherRecipientInfo","VARIANT","VALUE","CLEAR_PROPS$n","RecipientInfo","blockSequence","HASH_ALGORITHM$2","MASK_GEN_ALGORITHM","P_SOURCE_ALGORITHM","CLEAR_PROPS$m","RSAESOAEPParams","KEY_INFO","ENTITY_U_INFO","SUPP_PUB_INFO","CLEAR_PROPS$l","ECCCMSSharedInfo","VERSION$8","ORIGINATOR_INFO","RECIPIENT_INFOS","ENCRYPTED_CONTENT_INFO","UNPROTECTED_ATTRS","CLEAR_PROPS$k","defaultEncryptionParams","curveLengthByName","EnvelopedData","variant","encryptionParameters","algorithmParams","hashOID","keyInfo","recipientIdentifier","preDefinedData","keyIdentifierBuffer","keyIdentifierView","kekOID","keyId","extraRecipientInfoParams","encryptedKey","aesKWoid","aesKW","ecdhOID","ukmBuffer","ukmView","recipientInfoParams","contentToEncrypt","sessionKey","encryptedContent","exportedSessionKey","SubKeyAgreeRecipientInfo","recipientInfo","recipientCurve","recipientPublicKey","recipientCurveLength","ecdhKeys","exportedECDHPublicKey","derivedBits","aesKWAlgorithm","kwAlgorithm","kwLength","kwLengthBuffer","kwLengthView","encodedInfo","ecdhAlgorithm","derivedKeyRaw","awsKW","wrappedKey","originator","SubKeyTransRecipientInfo","algorithmParameters","rsaOAEPParams","SubKEKRecipientInfo","kekAlgorithm","kekKey","SubPasswordRecipientinfo","derivationKey","iterations","recipientIndex","decryptionParameters","curveOID","ecdhPrivateKey","keyCrypto","ecdhPublicKey","sharedSecret","applyKDF","includeAlgorithmParams","keyInfoAlgorithm","kdfResult","importAesKwKey","aesKwKey","unwrapSessionKey","importedKey","pbkdf2Key","unwrappedKey","SAFE_CONTENTS","PARSED_VALUE$1","CONTENT_INFOS","AuthenticatedSafe","content","safeContent","errorTarget","authSafeContent","cmsEnveloped","envelopedData","recipientCertificate","recipientKey","decrypted","contentBuffer","currentParameters","encryptionAlgorithm","HASH_ALGORITHM$1","ISSUER_NAME_HASH","ISSUER_KEY_HASH","SERIAL_NUMBER$1","CLEAR_PROPS$j","CertID","certID","certificateID","hashIssuerName","issuerKeyBuffer","hashIssuerKey","CERT_ID","CERT_STATUS","THIS_UPDATE","NEXT_UPDATE","SINGLE_EXTENSIONS","CLEAR_PROPS$i","SingleResponse","TBS$2","VERSION$7","RESPONDER_ID","PRODUCED_AT","RESPONSES","RESPONSE_EXTENSIONS","RESPONSE_DATA","RESPONSE_DATA_VERSION","RESPONSE_DATA_RESPONDER_ID","RESPONSE_DATA_PRODUCED_AT","RESPONSE_DATA_RESPONSES","RESPONSE_DATA_RESPONSE_EXTENSIONS","CLEAR_PROPS$h","ResponseData","TRUSTED_CERTS","CERTS$2","CRLS$1","OCSPS$1","CHECK_DATE","FIND_ORIGIN","FIND_ISSUER","ChainValidationCode","ChainValidationError","isTrusted","trustedList","CertificateChainValidationEngine","validationEngine","localCert","trustedCert","keyIdentifier","authorityCertIssuer","authorityCertSerialNumber","checkCertificate","possibleIssuer","extensionFound","authorityCertSerialNumberEqual","intermediateCert","passedWhenNotRevValues","localCerts","buildPath","checkUnique","unique","findIssuerResult","buildPathResult","copy","findCRL","issuerCertificates","crls","crlsAndCertificates","crl","findOCSP","checkForCA","needToCheckCRL","mustBeCA","keyUsagePresent","cRLSign","basicCheck","path","checkDate","ocspResult","crlResult","leafCert","certificatePath","shortestLength","shortestIndex","compareDNSName","constraint","namePrepared","constraintPrepared","nameSplitted","constraintSplitted","nameLen","constrLen","compareRFC822Name","cs","compareUniformResourceIdentifier","compareIPAddress","nameView","constraintView","compareDirectoryName","nameStart","localResult","initialPolicySet","initialExplicitPolicy","initialPolicyMappingInhibit","initialInhibitPolicy","initialPermittedSubtreesSet","initialExcludedSubtreesSet","initialRequiredNameForms","explicitPolicyIndicator","policyMappingInhibitIndicator","inhibitAnyPolicyIndicator","pendingConstraints","explicitPolicyPending","policyMappingInhibitPending","inhibitAnyPolicyPending","permittedSubtrees","excludedSubtrees","requiredNameForms","pathDepth","allPolicies","policiesAndCerts","anyPolicyArray","ii","policyMappings","certPolicies","explicitPolicyStart","policyIndex","policyId","certArray","searchAnyPolicy","issuerDomainPolicyIndex","subjectDomainPolicyIndex","authConstrPolicies","anyPolicyFound","userConstrPolicies","policyResult","subjectAltNames","certPermittedSubtrees","certExcludedSubtrees","formFound","constrGroups","groupPermitted","valueExists","group","excluded","error","TBS_RESPONSE_DATA","SIGNATURE_ALGORITHM$3","SIGNATURE$2","CERTS$1","BASIC_OCSP_RESPONSE","BASIC_OCSP_RESPONSE_TBS_RESPONSE_DATA","BASIC_OCSP_RESPONSE_SIGNATURE_ALGORITHM","BASIC_OCSP_RESPONSE_SIGNATURE","BASIC_OCSP_RESPONSE_CERTS","CLEAR_PROPS$g","BasicOCSPResponse","comparisonResult","hashesObject","certIDs","response","signatureParams","certIndex","trustedCerts","hash","additionalCerts","caCert","TBS$1","VERSION$6","SUBJECT","SPKI","ATTRIBUTES$1","SIGNATURE_ALGORITHM$2","SIGNATURE_VALUE","CSR_INFO","CSR_INFO_VERSION","CSR_INFO_SUBJECT","CSR_INFO_SPKI","CSR_INFO_ATTRS","CLEAR_PROPS$f","CertificationRequestInfo","CertificationRequest","DIGEST_ALGORITHM$1","DIGEST","CLEAR_PROPS$e","DigestInfo","E_CONTENT_TYPE","E_CONTENT","CLEAR_PROPS$d","EncapsulatedContentInfo","viewHex","MAC","MAC_SALT","ITERATIONS","CLEAR_PROPS$c","MacData","HASH_ALGORITHM","HASHED_MESSAGE","CLEAR_PROPS$b","MessageImprint","hashedMessage","REQ_CERT","SINGLE_REQUEST_EXTENSIONS","CLEAR_PROPS$a","Request","TBS","VERSION$5","REQUESTOR_NAME","REQUEST_LIST","REQUEST_EXTENSIONS","TBS_REQUEST$1","TBS_REQUEST_VERSION","TBS_REQUEST_REQUESTOR_NAME","TBS_REQUEST_REQUESTS","TBS_REQUEST_REQUEST_EXTENSIONS","CLEAR_PROPS$9","TBSRequest","SIGNATURE_ALGORITHM$1","SIGNATURE$1","CERTS","Signature","TBS_REQUEST","OPTIONAL_SIGNATURE","CLEAR_PROPS$8","OCSPRequest","tbs","RESPONSE_TYPE","RESPONSE","CLEAR_PROPS$7","ResponseBytes","RESPONSE_STATUS","RESPONSE_BYTES","OCSPResponse","basicResponse","asn1Basic","TYPE","ATTRIBUTES","ENCODED_VALUE","CLEAR_PROPS$6","SignedAndUnsignedAttributes","encodedView","VERSION$4","SID","DIGEST_ALGORITHM","SIGNED_ATTRS","SIGNATURE_ALGORITHM","SIGNATURE","UNSIGNED_ATTRS","SIGNER_INFO","SIGNER_INFO_VERSION","SIGNER_INFO_SID","SIGNER_INFO_DIGEST_ALGORITHM","SIGNER_INFO_SIGNED_ATTRS","SIGNER_INFO_SIGNATURE_ALGORITHM","SIGNER_INFO_SIGNATURE","SIGNER_INFO_UNSIGNED_ATTRS","CLEAR_PROPS$5","SignerInfo","currentSid","VERSION$3","POLICY","MESSAGE_IMPRINT$1","SERIAL_NUMBER","GEN_TIME","ORDERING","NONCE$1","ACCURACY","TSA","EXTENSIONS$1","TST_INFO","TST_INFO_VERSION","TST_INFO_POLICY","TST_INFO_MESSAGE_IMPRINT","TST_INFO_SERIAL_NUMBER","TST_INFO_GEN_TIME","TST_INFO_ACCURACY","TST_INFO_ORDERING","TST_INFO_NONCE","TST_INFO_TSA","TST_INFO_EXTENSIONS","CLEAR_PROPS$4","TSTInfo","VERSION$2","DIGEST_ALGORITHMS","ENCAP_CONTENT_INFO","CERTIFICATES","CRLS","SIGNER_INFOS","OCSPS","SIGNED_DATA","SIGNED_DATA_VERSION","SIGNED_DATA_DIGEST_ALGORITHMS","SIGNED_DATA_ENCAP_CONTENT_INFO","SIGNED_DATA_CERTIFICATES","SIGNED_DATA_CRLS","SIGNED_DATA_SIGNER_INFOS","CLEAR_PROPS$3","SignedDataVerifyError","date","signatureVerified","signerCertificate","signerCertificateVerified","timestampSerial","SignedData","certificateSet","signerInfoSchema","certificateSetSchema","crlSchema","signerInfo","signer","checkChain","extendedMode","findOrigin","findIssuer","messageDigestValue","sid","digest","tstInfo","certs","chainParams","chainEngine","verificationResult","signerInfoHashAlgorithm","eContent","foundContentType","foundMessageDigest","attribute","messageDigest","verifyResult","signerIndex","VERSION$1","AUTH_SAFE","MAC_DATA","PARSED_VALUE","CLERA_PROPS","PFX","toBeSigned","cmsSigned","signedAttr","STATUS$1","STATUS_STRINGS","FAIL_INFO","CLEAR_PROPS$2","PKIStatus","PKIStatusInfo","_status","VERSION","MESSAGE_IMPRINT","REQ_POLICY","NONCE","CERT_REQ","EXTENSIONS","TIME_STAMP_REQ","TIME_STAMP_REQ_VERSION","TIME_STAMP_REQ_MESSAGE_IMPRINT","TIME_STAMP_REQ_POLICY","TIME_STAMP_REQ_NONCE","TIME_STAMP_REQ_CERT_REQ","TIME_STAMP_REQ_EXTENSIONS","CLEAR_PROPS$1","TimeStampReq","STATUS","TIME_STAMP_TOKEN","TIME_STAMP_RESP","TIME_STAMP_RESP_STATUS","TIME_STAMP_RESP_TOKEN","CLEAR_PROPS","TimeStampResp","verificationParameters","initCryptoEngine","engineName","nodeCrypto","bufferToString","stringToBuffer","bufferToHex","base64ToBuffer","base64Str","pemToBuffer","pem","pemContents","decryptWithAES","decryptWithRSA","loadAESPrivateKey","loadServerPublicKey","loadRSAPrivateKey","exportAESKey","sha256Hash","hashBuffer","validateCertificateSignature","X509Certificate","getPatchedCrypto","validateCMSSignature","signedData","cmsBuffer","users","cmsContent","originalSignedData","signerUserId","userId","getPatchedCryptoEngine","CustomCryptoEngine","decryptPrivateKey","mnemonic","mnemonicPrivateKeys","mnemonicToPrivateKey","mnemonicPrivateKey","rawPrivateKey","pemKey","keyMaterial","API_ROOT","Url","getPrivateKey","encryptedPrivateKeyInfo","axios","generateOcsUrl","encryptedPrivateKey","iv","getServerPublicKey","_sfc_main","_sfc_render","_vm","$event","_sfc_staticRenderFns","__component__","normalizeComponent","AlertCircle","NcButton","Check","useModelMigration","GenRandomId","isValidLabel","ariaDescribedby","event","newValue","NcInputField","_sfc_main$1","_sfc_render$1","_sfc_staticRenderFns$1","__component__$1","Undo","register","t16","t47","NcInputFieldProps","Close","ArrowRight","predefinedLabels","NcTextField","dialogRef","ref","confirmToggle","isFormValid","computed","submit","emit","buttons","promptUserForMnemonic","promiseWithResolvers","spawnDialog","MnemonicPromptDialog","decryptMetadataInfo","metadataPrivateKey","encryptedMetadata","compressedMetadataInfo","metadataInfo","unzipBuffer","validateKeyChecksums","validateMetadataKeyChecksum","privateKeyBuffer","privateKeyHash","decompressedStream","controller","getMetadataPrivateKey","userInfo","encryptedMetadataPrivateKey","rawMetadataPrivateKey","validateMetadataSignature","rootMetadata","validateUserCertificates","serverPublicKey","verifications","davClient","rawMetadata","metadataSignature","dirname","currentUser","cachedRootMetadata","metadataPath","originalFetch","setupWebDavDecryptionProxy","input","config","request","handlePropFind","handleGet","responsePromise","fileInfo","basename","decryptFile","body","xml","parseXML","stat","parseStat","replacePlaceholdersInPropfind","parentMetadataInfo","decryptedMetadata","decryptedParentMetadata","relevantMetadataInfo","identifier","fileEncryptionInfo","decryptedFileContent","ArrowDownSvg","isDownloadable","downloadAttribute","scope","downloadNodes","file","blob","link","downloadUnencryptedAction","nodes","userConfig","disableFileAction","actionId","originalEnabled"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,29,34,35,36,43]} \ No newline at end of file +{"version":3,"file":"end_to_end_encryption-files.mjs","sources":["../node_modules/cancelable-promise/esm/CancelablePromise.mjs","../node_modules/webdav/dist/web/index.js","../node_modules/@nextcloud/sharing/dist/public.mjs","../node_modules/@nextcloud/files/dist/chunks/dav-Co9y-hkg.mjs","../node_modules/@nextcloud/files/dist/index.mjs","../node_modules/fast-xml-parser/src/util.js","../node_modules/fast-xml-parser/src/validator.js","../node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","../node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","../node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","../node_modules/strnum/strnum.js","../node_modules/fast-xml-parser/src/ignoreAttributes.js","../node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","../node_modules/fast-xml-parser/src/xmlparser/node2json.js","../node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","../node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","../node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","../node_modules/fast-xml-parser/src/fxp.js","../src/models.ts","../src/services/logger.ts","../node_modules/bytestreamjs/build/mjs/byte_stream.js","../node_modules/bytestreamjs/build/mjs/seq_stream.js","../node_modules/@noble/hashes/esm/_assert.js","../node_modules/@noble/hashes/esm/utils.js","../node_modules/@noble/hashes/esm/_md.js","../node_modules/@noble/hashes/esm/sha1.js","../node_modules/@noble/hashes/esm/sha256.js","../node_modules/@noble/hashes/esm/_u64.js","../node_modules/@noble/hashes/esm/sha512.js","../node_modules/pkijs/build/index.es.js","../src/services/bufferUtils.ts","../src/services/crypto.ts","../src/services/privateKeyUtils.ts","../src/services/api.ts","../node_modules/@nextcloud/vue/dist/chunks/AlertCircleOutline-DBxbepLy.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcInputField-ixTTHy3h.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcTextField-gOk0FWcs.mjs","../src/components/MnemonicPromptDialog.vue","../src/services/mnemonicDialogs.ts","../src/services/metadataUtils.ts","../src/services/security.ts","../src/services/state.ts","../src/services/webDavProxy.ts","../node_modules/@mdi/svg/svg/arrow-down.svg?raw","../src/services/permissions.ts","../src/services/downloadUnencryptedAction.ts","../src/files.ts"],"sourcesContent":["function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\n\nfunction _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\n\nfunction _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\n\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\"attempted to \" + action + \" private field on non-instance\"); } return privateMap.get(receiver); }\n\nfunction _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } descriptor.value = value; } }\n\nvar toStringTag = typeof Symbol !== 'undefined' ? Symbol.toStringTag : '@@toStringTag';\n\nvar _internals = /*#__PURE__*/new WeakMap();\n\nvar _promise = /*#__PURE__*/new WeakMap();\n\nclass CancelablePromiseInternal {\n constructor(_ref) {\n var {\n executor = () => {},\n internals = defaultInternals(),\n promise = new Promise((resolve, reject) => executor(resolve, reject, onCancel => {\n internals.onCancelList.push(onCancel);\n }))\n } = _ref;\n\n _classPrivateFieldInitSpec(this, _internals, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldInitSpec(this, _promise, {\n writable: true,\n value: void 0\n });\n\n _defineProperty(this, toStringTag, 'CancelablePromise');\n\n this.cancel = this.cancel.bind(this);\n\n _classPrivateFieldSet(this, _internals, internals);\n\n _classPrivateFieldSet(this, _promise, promise || new Promise((resolve, reject) => executor(resolve, reject, onCancel => {\n internals.onCancelList.push(onCancel);\n })));\n }\n\n then(onfulfilled, onrejected) {\n return makeCancelable(_classPrivateFieldGet(this, _promise).then(createCallback(onfulfilled, _classPrivateFieldGet(this, _internals)), createCallback(onrejected, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n\n catch(onrejected) {\n return makeCancelable(_classPrivateFieldGet(this, _promise).catch(createCallback(onrejected, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n\n finally(onfinally, runWhenCanceled) {\n if (runWhenCanceled) {\n _classPrivateFieldGet(this, _internals).onCancelList.push(onfinally);\n }\n\n return makeCancelable(_classPrivateFieldGet(this, _promise).finally(createCallback(() => {\n if (onfinally) {\n if (runWhenCanceled) {\n _classPrivateFieldGet(this, _internals).onCancelList = _classPrivateFieldGet(this, _internals).onCancelList.filter(callback => callback !== onfinally);\n }\n\n return onfinally();\n }\n }, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n\n cancel() {\n _classPrivateFieldGet(this, _internals).isCanceled = true;\n\n var callbacks = _classPrivateFieldGet(this, _internals).onCancelList;\n\n _classPrivateFieldGet(this, _internals).onCancelList = [];\n\n for (var callback of callbacks) {\n if (typeof callback === 'function') {\n try {\n callback();\n } catch (err) {\n console.error(err);\n }\n }\n }\n }\n\n isCanceled() {\n return _classPrivateFieldGet(this, _internals).isCanceled === true;\n }\n\n}\n\nexport class CancelablePromise extends CancelablePromiseInternal {\n constructor(executor) {\n super({\n executor\n });\n }\n\n}\n\n_defineProperty(CancelablePromise, \"all\", function all(iterable) {\n return makeAllCancelable(iterable, Promise.all(iterable));\n});\n\n_defineProperty(CancelablePromise, \"allSettled\", function allSettled(iterable) {\n return makeAllCancelable(iterable, Promise.allSettled(iterable));\n});\n\n_defineProperty(CancelablePromise, \"any\", function any(iterable) {\n return makeAllCancelable(iterable, Promise.any(iterable));\n});\n\n_defineProperty(CancelablePromise, \"race\", function race(iterable) {\n return makeAllCancelable(iterable, Promise.race(iterable));\n});\n\n_defineProperty(CancelablePromise, \"resolve\", function resolve(value) {\n return cancelable(Promise.resolve(value));\n});\n\n_defineProperty(CancelablePromise, \"reject\", function reject(reason) {\n return cancelable(Promise.reject(reason));\n});\n\n_defineProperty(CancelablePromise, \"isCancelable\", isCancelablePromise);\n\nexport default CancelablePromise;\nexport function cancelable(promise) {\n return makeCancelable(promise, defaultInternals());\n}\nexport function isCancelablePromise(promise) {\n return promise instanceof CancelablePromise || promise instanceof CancelablePromiseInternal;\n}\n\nfunction createCallback(onResult, internals) {\n if (onResult) {\n return arg => {\n if (!internals.isCanceled) {\n var result = onResult(arg);\n\n if (isCancelablePromise(result)) {\n internals.onCancelList.push(result.cancel);\n }\n\n return result;\n }\n\n return arg;\n };\n }\n}\n\nfunction makeCancelable(promise, internals) {\n return new CancelablePromiseInternal({\n internals,\n promise\n });\n}\n\nfunction makeAllCancelable(iterable, promise) {\n var internals = defaultInternals();\n internals.onCancelList.push(() => {\n for (var resolvable of iterable) {\n if (isCancelablePromise(resolvable)) {\n resolvable.cancel();\n }\n }\n });\n return new CancelablePromiseInternal({\n internals,\n promise\n });\n}\n\nfunction defaultInternals() {\n return {\n isCanceled: false,\n onCancelList: []\n };\n}\n//# sourceMappingURL=CancelablePromise.mjs.map","/*! For license information please see index.js.LICENSE.txt */\nvar t={2:t=>{function e(t,e,o){t instanceof RegExp&&(t=n(t,o)),e instanceof RegExp&&(e=n(e,o));var i=r(t,e,o);return i&&{start:i[0],end:i[1],pre:o.slice(0,i[0]),body:o.slice(i[0]+t.length,i[1]),post:o.slice(i[1]+e.length)}}function n(t,e){var n=e.match(t);return n?n[0]:null}function r(t,e,n){var r,o,i,s,a,u=n.indexOf(t),c=n.indexOf(e,u+1),l=u;if(u>=0&&c>0){for(r=[],i=n.length;l>=0&&!a;)l==u?(r.push(l),u=n.indexOf(t,l+1)):1==r.length?a=[r.pop(),c]:((o=r.pop())=0?u:c;r.length&&(a=[i,s])}return a}t.exports=e,e.range=r},101:function(t,e,n){var r;t=n.nmd(t),function(o){var i=(t&&t.exports,\"object\"==typeof global&&global);i.global!==i&&i.window;var s=function(t){this.message=t};(s.prototype=new Error).name=\"InvalidCharacterError\";var a=function(t){throw new s(t)},u=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",c=/[\\t\\n\\f\\r ]/g,l={encode:function(t){t=String(t),/[^\\0-\\xFF]/.test(t)&&a(\"The string to be encoded contains characters outside of the Latin1 range.\");for(var e,n,r,o,i=t.length%3,s=\"\",c=-1,l=t.length-i;++c>18&63)+u.charAt(o>>12&63)+u.charAt(o>>6&63)+u.charAt(63&o);return 2==i?(e=t.charCodeAt(c)<<8,n=t.charCodeAt(++c),s+=u.charAt((o=e+n)>>10)+u.charAt(o>>4&63)+u.charAt(o<<2&63)+\"=\"):1==i&&(o=t.charCodeAt(c),s+=u.charAt(o>>2)+u.charAt(o<<4&63)+\"==\"),s},decode:function(t){var e=(t=String(t).replace(c,\"\")).length;e%4==0&&(e=(t=t.replace(/==?$/,\"\")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&a(\"Invalid character: the string to be decoded is not correctly encoded.\");for(var n,r,o=0,i=\"\",s=-1;++s>(-2*o&6)));return i},version:\"1.0.0\"};void 0===(r=function(){return l}.call(e,n,e,t))||(t.exports=r)}()},172:(t,e)=>{e.d=function(t){if(!t)return 0;for(var e=(t=t.toString()).length,n=t.length;n--;){var r=t.charCodeAt(n);56320<=r&&r<=57343&&n--,127{var e={utf8:{stringToBytes:function(t){return e.bin.stringToBytes(unescape(encodeURIComponent(t)))},bytesToString:function(t){return decodeURIComponent(escape(e.bin.bytesToString(t)))}},bin:{stringToBytes:function(t){for(var e=[],n=0;n{var e,n;e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",n={rotl:function(t,e){return t<>>32-e},rotr:function(t,e){return t<<32-e|t>>>e},endian:function(t){if(t.constructor==Number)return 16711935&n.rotl(t,8)|4278255360&n.rotl(t,24);for(var e=0;e0;t--)e.push(Math.floor(256*Math.random()));return e},bytesToWords:function(t){for(var e=[],n=0,r=0;n>>5]|=t[n]<<24-r%32;return e},wordsToBytes:function(t){for(var e=[],n=0;n<32*t.length;n+=8)e.push(t[n>>>5]>>>24-n%32&255);return e},bytesToHex:function(t){for(var e=[],n=0;n>>4).toString(16)),e.push((15&t[n]).toString(16));return e.join(\"\")},hexToBytes:function(t){for(var e=[],n=0;n>>6*(3-i)&63)):n.push(\"=\");return n.join(\"\")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\\/]/gi,\"\");for(var n=[],r=0,o=0;r>>6-2*o);return n}},t.exports=n},635:(t,e,n)=>{const r=n(31),o=n(338),i=n(221);t.exports={XMLParser:o,XMLValidator:r,XMLBuilder:i}},705:(t,e)=>{const n=\":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\",r=\"[\"+n+\"][\"+n+\"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*\",o=new RegExp(\"^\"+r+\"$\");e.isExist=function(t){return void 0!==t},e.isEmptyObject=function(t){return 0===Object.keys(t).length},e.merge=function(t,e,n){if(e){const r=Object.keys(e),o=r.length;for(let i=0;i{const r=n(705),o={allowBooleanAttributes:!1,unpairedTags:[]};function i(t){return\" \"===t||\"\\t\"===t||\"\\n\"===t||\"\\r\"===t}function s(t,e){const n=e;for(;e5&&\"xml\"===r)return d(\"InvalidXml\",\"XML declaration allowed only at the start of the document.\",m(t,e));if(\"?\"==t[e]&&\">\"==t[e+1]){e++;break}}return e}function a(t,e){if(t.length>e+5&&\"-\"===t[e+1]&&\"-\"===t[e+2]){for(e+=3;e\"===t[e+2]){e+=2;break}}else if(t.length>e+8&&\"D\"===t[e+1]&&\"O\"===t[e+2]&&\"C\"===t[e+3]&&\"T\"===t[e+4]&&\"Y\"===t[e+5]&&\"P\"===t[e+6]&&\"E\"===t[e+7]){let n=1;for(e+=8;e\"===t[e]&&(n--,0===n))break}else if(t.length>e+9&&\"[\"===t[e+1]&&\"C\"===t[e+2]&&\"D\"===t[e+3]&&\"A\"===t[e+4]&&\"T\"===t[e+5]&&\"A\"===t[e+6]&&\"[\"===t[e+7])for(e+=8;e\"===t[e+2]){e+=2;break}return e}e.validate=function(t,e){e=Object.assign({},o,e);const n=[];let u=!1,c=!1;\"\\ufeff\"===t[0]&&(t=t.substr(1));for(let o=0;o\"!==t[o]&&\" \"!==t[o]&&\"\\t\"!==t[o]&&\"\\n\"!==t[o]&&\"\\r\"!==t[o];o++)v+=t[o];if(v=v.trim(),\"/\"===v[v.length-1]&&(v=v.substring(0,v.length-1),o--),h=v,!r.isName(h)){let e;return e=0===v.trim().length?\"Invalid space after '<'.\":\"Tag '\"+v+\"' is an invalid name.\",d(\"InvalidTag\",e,m(t,o))}const b=l(t,o);if(!1===b)return d(\"InvalidAttr\",\"Attributes for '\"+v+\"' have open quote.\",m(t,o));let w=b.value;if(o=b.index,\"/\"===w[w.length-1]){const n=o-w.length;w=w.substring(0,w.length-1);const r=p(w,e);if(!0!==r)return d(r.err.code,r.err.msg,m(t,n+r.err.line));u=!0}else if(y){if(!b.tagClosed)return d(\"InvalidTag\",\"Closing tag '\"+v+\"' doesn't have proper closing.\",m(t,o));if(w.trim().length>0)return d(\"InvalidTag\",\"Closing tag '\"+v+\"' can't have attributes or invalid starting.\",m(t,g));if(0===n.length)return d(\"InvalidTag\",\"Closing tag '\"+v+\"' has not been opened.\",m(t,g));{const e=n.pop();if(v!==e.tagName){let n=m(t,e.tagStartPos);return d(\"InvalidTag\",\"Expected closing tag '\"+e.tagName+\"' (opened in line \"+n.line+\", col \"+n.col+\") instead of closing tag '\"+v+\"'.\",m(t,g))}0==n.length&&(c=!0)}}else{const r=p(w,e);if(!0!==r)return d(r.err.code,r.err.msg,m(t,o-w.length+r.err.line));if(!0===c)return d(\"InvalidXml\",\"Multiple possible root nodes found.\",m(t,o));-1!==e.unpairedTags.indexOf(v)||n.push({tagName:v,tagStartPos:g}),u=!0}for(o++;o0)||d(\"InvalidXml\",\"Invalid '\"+JSON.stringify(n.map((t=>t.tagName)),null,4).replace(/\\r?\\n/g,\"\")+\"' found.\",{line:1,col:1}):d(\"InvalidXml\",\"Start tag expected.\",1)};const u='\"',c=\"'\";function l(t,e){let n=\"\",r=\"\",o=!1;for(;e\"===t[e]&&\"\"===r){o=!0;break}n+=t[e]}return\"\"===r&&{value:n,index:e,tagClosed:o}}const h=new RegExp(\"(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\\\"])(([\\\\s\\\\S])*?)\\\\5)?\",\"g\");function p(t,e){const n=r.getAllMatches(t,h),o={};for(let t=0;t{const r=n(87),o={attributeNamePrefix:\"@_\",attributesGroupName:!1,textNodeName:\"#text\",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:\" \",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp(\"&\",\"g\"),val:\"&\"},{regex:new RegExp(\">\",\"g\"),val:\">\"},{regex:new RegExp(\"<\",\"g\"),val:\"<\"},{regex:new RegExp(\"'\",\"g\"),val:\"'\"},{regex:new RegExp('\"',\"g\"),val:\""\"}],processEntities:!0,stopNodes:[],oneListGroup:!1};function i(t){this.options=Object.assign({},o,t),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=u),this.processTextOrObjNode=s,this.options.format?(this.indentate=a,this.tagEndChar=\">\\n\",this.newLine=\"\\n\"):(this.indentate=function(){return\"\"},this.tagEndChar=\">\",this.newLine=\"\")}function s(t,e,n){const r=this.j2x(t,n+1);return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,r.attrStr,n):this.buildObjectNode(r.val,e,r.attrStr,n)}function a(t){return this.options.indentBy.repeat(t)}function u(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}i.prototype.build=function(t){return this.options.preserveOrder?r(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0).val)},i.prototype.j2x=function(t,e){let n=\"\",r=\"\";for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o))if(void 0===t[o])this.isAttribute(o)&&(r+=\"\");else if(null===t[o])this.isAttribute(o)?r+=\"\":\"?\"===o[0]?r+=this.indentate(e)+\"<\"+o+\"?\"+this.tagEndChar:r+=this.indentate(e)+\"<\"+o+\"/\"+this.tagEndChar;else if(t[o]instanceof Date)r+=this.buildTextValNode(t[o],o,\"\",e);else if(\"object\"!=typeof t[o]){const i=this.isAttribute(o);if(i)n+=this.buildAttrPairStr(i,\"\"+t[o]);else if(o===this.options.textNodeName){let e=this.options.tagValueProcessor(o,\"\"+t[o]);r+=this.replaceEntitiesValue(e)}else r+=this.buildTextValNode(t[o],o,\"\",e)}else if(Array.isArray(t[o])){const n=t[o].length;let i=\"\",s=\"\";for(let a=0;a\"+t+o}},i.prototype.closeTag=function(t){let e=\"\";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e=\"/\"):e=this.options.suppressEmptyNode?\"/\":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(r)+`\\x3c!--${t}--\\x3e`+this.newLine;if(\"?\"===e[0])return this.indentate(r)+\"<\"+e+n+\"?\"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),\"\"===o?this.indentate(r)+\"<\"+e+n+this.closeTag(e)+this.tagEndChar:this.indentate(r)+\"<\"+e+n+\">\"+o+\"0&&this.options.processEntities)for(let e=0;e{function e(t,s,a,u){let c=\"\",l=!1;for(let h=0;h`,l=!1;continue}if(f===s.commentPropName){c+=u+`\\x3c!--${p[f][0][s.textNodeName]}--\\x3e`,l=!0;continue}if(\"?\"===f[0]){const t=r(p[\":@\"],s),e=\"?xml\"===f?\"\":u;let n=p[f][0][s.textNodeName];n=0!==n.length?\" \"+n:\"\",c+=e+`<${f}${n}${t}?>`,l=!0;continue}let g=u;\"\"!==g&&(g+=s.indentBy);const m=u+`<${f}${r(p[\":@\"],s)}`,y=e(p[f],s,d,g);-1!==s.unpairedTags.indexOf(f)?s.suppressUnpairedNode?c+=m+\">\":c+=m+\"/>\":y&&0!==y.length||!s.suppressEmptyNode?y&&y.endsWith(\">\")?c+=m+`>${y}${u}`:(c+=m+\">\",y&&\"\"!==u&&(y.includes(\"/>\")||y.includes(\"`):c+=m+\"/>\",l=!0}return c}function n(t){const e=Object.keys(t);for(let n=0;n0&&e.processEntities)for(let n=0;n0&&(r=\"\\n\"),e(t,n,\"\",r)}},193:(t,e,n)=>{const r=n(705);function o(t,e){let n=\"\";for(;e\"===t[e]){if(p?\"-\"===t[e-1]&&\"-\"===t[e-2]&&(p=!1,r--):r--,0===r)break}else\"[\"===t[e]?h=!0:f+=t[e];else{if(h&&s(t,e))e+=7,[entityName,val,e]=o(t,e+1),-1===val.indexOf(\"&\")&&(n[l(entityName)]={regx:RegExp(`&${entityName};`,\"g\"),val});else if(h&&a(t,e))e+=8;else if(h&&u(t,e))e+=8;else if(h&&c(t,e))e+=9;else{if(!i)throw new Error(\"Invalid DOCTYPE\");p=!0}r++,f=\"\"}if(0!==r)throw new Error(\"Unclosed DOCTYPE\")}return{entities:n,i:e}}},63:(t,e)=>{const n={preserveOrder:!1,attributeNamePrefix:\"@_\",attributesGroupName:!1,textNodeName:\"#text\",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,n){return t}};e.buildOptions=function(t){return Object.assign({},n,t)},e.defaultOptions=n},299:(t,e,n)=>{const r=n(705),o=n(365),i=n(193),s=n(494);function a(t){const e=Object.keys(t);for(let n=0;n0)){s||(t=this.replaceEntitiesValue(t));const r=this.options.tagValueProcessor(e,t,n,o,i);return null==r?t:typeof r!=typeof t||r!==t?r:this.options.trimValues||t.trim()===t?w(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function c(t){if(this.options.removeNSPrefix){const e=t.split(\":\"),n=\"/\"===t.charAt(0)?\"/\":\"\";if(\"xmlns\"===e[0])return\"\";2===e.length&&(t=n+e[1])}return t}const l=new RegExp(\"([^\\\\s=]+)\\\\s*(=\\\\s*(['\\\"])([\\\\s\\\\S]*?)\\\\3)?\",\"gm\");function h(t,e,n){if(!this.options.ignoreAttributes&&\"string\"==typeof t){const n=r.getAllMatches(t,l),o=n.length,i={};for(let t=0;t\",a,\"Closing Tag is not closed.\");let o=t.substring(a+2,e).trim();if(this.options.removeNSPrefix){const t=o.indexOf(\":\");-1!==t&&(o=o.substr(t+1))}this.options.transformTagName&&(o=this.options.transformTagName(o)),n&&(r=this.saveTextToParentTag(r,n,s));const i=s.substring(s.lastIndexOf(\".\")+1);if(o&&-1!==this.options.unpairedTags.indexOf(o))throw new Error(`Unpaired tag can not be used as closing tag: `);let u=0;i&&-1!==this.options.unpairedTags.indexOf(i)?(u=s.lastIndexOf(\".\",s.lastIndexOf(\".\")-1),this.tagsNodeStack.pop()):u=s.lastIndexOf(\".\"),s=s.substring(0,u),n=this.tagsNodeStack.pop(),r=\"\",a=e}else if(\"?\"===t[a+1]){let e=v(t,a,!1,\"?>\");if(!e)throw new Error(\"Pi Tag is not closed.\");if(r=this.saveTextToParentTag(r,n,s),this.options.ignoreDeclaration&&\"?xml\"===e.tagName||this.options.ignorePiTags);else{const t=new o(e.tagName);t.add(this.options.textNodeName,\"\"),e.tagName!==e.tagExp&&e.attrExpPresent&&(t[\":@\"]=this.buildAttributesMap(e.tagExp,s,e.tagName)),this.addChild(n,t,s)}a=e.closeIndex+1}else if(\"!--\"===t.substr(a+1,3)){const e=y(t,\"--\\x3e\",a+4,\"Comment is not closed.\");if(this.options.commentPropName){const o=t.substring(a+4,e-2);r=this.saveTextToParentTag(r,n,s),n.add(this.options.commentPropName,[{[this.options.textNodeName]:o}])}a=e}else if(\"!D\"===t.substr(a+1,2)){const e=i(t,a);this.docTypeEntities=e.entities,a=e.i}else if(\"![\"===t.substr(a+1,2)){const e=y(t,\"]]>\",a,\"CDATA is not closed.\")-2,o=t.substring(a+9,e);r=this.saveTextToParentTag(r,n,s);let i=this.parseTextData(o,n.tagname,s,!0,!1,!0,!0);null==i&&(i=\"\"),this.options.cdataPropName?n.add(this.options.cdataPropName,[{[this.options.textNodeName]:o}]):n.add(this.options.textNodeName,i),a=e+2}else{let i=v(t,a,this.options.removeNSPrefix),u=i.tagName;const c=i.rawTagName;let l=i.tagExp,h=i.attrExpPresent,p=i.closeIndex;this.options.transformTagName&&(u=this.options.transformTagName(u)),n&&r&&\"!xml\"!==n.tagname&&(r=this.saveTextToParentTag(r,n,s,!1));const f=n;if(f&&-1!==this.options.unpairedTags.indexOf(f.tagname)&&(n=this.tagsNodeStack.pop(),s=s.substring(0,s.lastIndexOf(\".\"))),u!==e.tagname&&(s+=s?\".\"+u:u),this.isItStopNode(this.options.stopNodes,s,u)){let e=\"\";if(l.length>0&&l.lastIndexOf(\"/\")===l.length-1)\"/\"===u[u.length-1]?(u=u.substr(0,u.length-1),s=s.substr(0,s.length-1),l=u):l=l.substr(0,l.length-1),a=i.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(u))a=i.closeIndex;else{const n=this.readStopNodeData(t,c,p+1);if(!n)throw new Error(`Unexpected end of ${c}`);a=n.i,e=n.tagContent}const r=new o(u);u!==l&&h&&(r[\":@\"]=this.buildAttributesMap(l,s,u)),e&&(e=this.parseTextData(e,u,s,!0,h,!0,!0)),s=s.substr(0,s.lastIndexOf(\".\")),r.add(this.options.textNodeName,e),this.addChild(n,r,s)}else{if(l.length>0&&l.lastIndexOf(\"/\")===l.length-1){\"/\"===u[u.length-1]?(u=u.substr(0,u.length-1),s=s.substr(0,s.length-1),l=u):l=l.substr(0,l.length-1),this.options.transformTagName&&(u=this.options.transformTagName(u));const t=new o(u);u!==l&&h&&(t[\":@\"]=this.buildAttributesMap(l,s,u)),this.addChild(n,t,s),s=s.substr(0,s.lastIndexOf(\".\"))}else{const t=new o(u);this.tagsNodeStack.push(n),u!==l&&h&&(t[\":@\"]=this.buildAttributesMap(l,s,u)),this.addChild(n,t,s),n=t}r=\"\",a=p}}else r+=t[a];return e.child};function f(t,e,n){const r=this.options.updateTag(e.tagname,n,e[\":@\"]);!1===r||(\"string\"==typeof r?(e.tagname=r,t.addChild(e)):t.addChild(e))}const d=function(t){if(this.options.processEntities){for(let e in this.docTypeEntities){const n=this.docTypeEntities[e];t=t.replace(n.regx,n.val)}for(let e in this.lastEntities){const n=this.lastEntities[e];t=t.replace(n.regex,n.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){const n=this.htmlEntities[e];t=t.replace(n.regex,n.val)}t=t.replace(this.ampEntity.regex,this.ampEntity.val)}return t};function g(t,e,n,r){return t&&(void 0===r&&(r=0===Object.keys(e.child).length),void 0!==(t=this.parseTextData(t,e.tagname,n,!1,!!e[\":@\"]&&0!==Object.keys(e[\":@\"]).length,r))&&\"\"!==t&&e.add(this.options.textNodeName,t),t=\"\"),t}function m(t,e,n){const r=\"*.\"+n;for(const n in t){const o=t[n];if(r===o||e===o)return!0}return!1}function y(t,e,n,r){const o=t.indexOf(e,n);if(-1===o)throw new Error(r);return o+e.length-1}function v(t,e,n){const r=function(t,e){let n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\">\",o=\"\";for(let i=e;i3&&void 0!==arguments[3]?arguments[3]:\">\");if(!r)return;let o=r.data;const i=r.index,s=o.search(/\\s/);let a=o,u=!0;-1!==s&&(a=o.substring(0,s),o=o.substring(s+1).trimStart());const c=a;if(n){const t=a.indexOf(\":\");-1!==t&&(a=a.substr(t+1),u=a!==r.data.substr(t+1))}return{tagName:a,tagExp:o,closeIndex:i,attrExpPresent:u,rawTagName:c}}function b(t,e,n){const r=n;let o=1;for(;n\",n,`${e} is not closed`);if(t.substring(n+2,i).trim()===e&&(o--,0===o))return{tagContent:t.substring(r,n),i};n=i}else if(\"?\"===t[n+1])n=y(t,\"?>\",n+1,\"StopNode is not closed.\");else if(\"!--\"===t.substr(n+1,3))n=y(t,\"--\\x3e\",n+3,\"StopNode is not closed.\");else if(\"![\"===t.substr(n+1,2))n=y(t,\"]]>\",n,\"StopNode is not closed.\")-2;else{const r=v(t,n,\">\");r&&((r&&r.tagName)===e&&\"/\"!==r.tagExp[r.tagExp.length-1]&&o++,n=r.closeIndex)}}function w(t,e,n){if(e&&\"string\"==typeof t){const e=t.trim();return\"true\"===e||\"false\"!==e&&s(t,n)}return r.isExist(t)?t:\"\"}t.exports=class{constructor(t){this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:\"'\"},gt:{regex:/&(gt|#62|#x3E);/g,val:\">\"},lt:{regex:/&(lt|#60|#x3C);/g,val:\"<\"},quot:{regex:/&(quot|#34|#x22);/g,val:'\"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:\"&\"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:\" \"},cent:{regex:/&(cent|#162);/g,val:\"¢\"},pound:{regex:/&(pound|#163);/g,val:\"£\"},yen:{regex:/&(yen|#165);/g,val:\"¥\"},euro:{regex:/&(euro|#8364);/g,val:\"€\"},copyright:{regex:/&(copy|#169);/g,val:\"©\"},reg:{regex:/&(reg|#174);/g,val:\"®\"},inr:{regex:/&(inr|#8377);/g,val:\"₹\"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>String.fromCharCode(Number.parseInt(e,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>String.fromCharCode(Number.parseInt(e,16))}},this.addExternalEntities=a,this.parseXml=p,this.parseTextData=u,this.resolveNameSpace=c,this.buildAttributesMap=h,this.isItStopNode=m,this.replaceEntitiesValue=d,this.readStopNodeData=b,this.saveTextToParentTag=g,this.addChild=f}}},338:(t,e,n)=>{const{buildOptions:r}=n(63),o=n(299),{prettify:i}=n(728),s=n(31);t.exports=class{constructor(t){this.externalEntities={},this.options=r(t)}parse(t,e){if(\"string\"==typeof t);else{if(!t.toString)throw new Error(\"XML data is accepted in String or Bytes[] form.\");t=t.toString()}if(e){!0===e&&(e={});const n=s.validate(t,e);if(!0!==n)throw Error(`${n.err.msg}:${n.err.line}:${n.err.col}`)}const n=new o(this.options);n.addExternalEntities(this.externalEntities);const r=n.parseXml(t);return this.options.preserveOrder||void 0===r?r:i(r,this.options)}addEntity(t,e){if(-1!==e.indexOf(\"&\"))throw new Error(\"Entity value can't have '&'\");if(-1!==t.indexOf(\"&\")||-1!==t.indexOf(\";\"))throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\");if(\"&\"===e)throw new Error(\"An entity with value '&' is not permitted\");this.externalEntities[t]=e}}},728:(t,e)=>{function n(t,e,s){let a;const u={};for(let c=0;c0&&(u[e.textNodeName]=a):void 0!==a&&(u[e.textNodeName]=a),u}function r(t){const e=Object.keys(t);for(let t=0;t{t.exports=class{constructor(t){this.tagname=t,this.child=[],this[\":@\"]={}}add(t,e){\"__proto__\"===t&&(t=\"#__proto__\"),this.child.push({[t]:e})}addChild(t){\"__proto__\"===t.tagname&&(t.tagname=\"#__proto__\"),t[\":@\"]&&Object.keys(t[\":@\"]).length>0?this.child.push({[t.tagname]:t.child,\":@\":t[\":@\"]}):this.child.push({[t.tagname]:t.child})}}},135:t=>{function e(t){return!!t.constructor&&\"function\"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}t.exports=function(t){return null!=t&&(e(t)||function(t){return\"function\"==typeof t.readFloatLE&&\"function\"==typeof t.slice&&e(t.slice(0,0))}(t)||!!t._isBuffer)}},542:(t,e,n)=>{!function(){var e=n(298),r=n(526).utf8,o=n(135),i=n(526).bin,s=function(t,n){t.constructor==String?t=n&&\"binary\"===n.encoding?i.stringToBytes(t):r.stringToBytes(t):o(t)?t=Array.prototype.slice.call(t,0):Array.isArray(t)||t.constructor===Uint8Array||(t=t.toString());for(var a=e.bytesToWords(t),u=8*t.length,c=1732584193,l=-271733879,h=-1732584194,p=271733878,f=0;f>>24)|4278255360&(a[f]<<24|a[f]>>>8);a[u>>>5]|=128<>>9<<4)]=u;var d=s._ff,g=s._gg,m=s._hh,y=s._ii;for(f=0;f>>0,l=l+b>>>0,h=h+w>>>0,p=p+x>>>0}return e.endian([c,l,h,p])};s._ff=function(t,e,n,r,o,i,s){var a=t+(e&n|~e&r)+(o>>>0)+s;return(a<>>32-i)+e},s._gg=function(t,e,n,r,o,i,s){var a=t+(e&r|n&~r)+(o>>>0)+s;return(a<>>32-i)+e},s._hh=function(t,e,n,r,o,i,s){var a=t+(e^n^r)+(o>>>0)+s;return(a<>>32-i)+e},s._ii=function(t,e,n,r,o,i,s){var a=t+(n^(e|~r))+(o>>>0)+s;return(a<>>32-i)+e},s._blocksize=16,s._digestsize=16,t.exports=function(t,n){if(null==t)throw new Error(\"Illegal argument \"+t);var r=e.wordsToBytes(s(t,n));return n&&n.asBytes?r:n&&n.asString?i.bytesToString(r):e.bytesToHex(r)}}()},285:(t,e,n)=>{var r=n(2);t.exports=function(t){return t?(\"{}\"===t.substr(0,2)&&(t=\"\\\\{\\\\}\"+t.substr(2)),m(function(t){return t.split(\"\\\\\\\\\").join(o).split(\"\\\\{\").join(i).split(\"\\\\}\").join(s).split(\"\\\\,\").join(a).split(\"\\\\.\").join(u)}(t),!0).map(l)):[]};var o=\"\\0SLASH\"+Math.random()+\"\\0\",i=\"\\0OPEN\"+Math.random()+\"\\0\",s=\"\\0CLOSE\"+Math.random()+\"\\0\",a=\"\\0COMMA\"+Math.random()+\"\\0\",u=\"\\0PERIOD\"+Math.random()+\"\\0\";function c(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function l(t){return t.split(o).join(\"\\\\\").split(i).join(\"{\").split(s).join(\"}\").split(a).join(\",\").split(u).join(\".\")}function h(t){if(!t)return[\"\"];var e=[],n=r(\"{\",\"}\",t);if(!n)return t.split(\",\");var o=n.pre,i=n.body,s=n.post,a=o.split(\",\");a[a.length-1]+=\"{\"+i+\"}\";var u=h(s);return s.length&&(a[a.length-1]+=u.shift(),a.push.apply(a,u)),e.push.apply(e,a),e}function p(t){return\"{\"+t+\"}\"}function f(t){return/^-?0\\d/.test(t)}function d(t,e){return t<=e}function g(t,e){return t>=e}function m(t,e){var n=[],o=r(\"{\",\"}\",t);if(!o)return[t];var i=o.pre,a=o.post.length?m(o.post,!1):[\"\"];if(/\\$$/.test(o.pre))for(var u=0;u=0;if(!x&&!N)return o.post.match(/,.*\\}/)?m(t=o.pre+\"{\"+o.body+s+o.post):[t];if(x)y=o.body.split(/\\.\\./);else if(1===(y=h(o.body)).length&&1===(y=m(y[0],!1).map(p)).length)return a.map((function(t){return o.pre+y[0]+t}));if(x){var P=c(y[0]),A=c(y[1]),O=Math.max(y[0].length,y[1].length),E=3==y.length?Math.abs(c(y[2])):1,T=d;A0){var I=new Array(C+1).join(\"0\");$=S<0?\"-\"+I+$.slice(1):I+$}}v.push($)}}else{v=[];for(var k=0;k{function e(t){return e=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},e(t)}function n(t){var e=\"function\"==typeof Map?new Map:void 0;return n=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf(\"[native code]\")))return t;var n;if(\"function\"!=typeof t)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,s)}function s(){return r(t,arguments,i(this).constructor)}return s.prototype=Object.create(t.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),o(s,t)},n(t)}function r(t,e,n){return r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var i=new(Function.bind.apply(t,r));return n&&o(i,n.prototype),i},r.apply(null,arguments)}function o(t,e){return o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}var s=function(t){function n(t){var r;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,n),(r=function(t,n){return!n||\"object\"!==e(n)&&\"function\"!=typeof n?function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t):n}(this,i(n).call(this,t))).name=\"ObjectPrototypeMutationError\",r}return function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(n,t),n}(n(Error));function a(t,n){for(var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=n.split(\".\"),i=o.length,s=function(e){var n=o[e];if(!t)return{v:void 0};if(\"+\"===n){if(Array.isArray(t))return{v:t.map((function(n,i){var s=o.slice(e+1);return s.length>0?a(n,s.join(\".\"),r):r(t,i,o,e)}))};var i=o.slice(0,e).join(\".\");throw new Error(\"Object at wildcard (\".concat(i,\") is not an array\"))}t=r(t,n,o,e)},u=0;u2&&void 0!==arguments[2]?arguments[2]:{};if(\"object\"!=e(t)||null===t)return!1;if(void 0===n)return!1;if(\"number\"==typeof n)return n in t;try{var o=!1;return a(t,n,(function(t,e,n,i){if(!u(n,i))return t&&t[e];o=r.own?t.hasOwnProperty(e):e in t})),o}catch(t){return!1}},hasOwn:function(t,e,n){return this.has(t,e,n||{own:!0})},isIn:function(t,n,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(\"object\"!=e(t)||null===t)return!1;if(void 0===n)return!1;try{var i=!1,s=!1;return a(t,n,(function(t,n,o,a){return i=i||t===r||!!t&&t[n]===r,s=u(o,a)&&\"object\"===e(t)&&n in t,t&&t[n]})),o.validPath?i&&s:i}catch(t){return!1}},ObjectPrototypeMutationError:s}},47:(t,e,n)=>{var r=n(410),o=function(t){return\"string\"==typeof t};function i(t,e){for(var n=[],r=0;r=-1&&!e;n--){var r=n>=0?arguments[n]:process.cwd();if(!o(r))throw new TypeError(\"Arguments to path.resolve must be strings\");r&&(t=r+\"/\"+t,e=\"/\"===r.charAt(0))}return(e?\"/\":\"\")+(t=i(t.split(\"/\"),!e).join(\"/\"))||\".\"},a.normalize=function(t){var e=a.isAbsolute(t),n=\"/\"===t.substr(-1);return(t=i(t.split(\"/\"),!e).join(\"/\"))||e||(t=\".\"),t&&n&&(t+=\"/\"),(e?\"/\":\"\")+t},a.isAbsolute=function(t){return\"/\"===t.charAt(0)},a.join=function(){for(var t=\"\",e=0;e=0&&\"\"===t[n];n--);return e>n?[]:t.slice(e,n+1)}t=a.resolve(t).substr(1),e=a.resolve(e).substr(1);for(var r=n(t.split(\"/\")),o=n(e.split(\"/\")),i=Math.min(r.length,o.length),s=i,u=0;u{var n=Object.prototype.hasOwnProperty;function r(t){try{return decodeURIComponent(t.replace(/\\+/g,\" \"))}catch(t){return null}}function o(t){try{return encodeURIComponent(t)}catch(t){return null}}e.stringify=function(t,e){e=e||\"\";var r,i,s=[];for(i in\"string\"!=typeof e&&(e=\"?\"),t)if(n.call(t,i)){if((r=t[i])||null!=r&&!isNaN(r)||(r=\"\"),i=o(i),r=o(r),null===i||null===r)continue;s.push(i+\"=\"+r)}return s.length?e+s.join(\"&\"):\"\"},e.parse=function(t){for(var e,n=/([^=?#&]+)=?([^&]*)/g,o={};e=n.exec(t);){var i=r(e[1]),s=r(e[2]);null===i||null===s||i in o||(o[i]=s)}return o}},670:t=>{t.exports=function(t,e){if(e=e.split(\":\")[0],!(t=+t))return!1;switch(e){case\"http\":case\"ws\":return 80!==t;case\"https\":case\"wss\":return 443!==t;case\"ftp\":return 21!==t;case\"gopher\":return 70!==t;case\"file\":return!1}return 0!==t}},494:t=>{const e=/^[-+]?0x[a-fA-F0-9]+$/,n=/^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const r={hex:!0,leadingZeros:!0,decimalPoint:\".\",eNotation:!0};t.exports=function(t){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(o=Object.assign({},r,o),!t||\"string\"!=typeof t)return t;let i=t.trim();if(void 0!==o.skipLike&&o.skipLike.test(i))return t;if(o.hex&&e.test(i))return Number.parseInt(i,16);{const e=n.exec(i);if(e){const n=e[1],r=e[2];let a=(s=e[3])&&-1!==s.indexOf(\".\")?(\".\"===(s=s.replace(/0+$/,\"\"))?s=\"0\":\".\"===s[0]?s=\"0\"+s:\".\"===s[s.length-1]&&(s=s.substr(0,s.length-1)),s):s;const u=e[4]||e[6];if(!o.leadingZeros&&r.length>0&&n&&\".\"!==i[2])return t;if(!o.leadingZeros&&r.length>0&&!n&&\".\"!==i[1])return t;{const e=Number(i),s=\"\"+e;return-1!==s.search(/[eE]/)||u?o.eNotation?e:t:-1!==i.indexOf(\".\")?\"0\"===s&&\"\"===a||s===a||n&&s===\"-\"+a?e:t:r?a===s||n+a===s?e:t:i===s||i===n+s?e:t}}return t}var s}},737:(t,e,n)=>{var r=n(670),o=n(647),i=/^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/,s=/[\\n\\r\\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//,u=/:\\d+$/,c=/^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i,l=/^[a-zA-Z]:/;function h(t){return(t||\"\").toString().replace(i,\"\")}var p=[[\"#\",\"hash\"],[\"?\",\"query\"],function(t,e){return g(e.protocol)?t.replace(/\\\\/g,\"/\"):t},[\"/\",\"pathname\"],[\"@\",\"auth\",1],[NaN,\"host\",void 0,1,1],[/:(\\d*)$/,\"port\",void 0,1],[NaN,\"hostname\",void 0,1,1]],f={hash:1,query:1};function d(t){var e,n=(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{}).location||{},r={},o=typeof(t=t||n);if(\"blob:\"===t.protocol)r=new y(unescape(t.pathname),{});else if(\"string\"===o)for(e in r=new y(t,{}),f)delete r[e];else if(\"object\"===o){for(e in t)e in f||(r[e]=t[e]);void 0===r.slashes&&(r.slashes=a.test(t.href))}return r}function g(t){return\"file:\"===t||\"ftp:\"===t||\"http:\"===t||\"https:\"===t||\"ws:\"===t||\"wss:\"===t}function m(t,e){t=(t=h(t)).replace(s,\"\"),e=e||{};var n,r=c.exec(t),o=r[1]?r[1].toLowerCase():\"\",i=!!r[2],a=!!r[3],u=0;return i?a?(n=r[2]+r[3]+r[4],u=r[2].length+r[3].length):(n=r[2]+r[4],u=r[2].length):a?(n=r[3]+r[4],u=r[3].length):n=r[4],\"file:\"===o?u>=2&&(n=n.slice(2)):g(o)?n=r[4]:o?i&&(n=n.slice(2)):u>=2&&g(e.protocol)&&(n=r[4]),{protocol:o,slashes:i||g(o),slashesCount:u,rest:n}}function y(t,e,n){if(t=(t=h(t)).replace(s,\"\"),!(this instanceof y))return new y(t,e,n);var i,a,u,c,f,v,b=p.slice(),w=typeof e,x=this,N=0;for(\"object\"!==w&&\"string\"!==w&&(n=e,e=null),n&&\"function\"!=typeof n&&(n=o.parse),i=!(a=m(t||\"\",e=d(e))).protocol&&!a.slashes,x.slashes=a.slashes||i&&e.slashes,x.protocol=a.protocol||e.protocol||\"\",t=a.rest,(\"file:\"===a.protocol&&(2!==a.slashesCount||l.test(t))||!a.slashes&&(a.protocol||a.slashesCount<2||!g(x.protocol)))&&(b[3]=[/(.*)/,\"pathname\"]);N{},388:()=>{},805:()=>{},345:()=>{},800:()=>{}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={id:r,loaded:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.nmd=t=>(t.paths=[],t.children||(t.children=[]),t);var r={};n.d(r,{hT:()=>C,O4:()=>I,Kd:()=>S,YK:()=>$,UU:()=>en,Gu:()=>F,ky:()=>oe,h4:()=>ne,ch:()=>re,hq:()=>Xt,i5:()=>ie});var o=n(737),i=n.n(o);function s(t){if(!a(t))throw new Error(\"Parameter was not an error\")}function a(t){return!!t&&\"object\"==typeof t&&\"[object Error]\"===(e=t,Object.prototype.toString.call(e))||t instanceof Error;var e}class u extends Error{constructor(t,e){const n=[...arguments],{options:r,shortMessage:o}=function(t){let e,n=\"\";if(0===t.length)e={};else if(a(t[0]))e={cause:t[0]},n=t.slice(1).join(\" \")||\"\";else if(t[0]&&\"object\"==typeof t[0])e=Object.assign({},t[0]),n=t.slice(1).join(\" \")||\"\";else{if(\"string\"!=typeof t[0])throw new Error(\"Invalid arguments passed to Layerr\");e={},n=n=t.join(\" \")||\"\"}return{options:e,shortMessage:n}}(n);let i=o;if(r.cause&&(i=`${i}: ${r.cause.message}`),super(i),this.message=i,r.name&&\"string\"==typeof r.name?this.name=r.name:this.name=\"Layerr\",r.cause&&Object.defineProperty(this,\"_cause\",{value:r.cause}),Object.defineProperty(this,\"_info\",{value:{}}),r.info&&\"object\"==typeof r.info&&Object.assign(this._info,r.info),Error.captureStackTrace){const t=r.constructorOpt||this.constructor;Error.captureStackTrace(this,t)}}static cause(t){return s(t),t._cause&&a(t._cause)?t._cause:null}static fullStack(t){s(t);const e=u.cause(t);return e?`${t.stack}\\ncaused by: ${u.fullStack(e)}`:t.stack??\"\"}static info(t){s(t);const e={},n=u.cause(t);return n&&Object.assign(e,u.info(n)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}var c=n(47),l=n.n(c);const h=\"__PATH_SEPARATOR_POSIX__\",p=\"__PATH_SEPARATOR_WINDOWS__\";function f(t){try{const e=t.replace(/\\//g,h).replace(/\\\\\\\\/g,p);return encodeURIComponent(e).split(p).join(\"\\\\\\\\\").split(h).join(\"/\")}catch(t){throw new u(t,\"Failed encoding path\")}}function d(t){return t.startsWith(\"/\")?t:\"/\"+t}function g(t){let e=t;return\"/\"!==e[0]&&(e=\"/\"+e),/^.+\\/$/.test(e)&&(e=e.substr(0,e.length-1)),e}function m(t){let e=new(i())(t).pathname;return e.length<=0&&(e=\"/\"),g(e)}function y(){for(var t=arguments.length,e=new Array(t),n=0;n1){var n=t.shift();t[0]=n+t[0]}t[0].match(/^file:\\/\\/\\//)?t[0]=t[0].replace(/^([^/:]+):\\/*/,\"$1:///\"):t[0]=t[0].replace(/^([^/:]+):\\/*/,\"$1://\");for(var r=0;r0&&(o=o.replace(/^[\\/]+/,\"\")),o=r0?\"?\":\"\")+s.join(\"&\")}(\"object\"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}(e.reduce(((t,e,n)=>((0===n||\"/\"!==e||\"/\"===e&&\"/\"!==t[t.length-1])&&t.push(e),t)),[]))}var v=n(542),b=n.n(v);const w=\"abcdef0123456789\";function x(t,e){const n=t.url.replace(\"//\",\"\"),r=-1==n.indexOf(\"/\")?\"/\":n.slice(n.indexOf(\"/\")),o=t.method?t.method.toUpperCase():\"GET\",i=!!/(^|,)\\s*auth\\s*($|,)/.test(e.qop)&&\"auth\",s=`00000000${e.nc}`.slice(-8),a=function(t,e,n,r,o,i,s){const a=s||b()(`${e}:${n}:${r}`);return t&&\"md5-sess\"===t.toLowerCase()?b()(`${a}:${o}:${i}`):a}(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),u=b()(`${o}:${r}`),c=i?b()(`${a}:${e.nonce}:${s}:${e.cnonce}:${i}:${u}`):b()(`${a}:${e.nonce}:${u}`),l={username:e.username,realm:e.realm,nonce:e.nonce,uri:r,qop:i,response:c,nc:s,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},h=[];for(const t in l)l[t]&&(\"qop\"===t||\"nc\"===t||\"algorithm\"===t?h.push(`${t}=${l[t]}`):h.push(`${t}=\"${l[t]}\"`));return`Digest ${h.join(\", \")}`}function N(t){return\"digest\"===(t.headers&&t.headers.get(\"www-authenticate\")||\"\").split(/\\s/)[0].toLowerCase()}var P=n(101),A=n.n(P);function O(t){return A().decode(t)}function E(t,e){var n;return`Basic ${n=`${t}:${e}`,A().encode(n)}`}const T=\"undefined\"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:\"undefined\"!=typeof window?window:globalThis,j=T.fetch.bind(T),S=(T.Headers,T.Request),$=T.Response;let C=function(t){return t.Auto=\"auto\",t.Digest=\"digest\",t.None=\"none\",t.Password=\"password\",t.Token=\"token\",t}({}),I=function(t){return t.DataTypeNoLength=\"data-type-no-length\",t.InvalidAuthType=\"invalid-auth-type\",t.InvalidOutputFormat=\"invalid-output-format\",t.LinkUnsupportedAuthType=\"link-unsupported-auth\",t.InvalidUpdateRange=\"invalid-update-range\",t.NotSupported=\"not-supported\",t}({});function k(t,e,n,r,o){switch(t.authType){case C.Auto:e&&n&&(t.headers.Authorization=E(e,n));break;case C.Digest:t.digest=function(t,e,n){return{username:t,password:e,ha1:n,nc:0,algorithm:\"md5\",hasDigestAuth:!1}}(e,n,o);break;case C.None:break;case C.Password:t.headers.Authorization=E(e,n);break;case C.Token:t.headers.Authorization=`${(i=r).token_type} ${i.access_token}`;break;default:throw new u({info:{code:I.InvalidAuthType}},`Invalid auth type: ${t.authType}`)}var i}n(345),n(800);const R=\"@@HOTPATCHER\",L=()=>{};function _(t){return{original:t,methods:[t],final:!1}}class M{constructor(){this._configuration={registry:{},getEmptyAction:\"null\"},this.__type__=R}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(t){this.configuration.getEmptyAction=t}control(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!t||t.__type__!==R)throw new Error(\"Failed taking control of target HotPatcher instance: Invalid type or object\");return Object.keys(t.configuration.registry).forEach((n=>{this.configuration.registry.hasOwnProperty(n)?e&&(this.configuration.registry[n]=Object.assign({},t.configuration.registry[n])):this.configuration.registry[n]=Object.assign({},t.configuration.registry[n])})),t._configuration=this.configuration,this}execute(t){const e=this.get(t)||L;for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o0;)o=[e.shift().apply(i,o)];return o[0]}}(...e.methods)}isPatched(t){return!!this.configuration.registry[t]}patch(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{chain:r=!1}=n;if(this.configuration.registry[t]&&this.configuration.registry[t].final)throw new Error(`Failed patching '${t}': Method marked as being final`);if(\"function\"!=typeof e)throw new Error(`Failed patching '${t}': Provided method is not a function`);if(r)this.configuration.registry[t]?this.configuration.registry[t].methods.push(e):this.configuration.registry[t]=_(e);else if(this.isPatched(t)){const{original:n}=this.configuration.registry[t];this.configuration.registry[t]=Object.assign(_(e),{original:n})}else this.configuration.registry[t]=_(e);return this}patchInline(t,e){this.isPatched(t)||this.patch(t,e);for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o1?e-1:0),r=1;r{this.patch(t,e,{chain:!0})})),this}restore(t){if(!this.isPatched(t))throw new Error(`Failed restoring method: No method present for key: ${t}`);if(\"function\"!=typeof this.configuration.registry[t].original)throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${t}`);return this.configuration.registry[t].methods=[this.configuration.registry[t].original],this}setFinal(t){if(!this.configuration.registry.hasOwnProperty(t))throw new Error(`Failed marking '${t}' as final: No method found for key`);return this.configuration.registry[t].final=!0,this}}let U=null;function F(){return U||(U=new M),U}function D(t){return function(t){if(\"object\"!=typeof t||null===t||\"[object Object]\"!=Object.prototype.toString.call(t))return!1;if(null===Object.getPrototypeOf(t))return!0;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t)?Object.assign({},t):Object.setPrototypeOf(Object.assign({},t),Object.getPrototypeOf(t))}function B(){for(var t=arguments.length,e=new Array(t),n=0;n0;){const t=o.shift();r=r?W(r,t):D(t)}return r}function W(t,e){const n=D(t);return Object.keys(e).forEach((t=>{n.hasOwnProperty(t)?Array.isArray(e[t])?n[t]=Array.isArray(n[t])?[...n[t],...e[t]]:[...e[t]]:\"object\"==typeof e[t]&&e[t]?n[t]=\"object\"==typeof n[t]&&n[t]?W(n[t],e[t]):D(e[t]):n[t]=e[t]:n[t]=e[t]})),n}function V(t){const e={};for(const n of t.keys())e[n]=t.get(n);return e}function z(){for(var t=arguments.length,e=new Array(t),n=0;n(Object.keys(e).forEach((n=>{const o=n.toLowerCase();r.hasOwnProperty(o)?t[r[o]]=e[n]:(r[o]=n,t[n]=e[n])})),t)),{})}n(805);const G=\"function\"==typeof ArrayBuffer,{toString:q}=Object.prototype;function H(t){return G&&(t instanceof ArrayBuffer||\"[object ArrayBuffer]\"===q.call(t))}function X(t){return null!=t&&null!=t.constructor&&\"function\"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function Z(t){return function(){for(var e=[],n=0;ne.patchInline(\"fetch\",j,t.url,function(t){let e={};const n={method:t.method};if(t.headers&&(e=z(e,t.headers)),void 0!==t.data){const[r,o]=function(t){if(\"string\"==typeof t)return[t,{}];if(X(t))return[t,{}];if(H(t))return[t,{}];if(t&&\"object\"==typeof t)return[JSON.stringify(t),{\"content-type\":\"application/json\"}];throw new Error(\"Unable to convert request body: Unexpected body type: \"+typeof t)}(t.data);n.body=r,e=z(e,o)}return t.signal&&(n.signal=t.signal),t.withCredentials&&(n.credentials=\"include\"),n.headers=e,n}(t))),t)}var nt=n(285);const rt=t=>{if(\"string\"!=typeof t)throw new TypeError(\"invalid pattern\");if(t.length>65536)throw new TypeError(\"pattern is too long\")},ot={\"[:alnum:]\":[\"\\\\p{L}\\\\p{Nl}\\\\p{Nd}\",!0],\"[:alpha:]\":[\"\\\\p{L}\\\\p{Nl}\",!0],\"[:ascii:]\":[\"\\\\x00-\\\\x7f\",!1],\"[:blank:]\":[\"\\\\p{Zs}\\\\t\",!0],\"[:cntrl:]\":[\"\\\\p{Cc}\",!0],\"[:digit:]\":[\"\\\\p{Nd}\",!0],\"[:graph:]\":[\"\\\\p{Z}\\\\p{C}\",!0,!0],\"[:lower:]\":[\"\\\\p{Ll}\",!0],\"[:print:]\":[\"\\\\p{C}\",!0],\"[:punct:]\":[\"\\\\p{P}\",!0],\"[:space:]\":[\"\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f\",!0],\"[:upper:]\":[\"\\\\p{Lu}\",!0],\"[:word:]\":[\"\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}\",!0],\"[:xdigit:]\":[\"A-Fa-f0-9\",!1]},it=t=>t.replace(/[[\\]\\\\-]/g,\"\\\\$&\"),st=t=>t.join(\"\"),at=(t,e)=>{const n=e;if(\"[\"!==t.charAt(n))throw new Error(\"not in a brace expression\");const r=[],o=[];let i=n+1,s=!1,a=!1,u=!1,c=!1,l=n,h=\"\";t:for(;ih?r.push(it(h)+\"-\"+it(e)):e===h&&r.push(it(e)),h=\"\",i++):t.startsWith(\"-]\",i+1)?(r.push(it(e+\"-\")),i+=2):t.startsWith(\"-\",i+1)?(h=e,i+=2):(r.push(it(e)),i++)}else u=!0,i++}else c=!0,i++}if(l1&&void 0!==arguments[1]?arguments[1]:{};return e?t.replace(/\\[([^\\/\\\\])\\]/g,\"$1\"):t.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g,\"$1$2\").replace(/\\\\([^\\/])/g,\"$1\")},ct=new Set([\"!\",\"?\",\"+\",\"*\",\"@\"]),lt=t=>ct.has(t),ht=\"(?!\\\\.)\",pt=new Set([\"[\",\".\"]),ft=new Set([\"..\",\".\"]),dt=new Set(\"().*{}+?[]^$\\\\!\"),gt=\"[^/]\",mt=gt+\"*?\",yt=gt+\"+?\";class vt{type;#t;#e;#n=!1;#r=[];#o;#i;#s;#a=!1;#u;#c;#l=!1;constructor(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.type=t,t&&(this.#e=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#u=this.#t===this?n:this.#t.#u,this.#s=this.#t===this?[]:this.#t.#s,\"!\"!==t||this.#t.#a||this.#s.push(this),this.#i=this.#o?this.#o.#r.length:0}get hasMagic(){if(void 0!==this.#e)return this.#e;for(const t of this.#r)if(\"string\"!=typeof t&&(t.type||t.hasMagic))return this.#e=!0;return this.#e}toString(){return void 0!==this.#c?this.#c:this.type?this.#c=this.type+\"(\"+this.#r.map((t=>String(t))).join(\"|\")+\")\":this.#c=this.#r.map((t=>String(t))).join(\"\")}#h(){if(this!==this.#t)throw new Error(\"should only call on root\");if(this.#a)return this;let t;for(this.toString(),this.#a=!0;t=this.#s.pop();){if(\"!\"!==t.type)continue;let e=t,n=e.#o;for(;n;){for(let r=e.#i+1;!n.type&&r\"string\"==typeof t?t:t.toJSON())):[this.type,...this.#r.map((t=>t.toJSON()))];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&\"!\"===this.#o?.type)&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(0===this.#i)return!0;const t=this.#o;for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:{};const n=new vt(null,void 0,e);return vt.#p(t,n,0,e),n}toMMPattern(){if(this!==this.#t)return this.#t.toMMPattern();const t=this.toString(),[e,n,r,o]=this.toRegExpSource();if(!(r||this.#e||this.#u.nocase&&!this.#u.nocaseMagicOnly&&t.toUpperCase()!==t.toLowerCase()))return n;const i=(this.#u.nocase?\"i\":\"\")+(o?\"u\":\"\");return Object.assign(new RegExp(`^${e}$`,i),{_src:e,_glob:t})}get options(){return this.#u}toRegExpSource(t){const e=t??!!this.#u.dot;if(this.#t===this&&this.#h(),!this.type){const n=this.isStart()&&this.isEnd(),r=this.#r.map((e=>{const[r,o,i,s]=\"string\"==typeof e?vt.#f(e,this.#e,n):e.toRegExpSource(t);return this.#e=this.#e||i,this.#n=this.#n||s,r})).join(\"\");let o=\"\";if(this.isStart()&&\"string\"==typeof this.#r[0]&&(1!==this.#r.length||!ft.has(this.#r[0]))){const n=pt,i=e&&n.has(r.charAt(0))||r.startsWith(\"\\\\.\")&&n.has(r.charAt(2))||r.startsWith(\"\\\\.\\\\.\")&&n.has(r.charAt(4)),s=!e&&!t&&n.has(r.charAt(0));o=i?\"(?!(?:^|/)\\\\.\\\\.?(?:$|/))\":s?ht:\"\"}let i=\"\";return this.isEnd()&&this.#t.#a&&\"!\"===this.#o?.type&&(i=\"(?:$|\\\\/)\"),[o+r+i,ut(r),this.#e=!!this.#e,this.#n]}const n=\"*\"===this.type||\"+\"===this.type,r=\"!\"===this.type?\"(?:(?!(?:\":\"(?:\";let o=this.#d(e);if(this.isStart()&&this.isEnd()&&!o&&\"!\"!==this.type){const t=this.toString();return this.#r=[t],this.type=null,this.#e=void 0,[t,ut(this.toString()),!1,!1]}let i=!n||t||e?\"\":this.#d(!0);i===o&&(i=\"\"),i&&(o=`(?:${o})(?:${i})*?`);let s=\"\";return s=\"!\"===this.type&&this.#l?(this.isStart()&&!e?ht:\"\")+yt:r+o+(\"!\"===this.type?\"))\"+(!this.isStart()||e||t?\"\":ht)+mt+\")\":\"@\"===this.type?\")\":\"?\"===this.type?\")?\":\"+\"===this.type&&i?\")\":\"*\"===this.type&&i?\")?\":`)${this.type}`),[s,ut(o),this.#e=!!this.#e,this.#n]}#d(t){return this.#r.map((e=>{if(\"string\"==typeof e)throw new Error(\"string type in extglob ast??\");const[n,r,o,i]=e.toRegExpSource(t);return this.#n=this.#n||i,n})).filter((t=>!(this.isStart()&&this.isEnd()&&!t))).join(\"|\")}static#f(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=!1,o=\"\",i=!1;for(let s=0;s2&&void 0!==arguments[2]?arguments[2]:{};return rt(e),!(!n.nocomment&&\"#\"===e.charAt(0))&&new Gt(e,n).match(t)},wt=/^\\*+([^+@!?\\*\\[\\(]*)$/,xt=t=>e=>!e.startsWith(\".\")&&e.endsWith(t),Nt=t=>e=>e.endsWith(t),Pt=t=>(t=t.toLowerCase(),e=>!e.startsWith(\".\")&&e.toLowerCase().endsWith(t)),At=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),Ot=/^\\*+\\.\\*+$/,Et=t=>!t.startsWith(\".\")&&t.includes(\".\"),Tt=t=>\".\"!==t&&\"..\"!==t&&t.includes(\".\"),jt=/^\\.\\*+$/,St=t=>\".\"!==t&&\"..\"!==t&&t.startsWith(\".\"),$t=/^\\*+$/,Ct=t=>0!==t.length&&!t.startsWith(\".\"),It=t=>0!==t.length&&\".\"!==t&&\"..\"!==t,kt=/^\\?+([^+@!?\\*\\[\\(]*)?$/,Rt=t=>{let[e,n=\"\"]=t;const r=Ut([e]);return n?(n=n.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(n)):r},Lt=t=>{let[e,n=\"\"]=t;const r=Ft([e]);return n?(n=n.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(n)):r},_t=t=>{let[e,n=\"\"]=t;const r=Ft([e]);return n?t=>r(t)&&t.endsWith(n):r},Mt=t=>{let[e,n=\"\"]=t;const r=Ut([e]);return n?t=>r(t)&&t.endsWith(n):r},Ut=t=>{let[e]=t;const n=e.length;return t=>t.length===n&&!t.startsWith(\".\")},Ft=t=>{let[e]=t;const n=e.length;return t=>t.length===n&&\".\"!==t&&\"..\"!==t},Dt=\"object\"==typeof process&&process?\"object\"==typeof process.env&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:\"posix\";bt.sep=\"win32\"===Dt?\"\\\\\":\"/\";const Bt=Symbol(\"globstar **\");bt.GLOBSTAR=Bt,bt.filter=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n=>bt(n,t,e)};const Wt=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.assign({},t,e)};bt.defaults=t=>{if(!t||\"object\"!=typeof t||!Object.keys(t).length)return bt;const e=bt;return Object.assign((function(n,r){return e(n,r,Wt(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}))}),{Minimatch:class extends e.Minimatch{constructor(e){super(e,Wt(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}))}static defaults(n){return e.defaults(Wt(t,n)).Minimatch}},AST:class extends e.AST{constructor(e,n){super(e,n,Wt(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}))}static fromGlob(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.AST.fromGlob(n,Wt(t,r))}},unescape:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.unescape(n,Wt(t,r))},escape:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.escape(n,Wt(t,r))},filter:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.filter(n,Wt(t,r))},defaults:n=>e.defaults(Wt(t,n)),makeRe:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.makeRe(n,Wt(t,r))},braceExpand:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.braceExpand(n,Wt(t,r))},match:function(n,r){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return e.match(n,r,Wt(t,o))},sep:e.sep,GLOBSTAR:Bt})};const Vt=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return rt(t),e.nobrace||!/\\{(?:(?!\\{).)*\\}/.test(t)?[t]:nt(t)};bt.braceExpand=Vt,bt.makeRe=function(t){return new Gt(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).makeRe()},bt.match=function(t,e){const n=new Gt(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{});return t=t.filter((t=>n.match(t))),n.options.nonull&&!t.length&&t.push(e),t};const zt=/[?*]|[+@!]\\(.*?\\)|\\[|\\]/;class Gt{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};rt(t),e=e||{},this.options=e,this.pattern=t,this.platform=e.platform||Dt,this.isWindows=\"win32\"===this.platform,this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||!1===e.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\\\/g,\"/\")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==e.windowsNoMagicRoot?e.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if(\"string\"!=typeof e)return!0;return!1}debug(){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&\"#\"===t.charAt(0))return void(this.comment=!0);if(!t)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=function(){return console.error(...arguments)}),this.debug(this.pattern,this.globSet);const n=this.globSet.map((t=>this.slashSplit(t)));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map(((t,e,n)=>{if(this.isWindows&&this.windowsNoMagicRoot){const e=!(\"\"!==t[0]||\"\"!==t[1]||\"?\"!==t[2]&&zt.test(t[2])||zt.test(t[3])),n=/^[a-z]:/i.test(t[0]);if(e)return[...t.slice(0,4),...t.slice(4).map((t=>this.parse(t)))];if(n)return[t[0],...t.slice(1).map((t=>this.parse(t)))]}return t.map((t=>this.parse(t)))}));if(this.debug(this.pattern,r),this.set=r.filter((t=>-1===t.indexOf(!1))),this.isWindows)for(let t=0;t=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):t=e>=1?this.levelOneOptimize(t):this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map((t=>{let e=-1;for(;-1!==(e=t.indexOf(\"**\",e+1));){let n=e;for(;\"**\"===t[n+1];)n++;n!==e&&t.splice(e,n-e)}return t}))}levelOneOptimize(t){return t.map((t=>0===(t=t.reduce(((t,e)=>{const n=t[t.length-1];return\"**\"===e&&\"**\"===n?t:\"..\"===e&&n&&\"..\"!==n&&\".\"!==n&&\"**\"!==n?(t.pop(),t):(t.push(e),t)}),[])).length?[\"\"]:t))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let n=1;nr&&n.splice(r+1,o-r);let i=n[r+1];const s=n[r+2],a=n[r+3];if(\"..\"!==i)continue;if(!s||\".\"===s||\"..\"===s||!a||\".\"===a||\"..\"===a)continue;e=!0,n.splice(r,1);const u=n.slice(0);u[r]=\"**\",t.push(u),r--}if(!this.preserveMultipleSlashes){for(let t=1;tt.length))}partsMatch(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=0,o=0,i=[],s=\"\";for(;r2&&void 0!==arguments[2]&&arguments[2];const r=this.options;if(this.isWindows){const n=\"string\"==typeof t[0]&&/^[a-z]:$/i.test(t[0]),r=!n&&\"\"===t[0]&&\"\"===t[1]&&\"?\"===t[2]&&/^[a-z]:$/i.test(t[3]),o=\"string\"==typeof e[0]&&/^[a-z]:$/i.test(e[0]),i=r?3:n?0:void 0,s=!o&&\"\"===e[0]&&\"\"===e[1]&&\"?\"===e[2]&&\"string\"==typeof e[3]&&/^[a-z]:$/i.test(e[3])?3:o?0:void 0;if(\"number\"==typeof i&&\"number\"==typeof s){const[n,r]=[t[i],e[s]];n.toLowerCase()===r.toLowerCase()&&(e[s]=n,s>i?e=e.slice(s):i>s&&(t=t.slice(i)))}}const{optimizationLevel:o=1}=this.options;o>=2&&(t=this.levelTwoFileOptimize(t)),this.debug(\"matchOne\",this,{file:t,pattern:e}),this.debug(\"matchOne\",t.length,e.length);for(var i=0,s=0,a=t.length,u=e.length;i>> no match, partial?\",t,h,e,p),h!==a))}let o;if(\"string\"==typeof c?(o=l===c,this.debug(\"string match\",c,l,o)):(o=c.test(l),this.debug(\"pattern match\",c,l,o)),!o)return!1}if(i===a&&s===u)return!0;if(i===a)return n;if(s===u)return i===a-1&&\"\"===t[i];throw new Error(\"wtf?\")}braceExpand(){return Vt(this.pattern,this.options)}parse(t){rt(t);const e=this.options;if(\"**\"===t)return Bt;if(\"\"===t)return\"\";let n,r=null;(n=t.match($t))?r=e.dot?It:Ct:(n=t.match(wt))?r=(e.nocase?e.dot?At:Pt:e.dot?Nt:xt)(n[1]):(n=t.match(kt))?r=(e.nocase?e.dot?Lt:Rt:e.dot?_t:Mt)(n):(n=t.match(Ot))?r=e.dot?Tt:Et:(n=t.match(jt))&&(r=St);const o=vt.fromGlob(t,this.options).toMMPattern();return r&&\"object\"==typeof o&&Reflect.defineProperty(o,\"test\",{value:r}),o}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;const t=this.set;if(!t.length)return this.regexp=!1,this.regexp;const e=this.options,n=e.noglobstar?\"[^/]*?\":e.dot?\"(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?\":\"(?:(?!(?:\\\\/|^)\\\\.).)*?\",r=new Set(e.nocase?[\"i\"]:[]);let o=t.map((t=>{const e=t.map((t=>{if(t instanceof RegExp)for(const e of t.flags.split(\"\"))r.add(e);return\"string\"==typeof t?t.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"):t===Bt?Bt:t._src}));return e.forEach(((t,r)=>{const o=e[r+1],i=e[r-1];t===Bt&&i!==Bt&&(void 0===i?void 0!==o&&o!==Bt?e[r+1]=\"(?:\\\\/|\"+n+\"\\\\/)?\"+o:e[r]=n:void 0===o?e[r-1]=i+\"(?:\\\\/|\"+n+\")?\":o!==Bt&&(e[r-1]=i+\"(?:\\\\/|\\\\/\"+n+\"\\\\/)\"+o,e[r+1]=Bt))})),e.filter((t=>t!==Bt)).join(\"/\")})).join(\"|\");const[i,s]=t.length>1?[\"(?:\",\")\"]:[\"\",\"\"];o=\"^\"+i+o+s+\"$\",this.negate&&(o=\"^(?!\"+o+\").+$\");try{this.regexp=new RegExp(o,[...r].join(\"\"))}catch(t){this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split(\"/\"):this.isWindows&&/^\\/\\/[^\\/]+/.test(t)?[\"\",...t.split(/\\/+/)]:t.split(/\\/+/)}match(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.partial;if(this.debug(\"match\",t,this.pattern),this.comment)return!1;if(this.empty)return\"\"===t;if(\"/\"===t&&e)return!0;const n=this.options;this.isWindows&&(t=t.split(\"\\\\\").join(\"/\"));const r=this.slashSplit(t);this.debug(this.pattern,\"split\",r);const o=this.set;this.debug(this.pattern,\"set\",o);let i=r[r.length-1];if(!i)for(let t=r.length-2;!i&&t>=0;t--)i=r[t];for(let t=0;t1&&void 0!==arguments[1]?arguments[1]:\"\"}Invalid response: ${t.status} ${t.statusText}`);return e.status=t.status,e.response=t,e}function Ht(t,e){const{status:n}=e;if(401===n&&t.digest)return e;if(n>=400)throw qt(e);return e}function Xt(t,e){return arguments.length>2&&void 0!==arguments[2]&&arguments[2]?{data:e,headers:t.headers?V(t.headers):{},status:t.status,statusText:t.statusText}:e}bt.AST=vt,bt.Minimatch=Gt,bt.escape=function(t){let{windowsPathsNoEscape:e=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e?t.replace(/[?*()[\\]]/g,\"[$&]\"):t.replace(/[?*()[\\]\\\\]/g,\"\\\\$&\")},bt.unescape=ut;const Zt=(Yt=function(t,e,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const o=tt({url:y(t.remoteURL,f(e)),method:\"COPY\",headers:{Destination:y(t.remoteURL,f(n)),Overwrite:!1===r.overwrite?\"F\":\"T\",Depth:r.shallow?\"0\":\"infinity\"}},t,r);return s=function(e){Ht(t,e)},(i=Q(o,t))&&i.then||(i=Promise.resolve(i)),s?i.then(s):i;var i,s},function(){for(var t=[],e=0;e2&&void 0!==arguments[2]?arguments[2]:te.Original;const r=Qt().get(t,e);return\"array\"===n&&!1===Array.isArray(r)?[r]:\"object\"===n&&Array.isArray(r)?r[0]:r}function ne(t){return new Promise((e=>{e(function(t){const{multistatus:e}=t;if(\"\"===e)return{multistatus:{response:[]}};if(!e)throw new Error(\"Invalid response: No root multistatus found\");const n={multistatus:Array.isArray(e)?e[0]:e};return Qt().set(n,\"multistatus.response\",ee(n,\"multistatus.response\",te.Array)),Qt().set(n,\"multistatus.response\",Qt().get(n,\"multistatus.response\").map((t=>function(t){const e=Object.assign({},t);return e.status?Qt().set(e,\"status\",ee(e,\"status\",te.Object)):(Qt().set(e,\"propstat\",ee(e,\"propstat\",te.Object)),Qt().set(e,\"propstat.prop\",ee(e,\"propstat.prop\",te.Object))),e}(t)))),n}(new Kt.XMLParser({removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1}}).parse(t)))}))}function re(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const{getlastmodified:r=null,getcontentlength:o=\"0\",resourcetype:i=null,getcontenttype:s=null,getetag:a=null}=t,u=i&&\"object\"==typeof i&&void 0!==i.collection?\"directory\":\"file\",c={filename:e,basename:l().basename(e),lastmod:r,size:parseInt(o,10),type:u,etag:\"string\"==typeof a?a.replace(/\"/g,\"\"):null};return\"file\"===u&&(c.mime=s&&\"string\"==typeof s?s.split(\";\")[0]:\"\"),n&&(void 0!==t.displayname&&(t.displayname=String(t.displayname)),c.props=t),c}function oe(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=null;try{t.multistatus.response[0].propstat&&(r=t.multistatus.response[0])}catch(t){}if(!r)throw new Error(\"Failed getting item stat: bad response\");const{propstat:{prop:o,status:i}}=r,[s,a,u]=i.split(\" \",3),c=parseInt(a,10);if(c>=400){const t=new Error(`Invalid response: ${c} ${u}`);throw t.status=c,t}return re(o,g(e),n)}function ie(t){switch(String(t)){case\"-3\":return\"unlimited\";case\"-2\":case\"-1\":return\"unknown\";default:return parseInt(String(t),10)}}function se(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}const ae=function(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const{details:r=!1}=n,o=tt({url:y(t.remoteURL,f(e)),method:\"PROPFIND\",headers:{Accept:\"text/plain,application/xml\",Depth:\"0\"}},t,n);return se(Q(o,t),(function(n){return Ht(t,n),se(n.text(),(function(t){return se(ne(t),(function(t){const o=oe(t,e,r);return Xt(n,o,r)}))}))}))}));function ue(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}const ce=le((function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=function(t){if(!t||\"/\"===t)return[];let e=t;const n=[];do{n.push(e),e=l().dirname(e)}while(e&&\"/\"!==e);return n}(g(e));r.sort(((t,e)=>t.length>e.length?1:e.length>t.length?-1:0));let o=!1;return function(t,e,n){if(\"function\"==typeof t[fe]){var r,o,i,s=t[fe]();function l(t){try{for(;!(r=s.next()).done;)if((t=e(r.value))&&t.then){if(!me(t))return void t.then(l,i||(i=de.bind(null,o=new ge,2)));t=t.v}o?de(o,1,t):o=t}catch(t){de(o||(o=new ge),2,t)}}if(l(),s.return){var a=function(t){try{r.done||s.return()}catch(t){}return t};if(o&&o.then)return o.then(a,(function(t){throw a(t)}));a()}return o}if(!(\"length\"in t))throw new TypeError(\"Object is not iterable\");for(var u=[],c=0;c2&&void 0!==arguments[2]?arguments[2]:{};if(!0===n.recursive)return ce(t,e,n);const r=tt({url:y(t.remoteURL,(o=f(e),o.endsWith(\"/\")?o:o+\"/\")),method:\"MKCOL\"},t,n);var o;return ue(Q(r,t),(function(e){Ht(t,e)}))}));var ve=n(388),be=n.n(ve);const we=function(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r={};if(\"object\"==typeof n.range&&\"number\"==typeof n.range.start){let t=`bytes=${n.range.start}-`;\"number\"==typeof n.range.end&&(t=`${t}${n.range.end}`),r.Range=t}const o=tt({url:y(t.remoteURL,f(e)),method:\"GET\",headers:r},t,n);return s=function(e){if(Ht(t,e),r.Range&&206!==e.status){const t=new Error(`Invalid response code for partial request: ${e.status}`);throw t.status=e.status,t}return n.callback&&setTimeout((()=>{n.callback(e)}),0),e.body},(i=Q(o,t))&&i.then||(i=Promise.resolve(i)),s?i.then(s):i;var i,s})),xe=()=>{},Ne=function(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=tt({url:y(t.remoteURL,f(e)),method:\"DELETE\"},t,n);return i=function(e){Ht(t,e)},(o=Q(r,t))&&o.then||(o=Promise.resolve(o)),i?o.then(i):o;var o,i})),Ae=function(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};return function(r,o){try{var i=(s=ae(t,e,n),a=function(){return!0},u?a?a(s):s:(s&&s.then||(s=Promise.resolve(s)),a?s.then(a):s))}catch(t){return o(t)}var s,a,u;return i&&i.then?i.then(void 0,o):i}(0,(function(t){if(404===t.status)return!1;throw t}))}));function Oe(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}const Ee=function(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=tt({url:y(t.remoteURL,f(e),\"/\"),method:\"PROPFIND\",headers:{Accept:\"text/plain,application/xml\",Depth:n.deep?\"infinity\":\"1\"}},t,n);return Oe(Q(r,t),(function(r){return Ht(t,r),Oe(r.text(),(function(o){if(!o)throw new Error(\"Failed parsing directory contents: Empty response\");return Oe(ne(o),(function(o){const i=d(e);let s=function(t,e,n){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];const i=l().join(e,\"/\"),{multistatus:{response:s}}=t,a=s.map((t=>{const e=function(t){try{return t.replace(/^https?:\\/\\/[^\\/]+/,\"\")}catch(t){throw new u(t,\"Failed normalising HREF\")}}(t.href),{propstat:{prop:n}}=t;return re(n,\"/\"===i?decodeURIComponent(g(e)):g(l().relative(decodeURIComponent(i),decodeURIComponent(e))),r)}));return o?a:a.filter((t=>t.basename&&(\"file\"===t.type||t.filename!==n.replace(/\\/$/,\"\"))))}(o,d(t.remoteBasePath||t.remotePath),i,n.details,n.includeSelf);return n.glob&&(s=function(t,e){return t.filter((t=>bt(t.filename,e,{matchBase:!0})))}(s,n.glob)),Xt(r,s,n.details)}))}))}))}));function Te(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=tt({url:y(t.remoteURL,f(e)),method:\"GET\",headers:{Accept:\"text/plain\"},transformResponse:[Ie]},t,n);return Se(Q(r,t),(function(e){return Ht(t,e),Se(e.text(),(function(t){return Xt(e,t,n.details)}))}))}));function Se(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}const $e=Te((function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=tt({url:y(t.remoteURL,f(e)),method:\"GET\"},t,n);return Se(Q(r,t),(function(e){let r;return Ht(t,e),function(t,e){var n=t();return n&&n.then?n.then(e):e()}((function(){return Se(e.arrayBuffer(),(function(t){r=t}))}),(function(){return Xt(e,r,n.details)}))}))})),Ce=Te((function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{format:r=\"binary\"}=n;if(\"binary\"!==r&&\"text\"!==r)throw new u({info:{code:I.InvalidOutputFormat}},`Invalid output format: ${r}`);return\"text\"===r?je(t,e,n):$e(t,e,n)})),Ie=t=>t;function ke(t){return new Kt.XMLBuilder({attributeNamePrefix:\"@_\",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(Re({lockinfo:{\"@_xmlns:d\":\"DAV:\",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:t}}},\"d\"))}function Re(t,e){const n={...t};for(const t in n)n.hasOwnProperty(t)&&(n[t]&&\"object\"==typeof n[t]&&-1===t.indexOf(\":\")?(n[`${e}:${t}`]=Re(n[t],e),delete n[t]):!1===/^@_/.test(t)&&(n[`${e}:${t}`]=n[t],delete n[t]));return n}function Le(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}function _e(t){return function(){for(var e=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const o=tt({url:y(t.remoteURL,f(e)),method:\"UNLOCK\",headers:{\"Lock-Token\":n}},t,r);return Le(Q(o,t),(function(e){if(Ht(t,e),204!==e.status&&200!==e.status)throw qt(e)}))})),Ue=_e((function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{refreshToken:r,timeout:o=Fe}=n,i={Accept:\"text/plain,application/xml\",Timeout:o};r&&(i.If=r);const s=tt({url:y(t.remoteURL,f(e)),method:\"LOCK\",headers:i,data:ke(t.contactHref)},t,n);return Le(Q(s,t),(function(e){return Ht(t,e),Le(e.text(),(function(t){const n=(i=t,new Kt.XMLParser({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(i)),r=Qt().get(n,\"prop.lockdiscovery.activelock.locktoken.href\"),o=Qt().get(n,\"prop.lockdiscovery.activelock.timeout\");var i;if(!r)throw qt(e,\"No lock token received: \");return{token:r,serverTimeout:o}}))}))})),Fe=\"Infinite, Second-4100000000\";function De(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}const Be=function(t){return function(){for(var e=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:{};const n=e.path||\"/\",r=tt({url:y(t.remoteURL,n),method:\"PROPFIND\",headers:{Accept:\"text/plain,application/xml\",Depth:\"0\"}},t,e);return De(Q(r,t),(function(n){return Ht(t,n),De(n.text(),(function(t){return De(ne(t),(function(t){const r=function(t){try{const[e]=t.multistatus.response,{propstat:{prop:{\"quota-used-bytes\":n,\"quota-available-bytes\":r}}}=e;return void 0!==n&&void 0!==r?{used:parseInt(String(n),10),available:ie(r)}:null}catch(t){}return null}(t);return Xt(n,r,e.details)}))}))}))}));function We(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}const Ve=function(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const{details:r=!1}=n,o=tt({url:y(t.remoteURL,f(e)),method:\"SEARCH\",headers:{Accept:\"text/plain,application/xml\",\"Content-Type\":t.headers[\"Content-Type\"]||\"application/xml; charset=utf-8\"}},t,n);return We(Q(o,t),(function(n){return Ht(t,n),We(n.text(),(function(t){return We(ne(t),(function(t){const o=function(t,e,n){const r={truncated:!1,results:[]};return r.truncated=t.multistatus.response.some((t=>\"507\"===(t.status||t.propstat?.status).split(\" \",3)?.[1]&&t.href.replace(/\\/$/,\"\").endsWith(f(e).replace(/\\/$/,\"\")))),t.multistatus.response.forEach((t=>{if(void 0===t.propstat)return;const e=t.href.split(\"/\").map(decodeURIComponent).join(\"/\");r.results.push(re(t.propstat.prop,e,n))})),r}(t,e,r);return Xt(n,o,r)}))}))}))})),ze=function(t){return function(){for(var e=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const o=tt({url:y(t.remoteURL,f(e)),method:\"MOVE\",headers:{Destination:y(t.remoteURL,f(n)),Overwrite:!1===r.overwrite?\"F\":\"T\"}},t,r);return s=function(e){Ht(t,e)},(i=Q(o,t))&&i.then||(i=Promise.resolve(i)),s?i.then(s):i;var i,s}));var Ge=n(172);const qe=function(t){return function(){for(var e=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const{contentLength:o=!0,overwrite:i=!0}=r,s={\"Content-Type\":\"application/octet-stream\"};!1===o||(s[\"Content-Length\"]=\"number\"==typeof o?`${o}`:`${function(t){if(H(t))return t.byteLength;if(X(t))return t.length;if(\"string\"==typeof t)return(0,Ge.d)(t);throw new u({info:{code:I.DataTypeNoLength}},\"Cannot calculate data length: Invalid type\")}(n)}`),i||(s[\"If-None-Match\"]=\"*\");const a=tt({url:y(t.remoteURL,f(e)),method:\"PUT\",headers:s,data:n},t,r);return l=function(e){try{Ht(t,e)}catch(t){const e=t;if(412!==e.status||i)throw e;return!1}return!0},(c=Q(a,t))&&c.then||(c=Promise.resolve(c)),l?c.then(l):c;var c,l})),He=function(t){return function(){for(var e=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=tt({url:y(t.remoteURL,f(e)),method:\"OPTIONS\"},t,n);return i=function(e){try{Ht(t,e)}catch(t){throw t}return{compliance:(e.headers.get(\"DAV\")??\"\").split(\",\").map((t=>t.trim())),server:e.headers.get(\"Server\")??\"\"}},(o=Q(r,t))&&o.then||(o=Promise.resolve(o)),i?o.then(i):o;var o,i}));function Xe(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}const Ze=Je((function(t,e,n,r,o){let i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(n>r||n<0)throw new u({info:{code:I.InvalidUpdateRange}},`Invalid update range ${n} for partial update`);const s={\"Content-Type\":\"application/octet-stream\",\"Content-Length\":\"\"+(r-n+1),\"Content-Range\":`bytes ${n}-${r}/*`},a=tt({url:y(t.remoteURL,f(e)),method:\"PUT\",headers:s,data:o},t,i);return Xe(Q(a,t),(function(e){Ht(t,e)}))}));function Ye(t,e){var n=t();return n&&n.then?n.then(e):e(n)}const Ke=Je((function(t,e,n,r,o){let i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(n>r||n<0)throw new u({info:{code:I.InvalidUpdateRange}},`Invalid update range ${n} for partial update`);const s={\"Content-Type\":\"application/x-sabredav-partialupdate\",\"Content-Length\":\"\"+(r-n+1),\"X-Update-Range\":`bytes=${n}-${r}`},a=tt({url:y(t.remoteURL,f(e)),method:\"PATCH\",headers:s,data:o},t,i);return Xe(Q(a,t),(function(e){Ht(t,e)}))}));function Je(t){return function(){for(var e=[],n=0;n5&&void 0!==arguments[5]?arguments[5]:{};return Xe(He(t,e,i),(function(s){let a=!1;return Ye((function(){if(s.compliance.includes(\"sabredav-partialupdate\"))return Xe(Ke(t,e,n,r,o,i),(function(t){return a=!0,t}))}),(function(c){let l=!1;return a?c:Ye((function(){if(s.server.includes(\"Apache\")&&s.compliance.includes(\"\"))return Xe(Ze(t,e,n,r,o,i),(function(t){return l=!0,t}))}),(function(t){if(l)return t;throw new u({info:{code:I.NotSupported}},\"Not supported\")}))}))}))})),tn=\"https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md\";function en(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{authType:n=null,remoteBasePath:r,contactHref:o=tn,ha1:i,headers:s={},httpAgent:a,httpsAgent:c,password:l,token:h,username:p,withCredentials:d}=e;let g=n;g||(g=p||l?C.Password:C.None);const v={authType:g,remoteBasePath:r,contactHref:o,ha1:i,headers:Object.assign({},s),httpAgent:a,httpsAgent:c,password:l,remotePath:m(t),remoteURL:t,token:h,username:p,withCredentials:d};return k(v,p,l,h,i),{copyFile:(t,e,n)=>Zt(v,t,e,n),createDirectory:(t,e)=>ye(v,t,e),createReadStream:(t,e)=>function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=new(0,be().PassThrough);return we(t,e,n).then((t=>{t.pipe(r)})).catch((t=>{r.emit(\"error\",t)})),r}(v,t,e),createWriteStream:(t,e,n)=>function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:xe;const o=new(0,be().PassThrough),i={};!1===n.overwrite&&(i[\"If-None-Match\"]=\"*\");const s=tt({url:y(t.remoteURL,f(e)),method:\"PUT\",headers:i,data:o,maxRedirects:0},t,n);return Q(s,t).then((e=>Ht(t,e))).then((t=>{setTimeout((()=>{r(t)}),0)})).catch((t=>{o.emit(\"error\",t)})),o}(v,t,e,n),customRequest:(t,e)=>Ne(v,t,e),deleteFile:(t,e)=>Pe(v,t,e),exists:(t,e)=>Ae(v,t,e),getDirectoryContents:(t,e)=>Ee(v,t,e),getFileContents:(t,e)=>Ce(v,t,e),getFileDownloadLink:t=>function(t,e){let n=y(t.remoteURL,f(e));const r=/^https:/i.test(n)?\"https\":\"http\";switch(t.authType){case C.None:break;case C.Password:{const e=O(t.headers.Authorization.replace(/^Basic /i,\"\").trim());n=n.replace(/^https?:\\/\\//,`${r}://${e}@`);break}default:throw new u({info:{code:I.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return n}(v,t),getFileUploadLink:t=>function(t,e){let n=`${y(t.remoteURL,f(e))}?Content-Type=application/octet-stream`;const r=/^https:/i.test(n)?\"https\":\"http\";switch(t.authType){case C.None:break;case C.Password:{const e=O(t.headers.Authorization.replace(/^Basic /i,\"\").trim());n=n.replace(/^https?:\\/\\//,`${r}://${e}@`);break}default:throw new u({info:{code:I.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return n}(v,t),getHeaders:()=>Object.assign({},v.headers),getQuota:t=>Be(v,t),lock:(t,e)=>Ue(v,t,e),moveFile:(t,e,n)=>ze(v,t,e,n),putFileContents:(t,e,n)=>qe(v,t,e,n),partialUpdateFileContents:(t,e,n,r,o)=>Qe(v,t,e,n,r,o),getDAVCompliance:t=>He(v,t),search:(t,e)=>Ve(v,t,e),setHeaders:t=>{v.headers=Object.assign({},t)},stat:(t,e)=>ae(v,t,e),unlock:(t,e,n)=>Me(v,t,e,n)}}var nn=r.hT,rn=r.O4,on=r.Kd,sn=r.YK,an=r.UU,un=r.Gu,cn=r.ky,ln=r.h4,hn=r.ch,pn=r.hq,fn=r.i5;export{nn as AuthType,rn as ErrorCode,on as Request,sn as Response,an as createClient,un as getPatcher,cn as parseStat,ln as parseXML,hn as prepareFileFromProps,pn as processResponsePayload,fn as translateDiskSpace};","import { loadState } from \"@nextcloud/initial-state\";\nfunction isPublicShare() {\n return loadState(\"files_sharing\", \"isPublic\", null) ?? document.querySelector(\n 'input#isPublic[type=\"hidden\"][name=\"isPublic\"][value=\"1\"]'\n ) !== null;\n}\nfunction getSharingToken() {\n return loadState(\"files_sharing\", \"sharingToken\", null) ?? document.querySelector('input#sharingToken[type=\"hidden\"]')?.value ?? null;\n}\nexport {\n getSharingToken,\n isPublicShare\n};\n","import { join, basename, extname, dirname } from \"path\";\nimport { encodePath } from \"@nextcloud/paths\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { CancelablePromise } from \"cancelable-promise\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/files\").detectUser().build();\nvar Permission = /* @__PURE__ */ ((Permission2) => {\n Permission2[Permission2[\"NONE\"] = 0] = \"NONE\";\n Permission2[Permission2[\"CREATE\"] = 4] = \"CREATE\";\n Permission2[Permission2[\"READ\"] = 1] = \"READ\";\n Permission2[Permission2[\"UPDATE\"] = 2] = \"UPDATE\";\n Permission2[Permission2[\"DELETE\"] = 8] = \"DELETE\";\n Permission2[Permission2[\"SHARE\"] = 16] = \"SHARE\";\n Permission2[Permission2[\"ALL\"] = 31] = \"ALL\";\n return Permission2;\n})(Permission || {});\nvar FileType = /* @__PURE__ */ ((FileType2) => {\n FileType2[\"Folder\"] = \"folder\";\n FileType2[\"File\"] = \"file\";\n return FileType2;\n})(FileType || {});\nconst isDavResource = function(source, davService) {\n return source.match(davService) !== null;\n};\nconst validateData = (data, davService) => {\n if (data.id && typeof data.id !== \"number\") {\n throw new Error(\"Invalid id type of value\");\n }\n if (!data.source) {\n throw new Error(\"Missing mandatory source\");\n }\n try {\n new URL(data.source);\n } catch (e) {\n throw new Error(\"Invalid source format, source must be a valid URL\");\n }\n if (!data.source.startsWith(\"http\")) {\n throw new Error(\"Invalid source format, only http(s) is supported\");\n }\n if (data.displayname && typeof data.displayname !== \"string\") {\n throw new Error(\"Invalid displayname type\");\n }\n if (data.mtime && !(data.mtime instanceof Date)) {\n throw new Error(\"Invalid mtime type\");\n }\n if (data.crtime && !(data.crtime instanceof Date)) {\n throw new Error(\"Invalid crtime type\");\n }\n if (!data.mime || typeof data.mime !== \"string\" || !data.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi)) {\n throw new Error(\"Missing or invalid mandatory mime\");\n }\n if (\"size\" in data && typeof data.size !== \"number\" && data.size !== void 0) {\n throw new Error(\"Invalid size type\");\n }\n if (\"permissions\" in data && data.permissions !== void 0 && !(typeof data.permissions === \"number\" && data.permissions >= Permission.NONE && data.permissions <= Permission.ALL)) {\n throw new Error(\"Invalid permissions\");\n }\n if (data.owner && data.owner !== null && typeof data.owner !== \"string\") {\n throw new Error(\"Invalid owner type\");\n }\n if (data.attributes && typeof data.attributes !== \"object\") {\n throw new Error(\"Invalid attributes type\");\n }\n if (data.root && typeof data.root !== \"string\") {\n throw new Error(\"Invalid root type\");\n }\n if (data.root && !data.root.startsWith(\"/\")) {\n throw new Error(\"Root must start with a leading slash\");\n }\n if (data.root && !data.source.includes(data.root)) {\n throw new Error(\"Root must be part of the source\");\n }\n if (data.root && isDavResource(data.source, davService)) {\n const service = data.source.match(davService)[0];\n if (!data.source.includes(join(service, data.root))) {\n throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n }\n }\n if (data.status && !Object.values(NodeStatus).includes(data.status)) {\n throw new Error(\"Status must be a valid NodeStatus\");\n }\n};\nvar NodeStatus = /* @__PURE__ */ ((NodeStatus2) => {\n NodeStatus2[\"NEW\"] = \"new\";\n NodeStatus2[\"FAILED\"] = \"failed\";\n NodeStatus2[\"LOADING\"] = \"loading\";\n NodeStatus2[\"LOCKED\"] = \"locked\";\n return NodeStatus2;\n})(NodeStatus || {});\nclass Node {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n readonlyAttributes = Object.entries(Object.getOwnPropertyDescriptors(Node.prototype)).filter((e) => typeof e[1].get === \"function\" && e[0] !== \"__proto__\").map((e) => e[0]);\n handler = {\n set: (target, prop, value) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.set(target, prop, value);\n },\n deleteProperty: (target, prop) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.deleteProperty(target, prop);\n },\n // TODO: This is deprecated and only needed for files v3\n get: (target, prop, receiver) => {\n if (this.readonlyAttributes.includes(prop)) {\n logger.warn(`Accessing \"Node.attributes.${prop}\" is deprecated, access it directly on the Node instance.`);\n return Reflect.get(this, prop);\n }\n return Reflect.get(target, prop, receiver);\n }\n };\n constructor(data, davService) {\n validateData(data, davService || this._knownDavService);\n this._data = {\n // TODO: Remove with next major release, this is just for compatibility\n displayname: data.attributes?.displayname,\n ...data,\n attributes: {}\n };\n this._attributes = new Proxy(this._data.attributes, this.handler);\n this.update(data.attributes ?? {});\n if (davService) {\n this._knownDavService = davService;\n }\n }\n /**\n * Get the source url to this object\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get source() {\n return this._data.source.replace(/\\/$/i, \"\");\n }\n /**\n * Get the encoded source url to this object for requests purposes\n */\n get encodedSource() {\n const { origin } = new URL(this.source);\n return origin + encodePath(this.source.slice(origin.length));\n }\n /**\n * Get this object name\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get basename() {\n return basename(this.source);\n }\n /**\n * The nodes displayname\n * By default the display name and the `basename` are identical,\n * but it is possible to have a different name. This happens\n * on the files app for example for shared folders.\n */\n get displayname() {\n return this._data.displayname || this.basename;\n }\n /**\n * Set the displayname\n */\n set displayname(displayname) {\n this._data.displayname = displayname;\n }\n /**\n * Get this object's extension\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get extension() {\n return extname(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n *\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get dirname() {\n if (this.root) {\n let source = this.source;\n if (this.isDavResource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return dirname(source.slice(firstMatch + root.length) || \"/\");\n }\n const url = new URL(this.source);\n return dirname(url.pathname);\n }\n /**\n * Get the file mime\n * There is no setter as the mime is not meant to be changed\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Set the file modification time\n */\n set mtime(mtime) {\n this._data.mtime = mtime;\n }\n /**\n * Get the file creation time\n * There is no setter as the creation time is not meant to be changed\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Set the file size\n */\n set size(size) {\n this.updateMtime();\n this._data.size = size;\n }\n /**\n * Get the file attribute\n * This contains all additional attributes not provided by the Node class\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n if (this.owner === null && !this.isDavResource) {\n return Permission.READ;\n }\n return this._data.permissions !== void 0 ? this._data.permissions : Permission.NONE;\n }\n /**\n * Set the file permissions\n */\n set permissions(permissions) {\n this.updateMtime();\n this._data.permissions = permissions;\n }\n /**\n * Get the file owner\n * There is no setter as the owner is not meant to be changed\n */\n get owner() {\n if (!this.isDavResource) {\n return null;\n }\n return this._data.owner;\n }\n /**\n * Is this a dav-related resource ?\n */\n get isDavResource() {\n return isDavResource(this.source, this._knownDavService);\n }\n /**\n * @deprecated use `isDavResource` instead - will be removed in next major version.\n */\n get isDavRessource() {\n return this.isDavResource;\n }\n /**\n * Get the dav root of this object\n * There is no setter as the root is not meant to be changed\n */\n get root() {\n if (this._data.root) {\n return this._data.root.replace(/^(.+)\\/$/, \"$1\");\n }\n if (this.isDavResource) {\n const root = dirname(this.source);\n return root.split(this._knownDavService).pop() || null;\n }\n return null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n let source = this.source;\n if (this.isDavResource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return source.slice(firstMatch + root.length) || \"/\";\n }\n return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n }\n /**\n * Get the node id if defined.\n * There is no setter as the fileid is not meant to be changed\n */\n get fileid() {\n return this._data?.id;\n }\n /**\n * Get the node status.\n */\n get status() {\n return this._data?.status;\n }\n /**\n * Set the node status.\n */\n set status(status) {\n this._data.status = status;\n }\n /**\n * Get the node data\n */\n get data() {\n return structuredClone(this._data);\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(destination) {\n validateData({ ...this._data, source: destination }, this._knownDavService);\n const oldBasename = this.basename;\n this._data.source = destination;\n if (this.displayname === oldBasename && this.basename !== oldBasename) {\n this.displayname = this.basename;\n }\n this.updateMtime();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n *\n * @param basename The new name of the node\n */\n rename(basename2) {\n if (basename2.includes(\"/\")) {\n throw new Error(\"Invalid basename\");\n }\n this.move(dirname(this.source) + \"/\" + basename2);\n }\n /**\n * Update the mtime if exists\n */\n updateMtime() {\n if (this._data.mtime) {\n this._data.mtime = /* @__PURE__ */ new Date();\n }\n }\n /**\n * Update the attributes of the node\n * Warning, updating attributes will NOT automatically update the mtime.\n *\n * @param attributes The new attributes to update on the Node attributes\n */\n update(attributes) {\n for (const [name, value] of Object.entries(attributes)) {\n try {\n if (value === void 0) {\n delete this.attributes[name];\n } else {\n this.attributes[name] = value;\n }\n } catch (e) {\n if (e instanceof TypeError) {\n continue;\n }\n throw e;\n }\n }\n }\n}\nclass File extends Node {\n get type() {\n return FileType.File;\n }\n /**\n * Returns a clone of the file\n */\n clone() {\n return new File(this.data);\n }\n}\nclass Folder extends Node {\n constructor(data) {\n super({\n ...data,\n mime: \"httpd/unix-directory\"\n });\n }\n get type() {\n return FileType.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return \"httpd/unix-directory\";\n }\n /**\n * Returns a clone of the folder\n */\n clone() {\n return new Folder(this.data);\n }\n}\nconst parsePermissions = function(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"C\") || permString.includes(\"K\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\") || permString.includes(\"N\") || permString.includes(\"V\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n};\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nconst registerDavProperty = function(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n if (typeof window._nc_dav_properties === \"undefined\") {\n window._nc_dav_properties = [...defaultDavProperties];\n window._nc_dav_namespaces = { ...defaultDavNamespaces };\n }\n const namespaces = { ...window._nc_dav_namespaces, ...namespace };\n if (window._nc_dav_properties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n window._nc_dav_properties.push(prop);\n window._nc_dav_namespaces = namespaces;\n return true;\n};\nconst getDavProperties = function() {\n if (typeof window._nc_dav_properties === \"undefined\") {\n window._nc_dav_properties = [...defaultDavProperties];\n }\n return window._nc_dav_properties.map((prop) => `<${prop} />`).join(\" \");\n};\nconst getDavNameSpaces = function() {\n if (typeof window._nc_dav_namespaces === \"undefined\") {\n window._nc_dav_namespaces = { ...defaultDavNamespaces };\n }\n return Object.keys(window._nc_dav_namespaces).map((ns) => `xmlns:${ns}=\"${window._nc_dav_namespaces?.[ns]}\"`).join(\" \");\n};\nconst getDefaultPropfind = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n};\nconst getFavoritesReport = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n};\nconst getRecentSearch = function(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n};\nfunction getRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nconst getClient = function(remoteURL = defaultRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n};\nconst getFavoriteNodes = (davClient, path = \"/\", davRoot = defaultRootPath) => {\n const controller = new AbortController();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const contentsResponse = await davClient.getDirectoryContents(`${davRoot}${path}`, {\n signal: controller.signal,\n details: true,\n data: getFavoritesReport(),\n headers: {\n // see getClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n const nodes = contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n resolve(nodes);\n } catch (error) {\n reject(error);\n }\n });\n};\nconst resultToNode = function(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = parsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const mtime = new Date(Date.parse(node.lastmod));\n const crtime = new Date(Date.parse(props.creationdate));\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n};\nexport {\n FileType as F,\n Node as N,\n Permission as P,\n getRemoteURL as a,\n defaultRemoteURL as b,\n getClient as c,\n defaultRootPath as d,\n getFavoriteNodes as e,\n defaultDavProperties as f,\n getRootPath as g,\n defaultDavNamespaces as h,\n registerDavProperty as i,\n getDavProperties as j,\n getDavNameSpaces as k,\n getDefaultPropfind as l,\n getFavoritesReport as m,\n getRecentSearch as n,\n logger as o,\n parsePermissions as p,\n File as q,\n resultToNode as r,\n Folder as s,\n NodeStatus as t\n};\n","import { o as logger } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator$2 = {};\nvar util$3 = {};\n(function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a2, arrayMode) {\n if (a2) {\n const keys = Object.keys(a2);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n if (arrayMode === \"strict\") {\n target[keys[i2]] = [a2[keys[i2]]];\n } else {\n target[keys[i2]] = a2[keys[i2]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n})(util$3);\nconst util$2 = util$3;\nconst defaultOptions$2 = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n};\nvalidator$2.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions$2, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && xmlData[i2 + 1] === \"?\") {\n i2 += 2;\n i2 = readPI(xmlData, i2);\n if (i2.err) return i2;\n } else if (xmlData[i2] === \"<\") {\n let tagStartPos = i2;\n i2++;\n if (xmlData[i2] === \"!\") {\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i2] === \"/\") {\n closingTag = true;\n i2++;\n }\n let tagName = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== \">\" && xmlData[i2] !== \" \" && xmlData[i2] !== \"\t\" && xmlData[i2] !== \"\\n\" && xmlData[i2] !== \"\\r\"; i2++) {\n tagName += xmlData[i2];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i2--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i2));\n }\n const result = readAttributeStr(xmlData, i2);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i2));\n }\n let attrStr = result.value;\n i2 = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i2 - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i2));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i2 - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i2));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i2++; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"!\") {\n i2++;\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else if (xmlData[i2 + 1] === \"?\") {\n i2 = readPI(xmlData, ++i2);\n if (i2.err) return i2;\n } else {\n break;\n }\n } else if (xmlData[i2] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i2);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i2));\n i2 = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i2])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i2));\n }\n }\n }\n if (xmlData[i2] === \"<\") {\n i2--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i2])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i2] + \"' is not expected.\", getLineNumberForPosition(xmlData, i2));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t3) => t3.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n};\nfunction isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n}\nfunction readPI(xmlData, i2) {\n const start = i2;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] == \"?\" || xmlData[i2] == \" \") {\n const tagname = xmlData.substr(start, i2 - start);\n if (i2 > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i2));\n } else if (xmlData[i2] == \"?\" && xmlData[i2 + 1] == \">\") {\n i2++;\n break;\n } else {\n continue;\n }\n }\n }\n return i2;\n}\nfunction readCommentAndCDATA(xmlData, i2) {\n if (xmlData.length > i2 + 5 && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \"-\") {\n for (i2 += 3; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"-\" && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n } else if (xmlData.length > i2 + 8 && xmlData[i2 + 1] === \"D\" && xmlData[i2 + 2] === \"O\" && xmlData[i2 + 3] === \"C\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"Y\" && xmlData[i2 + 6] === \"P\" && xmlData[i2 + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i2] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i2 + 9 && xmlData[i2 + 1] === \"[\" && xmlData[i2 + 2] === \"C\" && xmlData[i2 + 3] === \"D\" && xmlData[i2 + 4] === \"A\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"A\" && xmlData[i2 + 7] === \"[\") {\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"]\" && xmlData[i2 + 1] === \"]\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n }\n return i2;\n}\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\nfunction readAttributeStr(xmlData, i2) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === doubleQuote || xmlData[i2] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i2];\n } else if (startChar !== xmlData[i2]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i2] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i2];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i2,\n tagClosed\n };\n}\nconst validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction validateAttributeString(attrStr, options) {\n const matches = util$2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i2 = 0; i2 < matches.length; i2++) {\n if (matches[i2][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] !== void 0 && matches[i2][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' is without value.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i2][2] + \"' is not allowed.\", getPositionFromMatch(matches[i2]));\n }\n const attrName = matches[i2][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i2]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i2]));\n }\n }\n return true;\n}\nfunction validateNumberAmpersand(xmlData, i2) {\n let re2 = /\\d/;\n if (xmlData[i2] === \"x\") {\n i2++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \";\")\n return i2;\n if (!xmlData[i2].match(re2))\n break;\n }\n return -1;\n}\nfunction validateAmpersand(xmlData, i2) {\n i2++;\n if (xmlData[i2] === \";\")\n return -1;\n if (xmlData[i2] === \"#\") {\n i2++;\n return validateNumberAmpersand(xmlData, i2);\n }\n let count = 0;\n for (; i2 < xmlData.length; i2++, count++) {\n if (xmlData[i2].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i2] === \";\")\n break;\n return -1;\n }\n return i2;\n}\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n}\nfunction validateAttrName(attrName) {\n return util$2.isName(attrName);\n}\nfunction validateTagName(tagname) {\n return util$2.isName(tagname);\n}\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\nvar OptionsBuilder = {};\nconst defaultOptions$1 = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val2) {\n return val2;\n },\n attributeValueProcessor: function(attrName, val2) {\n return val2;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n};\nconst buildOptions$1 = function(options) {\n return Object.assign({}, defaultOptions$1, options);\n};\nOptionsBuilder.buildOptions = buildOptions$1;\nOptionsBuilder.defaultOptions = defaultOptions$1;\nclass XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val2) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val2 });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n}\nvar xmlNode$1 = XmlNode;\nconst util$1 = util$3;\nfunction readDocType$1(xmlData, i2) {\n const entities = {};\n if (xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"C\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"Y\" && xmlData[i2 + 7] === \"P\" && xmlData[i2 + 8] === \"E\") {\n i2 = i2 + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i2)) {\n i2 += 7;\n [entityName, val, i2] = readEntityExp(xmlData, i2 + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i2)) i2 += 8;\n else if (hasBody && isAttlist(xmlData, i2)) i2 += 8;\n else if (hasBody && isNotation(xmlData, i2)) i2 += 9;\n else if (isComment) comment = true;\n else throw new Error(\"Invalid DOCTYPE\");\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i2] === \">\") {\n if (comment) {\n if (xmlData[i2 - 1] === \"-\" && xmlData[i2 - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i2] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i2];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i: i2 };\n}\nfunction readEntityExp(xmlData, i2) {\n let entityName2 = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName2 += xmlData[i2];\n }\n entityName2 = entityName2.trim();\n if (entityName2.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val2 = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val2 += xmlData[i2];\n }\n return [entityName2, val2, i2];\n}\nfunction isComment(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"-\" && xmlData[i2 + 3] === \"-\") return true;\n return false;\n}\nfunction isEntity(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"N\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"I\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"Y\") return true;\n return false;\n}\nfunction isElement(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"L\" && xmlData[i2 + 4] === \"E\" && xmlData[i2 + 5] === \"M\" && xmlData[i2 + 6] === \"E\" && xmlData[i2 + 7] === \"N\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n}\nfunction isAttlist(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"A\" && xmlData[i2 + 3] === \"T\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"L\" && xmlData[i2 + 6] === \"I\" && xmlData[i2 + 7] === \"S\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n}\nfunction isNotation(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"N\" && xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"A\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"I\" && xmlData[i2 + 8] === \"O\" && xmlData[i2 + 9] === \"N\") return true;\n return false;\n}\nfunction validateEntityName(name) {\n if (util$1.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\nvar DocTypeReader = readDocType$1;\nconst hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\nconst consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n};\nfunction toNumber$1(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n}\nfunction trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n}\nvar strnum = toNumber$1;\nfunction getIgnoreAttributesFn$2(ignoreAttributes2) {\n if (typeof ignoreAttributes2 === \"function\") {\n return ignoreAttributes2;\n }\n if (Array.isArray(ignoreAttributes2)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes2) {\n if (typeof pattern === \"string\" && attrName === pattern) {\n return true;\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true;\n }\n }\n };\n }\n return () => false;\n}\nvar ignoreAttributes = getIgnoreAttributesFn$2;\nconst util = util$3;\nconst xmlNode = xmlNode$1;\nconst readDocType = DocTypeReader;\nconst toNumber = strnum;\nconst getIgnoreAttributesFn$1 = ignoreAttributes;\nlet OrderedObjParser$1 = class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue$1;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn$1(this.options.ignoreAttributes);\n }\n};\nfunction addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i2 = 0; i2 < entKeys.length; i2++) {\n const ent = entKeys[i2];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n}\nfunction parseTextData(val2, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val2 !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val2 = val2.trim();\n }\n if (val2.length > 0) {\n if (!escapeEntities) val2 = this.replaceEntitiesValue(val2);\n const newval = this.options.tagValueProcessor(tagName, val2, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val2;\n } else if (typeof newval !== typeof val2 || newval !== val2) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val2.trim();\n if (trimmedVal === val2) {\n return parseValue(val2, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val2;\n }\n }\n }\n }\n}\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\nconst attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i2 = 0; i2 < len; i2++) {\n const attrName = this.resolveNameSpace(matches[i2][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue;\n }\n let oldVal = matches[i2][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n const ch = xmlData[i2];\n if (ch === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i2, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i2 = tagData.closeIndex + 1;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i2 + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i2 + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i2 = endIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i2);\n this.docTypeEntities = result.entities;\n i2 = result.i;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i2 + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val2 = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val2 == void 0) val2 = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val2);\n }\n i2 = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i2, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i2 = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i2 = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i2 = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i2 = closeIndex;\n }\n }\n } else {\n textData += xmlData[i2];\n }\n }\n return xmlObj.child;\n};\nfunction addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n}\nconst replaceEntitiesValue$1 = function(val2) {\n if (this.options.processEntities) {\n for (let entityName2 in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName2];\n val2 = val2.replace(entity.regx, entity.val);\n }\n for (let entityName2 in this.lastEntities) {\n const entity = this.lastEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName2 in this.htmlEntities) {\n const entity = this.htmlEntities[entityName2];\n val2 = val2.replace(entity.regex, entity.val);\n }\n }\n val2 = val2.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val2;\n};\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\nfunction isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n}\nfunction tagExpWithClosingIndex(xmlData, i2, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i2; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n}\nfunction findClosingIndex(xmlData, str, i2, errMsg) {\n const closingIndex = xmlData.indexOf(str, i2);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n}\nfunction readTagExp(xmlData, i2, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i2 + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n}\nfunction readStopNodeData(xmlData, tagName, i2) {\n const startIndex = i2;\n let openTagCount = 1;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i2),\n i: closeIndex\n };\n }\n }\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i2 + 1, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i2 + 3, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"StopNode is not closed.\") - 2;\n i2 = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i2, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i2 = tagData.closeIndex;\n }\n }\n }\n }\n}\nfunction parseValue(val2, shouldParse, options) {\n if (shouldParse && typeof val2 === \"string\") {\n const newval = val2.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val2, options);\n } else {\n if (util.isExist(val2)) {\n return val2;\n } else {\n return \"\";\n }\n }\n}\nvar OrderedObjParser_1 = OrderedObjParser$1;\nvar node2json = {};\nfunction prettify$1(node, options) {\n return compress(node, options);\n}\nfunction compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const property = propName$1(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val2 = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val2, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val2, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val2).length === 1 && val2[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val2 = val2[options.textNodeName];\n } else if (Object.keys(val2).length === 0) {\n if (options.alwaysCreateTextNode) val2[options.textNodeName] = \"\";\n else val2 = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val2);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val2];\n } else {\n compressedObj[property] = val2;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\nfunction propName$1(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (key !== \":@\") return key;\n }\n}\nfunction assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n const atrrName = keys[i2];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\nfunction isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n}\nnode2json.prettify = prettify$1;\nconst { buildOptions } = OptionsBuilder;\nconst OrderedObjParser2 = OrderedObjParser_1;\nconst { prettify } = node2json;\nconst validator$1 = validator$2;\nlet XMLParser$1 = class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator$1.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser2(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n};\nvar XMLParser_1 = XMLParser$1;\nconst EOL = \"\\n\";\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n}\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i2 = 0; i2 < options.entities.length; i2++) {\n const entity = options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nvar orderedJs2Xml = toXml;\nconst buildFromOrderedJs = orderedJs2Xml;\nconst getIgnoreAttributesFn = ignoreAttributes;\nconst defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a2) {\n return a2;\n },\n attributeValueProcessor: function(attrName, a2) {\n return a2;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n}\nBuilder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0, []).val;\n }\n};\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val2 = \"\";\n const jPath = ajPath.join(\".\");\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val2 += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val2 += \"\";\n } else if (key[0] === \"?\") {\n val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else if (!attr) {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val2 += this.replaceEntitiesValue(newval);\n } else {\n val2 += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j2 = 0; j2 < arrLen; j2++) {\n const item = jObj[key][j2];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val2 += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val2 += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val2 += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j2 = 0; j2 < L; j2++) {\n attrStr += this.buildAttrPairStr(Ks[j2], \"\" + jObj[key][Ks[j2]]);\n }\n } else {\n val2 += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val: val2 };\n};\nBuilder.prototype.buildAttrPairStr = function(attrName, val2) {\n val2 = this.options.attributeValueProcessor(attrName, \"\" + val2);\n val2 = this.replaceEntitiesValue(val2);\n if (this.options.suppressBooleanAttributes && val2 === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val2 + '\"';\n};\nfunction processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\nBuilder.prototype.buildObjectNode = function(val2, key, attrStr, level) {\n if (val2 === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"\" + val2 + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val2 + this.indentate(level) + tagEndExp;\n }\n }\n};\nBuilder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val2);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \" 0 && this.options.processEntities) {\n for (let i2 = 0; i2 < this.options.entities.length; i2++) {\n const entity = this.options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n};\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\nfunction isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}\nvar json2xml = Builder;\nconst validator = validator$2;\nconst XMLParser2 = XMLParser_1;\nconst XMLBuilder = json2xml;\nvar fxp = {\n XMLParser: XMLParser2,\n XMLValidator: validator,\n XMLBuilder\n};\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxp.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxp.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nconst debug$1 = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n};\nvar debug_1 = debug$1;\nconst SEMVER_SPEC_VERSION = \"2.0.0\";\nconst MAX_LENGTH$1 = 256;\nconst MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n9007199254740991;\nconst MAX_SAFE_COMPONENT_LENGTH = 16;\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;\nconst RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n];\nvar constants = {\n MAX_LENGTH: MAX_LENGTH$1,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n};\nvar re$1 = { exports: {} };\n(function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH: MAX_SAFE_COMPONENT_LENGTH2,\n MAX_SAFE_BUILD_LENGTH: MAX_SAFE_BUILD_LENGTH2,\n MAX_LENGTH: MAX_LENGTH2\n } = constants;\n const debug2 = debug_1;\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t3 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH2],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH2]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug2(name, index, value);\n t3[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t3.NUMERICIDENTIFIER]})\\\\.(${src[t3.NUMERICIDENTIFIER]})\\\\.(${src[t3.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t3.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t3.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t3.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t3.NUMERICIDENTIFIER]}|${src[t3.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t3.NUMERICIDENTIFIERLOOSE]}|${src[t3.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t3.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t3.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t3.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t3.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t3.BUILDIDENTIFIER]}(?:\\\\.${src[t3.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t3.MAINVERSION]}${src[t3.PRERELEASE]}?${src[t3.BUILD]}?`);\n createToken(\"FULL\", `^${src[t3.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t3.MAINVERSIONLOOSE]}${src[t3.PRERELEASELOOSE]}?${src[t3.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t3.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t3.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t3.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t3.XRANGEIDENTIFIER]})(?:\\\\.(${src[t3.XRANGEIDENTIFIER]})(?:\\\\.(${src[t3.XRANGEIDENTIFIER]})(?:${src[t3.PRERELEASE]})?${src[t3.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t3.XRANGEIDENTIFIERLOOSE]})(?:${src[t3.PRERELEASELOOSE]})?${src[t3.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t3.GTLT]}\\\\s*${src[t3.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t3.GTLT]}\\\\s*${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH2}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH2}}))?`);\n createToken(\"COERCE\", `${src[t3.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t3.COERCEPLAIN] + `(?:${src[t3.PRERELEASE]})?(?:${src[t3.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t3.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t3.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t3.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t3.LONETILDE]}${src[t3.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t3.LONETILDE]}${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t3.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t3.LONECARET]}${src[t3.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t3.LONECARET]}${src[t3.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t3.GTLT]}\\\\s*(${src[t3.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t3.GTLT]}\\\\s*(${src[t3.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t3.GTLT]}\\\\s*(${src[t3.LOOSEPLAIN]}|${src[t3.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t3.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t3.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t3.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t3.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n})(re$1, re$1.exports);\nvar reExports = re$1.exports;\nconst looseOption = Object.freeze({ loose: true });\nconst emptyOpts = Object.freeze({});\nconst parseOptions$1 = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n};\nvar parseOptions_1 = parseOptions$1;\nconst numeric = /^[0-9]+$/;\nconst compareIdentifiers$1 = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n};\nconst rcompareIdentifiers = (a2, b2) => compareIdentifiers$1(b2, a2);\nvar identifiers = {\n compareIdentifiers: compareIdentifiers$1,\n rcompareIdentifiers\n};\nconst debug = debug_1;\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = constants;\nconst { safeRe: re, t: t2 } = reExports;\nconst parseOptions = parseOptions_1;\nconst { compareIdentifiers } = identifiers;\nlet SemVer$2 = class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re[t2.LOOSE] : re[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n};\nvar semver = SemVer$2;\nconst SemVer$1 = semver;\nconst parse$1 = (version, options, throwErrors = false) => {\n if (version instanceof SemVer$1) {\n return version;\n }\n try {\n return new SemVer$1(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n};\nvar parse_1 = parse$1;\nconst parse = parse_1;\nconst valid = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n};\nvar valid_1 = valid;\nconst valid$1 = /* @__PURE__ */ getDefaultExportFromCjs(valid_1);\nconst SemVer2 = semver;\nconst major = (a2, loose) => new SemVer2(a2, loose).major;\nvar major_1 = major;\nconst major$1 = /* @__PURE__ */ getDefaultExportFromCjs(major_1);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid$1(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major$1(bus2.getVersion()) !== major$1(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h2) => {\n try {\n h2(event);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;","'use strict';\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;","const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n \n //read EntityName\n let entityName = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n // if(xmlData[i] === \" \") continue;\n // else \n entityName += xmlData[i];\n }\n entityName = entityName.trim();\n if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n //read Entity Value\n const startChar = xmlData[i++];\n let val = \"\"\n for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n val += xmlData[i];\n }\n return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === '-' &&\n xmlData[i+3] === '-') return true\n return false\n}\nfunction isEntity(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'N' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'I' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'Y') return true\n return false\n}\nfunction isElement(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'L' &&\n xmlData[i+4] === 'E' &&\n xmlData[i+5] === 'M' &&\n xmlData[i+6] === 'E' &&\n xmlData[i+7] === 'N' &&\n xmlData[i+8] === 'T') return true\n return false\n}\n\nfunction isAttlist(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'A' &&\n xmlData[i+3] === 'T' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'L' &&\n xmlData[i+6] === 'I' &&\n xmlData[i+7] === 'S' &&\n xmlData[i+8] === 'T') return true\n return false\n}\nfunction isNotation(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'N' &&\n xmlData[i+3] === 'O' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'A' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'I' &&\n xmlData[i+8] === 'O' &&\n xmlData[i+9] === 'N') return true\n return false\n}\n\nfunction validateEntityName(name){\n if (util.isName(name))\n\treturn name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\n \nconst consider = {\n hex : true,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true\n //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n // const options = Object.assign({}, consider);\n // if(opt.leadingZeros === false){\n // options.leadingZeros = false;\n // }else if(opt.hex === false){\n // options.hex = false;\n // }\n\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n // if(trimmedStr === \"0.0\") return 0;\n // else if(trimmedStr === \"+0.0\") return 0;\n // else if(trimmedStr === \"-0.0\") return -0;\n\n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n // } else if (options.parseOct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n if(match){\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n //trim ending zeros for floating number\n \n const eNotation = match[4] || match[6];\n if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(eNotation){ //given number has enotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n // const decimalPart = match[5].substr(1);\n // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n \n // const p = numStr.indexOf(\".\");\n // const givenIntPart = numStr.substr(0,p);\n // const givenDecPart = numStr.substr(p+1);\n if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n else return str;\n }\n \n if(leadingZeros){\n // if(numTrimmedByZeros === numStr){\n // if(options.leadingZeros) return num;\n // else return str;\n // }else return str;\n if(numTrimmedByZeros === numStr) return num;\n else if(sign+numTrimmedByZeros === numStr) return num;\n else return str;\n }\n\n if(trimmedStr === numStr) return num;\n else if(trimmedStr === sign+numStr) return num;\n // else{\n // //number with +/- sign\n // trimmedStr.test(/[-+][0-9]);\n\n // }\n return str;\n }\n // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n \n }else{ //non-numeric string\n return str;\n }\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substr(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\nmodule.exports = toNumber\n","function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}\n\nmodule.exports = getIgnoreAttributesFn","'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\nconst getIgnoreAttributesFn = require('../ignoreAttributes')\n\n// const regx =\n// '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n// .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 16)) },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue\n }\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if(val == undefined) val = \"\";\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n \n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath)\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n }else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode);\n }else{\n currentNode.addChild(childNode);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n\n const rawTagName = tagName;\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n","'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\nexports.prettify = prettify;\n","const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;","const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if(tagName === undefined) continue;\n\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if(!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nmodule.exports = toXml;\n","'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\nconst getIgnoreAttributesFn = require('../ignoreAttributes')\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0, []).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = '';\n let val = '';\n const jPath = ajPath.join('.')\n for (let key in jObj) {\n if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n } else if (!attr) {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if(this.options.oneListGroup){\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr\n }\n }else{\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n }\n if(this.options.oneListGroup){\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities){\n for (let i=0; i,\n\tversion: '2.0',\n}\n\nexport type RootMetadata = Metadata & {\n\tusers: UserWithAccess[],\n}\n\nexport type FileEncryptionInfo = {\n\tauthenticationTag: string // Example: 'nJHAcpZwSS1BCIkGbmtbNg==',\n\tfilename: string // Example: 'test.txt',\n\tkey: string // Example: 'Hj+q7e53ZeQdHKPyF7FKeg==',\n\tmimetype: string // Example: 'text/plain',\n\tnonce: string // Example: 'sqqtY0eRjhuwf+qTv5Kg2g=='\n}\n\nexport type MetadataInfo = {\n\tcounter: number, // Example: 3\n\tfiles: Record, // Example: 'ad3b12554e0d4364854ae3e21b170152'\n\tfolders: Record, // TODO: Example: { fa666d819a6c4315abba421172f0a0b1: 'Test' }\n\tkeyChecksums?: string[] // Example: ['9a60be9846978884033fcdfb978fbdd428221b20583bca6bfcb425f1b540152a']\n}\n\nexport type PrivateKeyInfo = {\n\tencryptedPrivateKey: Uint8Array,\n\tiv: Uint8Array,\n\tsalt: Uint8Array,\n}\n\nexport function isRootMetadata(metadata: Metadata): metadata is RootMetadata {\n\treturn metadata.users !== undefined\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('end_to_end_encryption')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('end_to_end_encryption')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","export class ByteStream {\n constructor(parameters = {}) {\n if (\"view\" in parameters) {\n this.fromUint8Array(parameters.view);\n }\n else if (\"buffer\" in parameters) {\n this.fromArrayBuffer(parameters.buffer);\n }\n else if (\"string\" in parameters) {\n this.fromString(parameters.string);\n }\n else if (\"hexstring\" in parameters) {\n this.fromHexString(parameters.hexstring);\n }\n else {\n if (\"length\" in parameters && parameters.length > 0) {\n this.length = parameters.length;\n if (parameters.stub) {\n for (let i = 0; i < this._view.length; i++) {\n this._view[i] = parameters.stub;\n }\n }\n }\n else {\n this.length = 0;\n }\n }\n }\n set buffer(value) {\n this._buffer = value;\n this._view = new Uint8Array(this._buffer);\n }\n get buffer() {\n return this._buffer;\n }\n set view(value) {\n this._buffer = new ArrayBuffer(value.length);\n this._view = new Uint8Array(this._buffer);\n this._view.set(value);\n }\n get view() {\n return this._view;\n }\n get length() {\n return this.view.byteLength;\n }\n set length(value) {\n this._buffer = new ArrayBuffer(value);\n this._view = new Uint8Array(this._buffer);\n }\n clear() {\n this._buffer = new ArrayBuffer(0);\n this._view = new Uint8Array(this._buffer);\n }\n fromArrayBuffer(array) {\n this._buffer = array;\n this._view = new Uint8Array(this._buffer);\n }\n fromUint8Array(array) {\n this.fromArrayBuffer(new Uint8Array(array).buffer);\n }\n fromString(string) {\n const stringLength = string.length;\n this.length = stringLength;\n for (let i = 0; i < stringLength; i++)\n this.view[i] = string.charCodeAt(i);\n }\n toString(start = 0, length = (this.view.length - start)) {\n let result = \"\";\n if ((start >= this.view.length) || (start < 0)) {\n start = 0;\n }\n if ((length >= this.view.length) || (length < 0)) {\n length = this.view.length - start;\n }\n for (let i = start; i < (start + length); i++)\n result += String.fromCharCode(this.view[i]);\n return result;\n }\n fromHexString(hexString) {\n const stringLength = hexString.length;\n this.buffer = new ArrayBuffer(stringLength >> 1);\n this.view = new Uint8Array(this.buffer);\n const hexMap = new Map();\n hexMap.set(\"0\", 0x00);\n hexMap.set(\"1\", 0x01);\n hexMap.set(\"2\", 0x02);\n hexMap.set(\"3\", 0x03);\n hexMap.set(\"4\", 0x04);\n hexMap.set(\"5\", 0x05);\n hexMap.set(\"6\", 0x06);\n hexMap.set(\"7\", 0x07);\n hexMap.set(\"8\", 0x08);\n hexMap.set(\"9\", 0x09);\n hexMap.set(\"A\", 0x0A);\n hexMap.set(\"a\", 0x0A);\n hexMap.set(\"B\", 0x0B);\n hexMap.set(\"b\", 0x0B);\n hexMap.set(\"C\", 0x0C);\n hexMap.set(\"c\", 0x0C);\n hexMap.set(\"D\", 0x0D);\n hexMap.set(\"d\", 0x0D);\n hexMap.set(\"E\", 0x0E);\n hexMap.set(\"e\", 0x0E);\n hexMap.set(\"F\", 0x0F);\n hexMap.set(\"f\", 0x0F);\n let j = 0;\n let temp = 0x00;\n for (let i = 0; i < stringLength; i++) {\n if (!(i % 2)) {\n temp = hexMap.get(hexString.charAt(i)) << 4;\n }\n else {\n temp |= hexMap.get(hexString.charAt(i));\n this.view[j] = temp;\n j++;\n }\n }\n }\n toHexString(start = 0, length = (this.view.length - start)) {\n let result = \"\";\n if ((start >= this.view.length) || (start < 0)) {\n start = 0;\n }\n if ((length >= this.view.length) || (length < 0)) {\n length = this.view.length - start;\n }\n for (let i = start; i < (start + length); i++) {\n const str = this.view[i].toString(16).toUpperCase();\n result = result + ((str.length == 1) ? \"0\" : \"\") + str;\n }\n return result;\n }\n copy(start = 0, length = (this.length - start)) {\n if (!start && !this.length) {\n return new ByteStream();\n }\n if ((start < 0) || (start > (this.length - 1))) {\n throw new Error(`Wrong start position: ${start}`);\n }\n const stream = new ByteStream({\n buffer: this._buffer.slice(start, start + length)\n });\n return stream;\n }\n slice(start = 0, end = this.length) {\n if (!start && !this.length) {\n return new ByteStream();\n }\n if ((start < 0) || (start > (this.length - 1))) {\n throw new Error(`Wrong start position: ${start}`);\n }\n const stream = new ByteStream({\n buffer: this._buffer.slice(start, end),\n });\n return stream;\n }\n realloc(size) {\n const buffer = new ArrayBuffer(size);\n const view = new Uint8Array(buffer);\n if (size > this._view.length)\n view.set(this._view);\n else {\n view.set(new Uint8Array(this._buffer, 0, size));\n }\n this._buffer = buffer;\n this._view = new Uint8Array(this._buffer);\n }\n append(stream) {\n const initialSize = this.length;\n const streamViewLength = stream.length;\n const subarrayView = stream._view.subarray();\n this.realloc(initialSize + streamViewLength);\n this._view.set(subarrayView, initialSize);\n }\n insert(stream, start = 0, length = (this.length - start)) {\n if (start > (this.length - 1))\n return false;\n if (length > (this.length - start)) {\n length = this.length - start;\n }\n if (length > stream.length) {\n length = stream.length;\n }\n if (length == stream.length)\n this._view.set(stream._view, start);\n else {\n this._view.set(stream._view.subarray(0, length), start);\n }\n return true;\n }\n isEqual(stream) {\n if (this.length != stream.length)\n return false;\n for (let i = 0; i < stream.length; i++) {\n if (this.view[i] != stream.view[i])\n return false;\n }\n return true;\n }\n isEqualView(view) {\n if (view.length != this.view.length)\n return false;\n for (let i = 0; i < view.length; i++) {\n if (this.view[i] != view[i])\n return false;\n }\n return true;\n }\n findPattern(pattern, start_, length_, backward_) {\n const { start, length, backward } = this.prepareFindParameters(start_, length_, backward_);\n const patternLength = pattern.length;\n if (patternLength > length) {\n return (-1);\n }\n const patternArray = [];\n for (let i = 0; i < patternLength; i++)\n patternArray.push(pattern.view[i]);\n for (let i = 0; i <= (length - patternLength); i++) {\n let equal = true;\n const equalStart = (backward) ? (start - patternLength - i) : (start + i);\n for (let j = 0; j < patternLength; j++) {\n if (this.view[j + equalStart] != patternArray[j]) {\n equal = false;\n break;\n }\n }\n if (equal) {\n return (backward) ? (start - patternLength - i) : (start + patternLength + i);\n }\n }\n return (-1);\n }\n findFirstIn(patterns, start_, length_, backward_) {\n const { start, length, backward } = this.prepareFindParameters(start_, length_, backward_);\n const result = {\n id: (-1),\n position: (backward) ? 0 : (start + length),\n length: 0\n };\n for (let i = 0; i < patterns.length; i++) {\n const position = this.findPattern(patterns[i], start, length, backward);\n if (position != (-1)) {\n let valid = false;\n const patternLength = patterns[i].length;\n if (backward) {\n if ((position - patternLength) >= (result.position - result.length))\n valid = true;\n }\n else {\n if ((position - patternLength) <= (result.position - result.length))\n valid = true;\n }\n if (valid) {\n result.position = position;\n result.id = i;\n result.length = patternLength;\n }\n }\n }\n return result;\n }\n findAllIn(patterns, start_, length_) {\n let { start, length } = this.prepareFindParameters(start_, length_);\n const result = [];\n let patternFound = {\n id: (-1),\n position: start\n };\n do {\n const position = patternFound.position;\n patternFound = this.findFirstIn(patterns, patternFound.position, length);\n if (patternFound.id == (-1)) {\n break;\n }\n length -= (patternFound.position - position);\n result.push({\n id: patternFound.id,\n position: patternFound.position\n });\n } while (true);\n return result;\n }\n findAllPatternIn(pattern, start_, length_) {\n const { start, length } = this.prepareFindParameters(start_, length_);\n const result = [];\n const patternLength = pattern.length;\n if (patternLength > length) {\n return (-1);\n }\n const patternArray = Array.from(pattern.view);\n for (let i = 0; i <= (length - patternLength); i++) {\n let equal = true;\n const equalStart = start + i;\n for (let j = 0; j < patternLength; j++) {\n if (this.view[j + equalStart] != patternArray[j]) {\n equal = false;\n break;\n }\n }\n if (equal) {\n result.push(start + patternLength + i);\n i += (patternLength - 1);\n }\n }\n return result;\n }\n findFirstNotIn(patterns, start_, length_, backward_) {\n let { start, length, backward } = this.prepareFindParameters(start_, length_, backward_);\n const result = {\n left: {\n id: (-1),\n position: start\n },\n right: {\n id: (-1),\n position: 0\n },\n value: new ByteStream()\n };\n let currentLength = length;\n while (currentLength > 0) {\n result.right = this.findFirstIn(patterns, (backward) ? (start - length + currentLength) : (start + length - currentLength), currentLength, backward);\n if (result.right.id == (-1)) {\n length = currentLength;\n if (backward) {\n start -= length;\n }\n else {\n start = result.left.position;\n }\n result.value = new ByteStream({\n buffer: this._buffer.slice(start, start + length),\n });\n break;\n }\n if (result.right.position != ((backward) ? (result.left.position - patterns[result.right.id].length) : (result.left.position + patterns[result.right.id].length))) {\n if (backward) {\n start = result.right.position + patterns[result.right.id].length;\n length = result.left.position - result.right.position - patterns[result.right.id].length;\n }\n else {\n start = result.left.position;\n length = result.right.position - result.left.position - patterns[result.right.id].length;\n }\n result.value = new ByteStream({\n buffer: this._buffer.slice(start, start + length),\n });\n break;\n }\n result.left = result.right;\n currentLength -= patterns[result.right.id].length;\n }\n if (backward) {\n const temp = result.right;\n result.right = result.left;\n result.left = temp;\n }\n return result;\n }\n findAllNotIn(patterns, start_, length_) {\n let { start, length } = this.prepareFindParameters(start_, length_);\n const result = [];\n let patternFound = {\n left: {\n id: (-1),\n position: start\n },\n right: {\n id: (-1),\n position: start\n },\n value: new ByteStream()\n };\n do {\n const position = patternFound.right.position;\n patternFound = this.findFirstNotIn(patterns, patternFound.right.position, length);\n length -= (patternFound.right.position - position);\n result.push({\n left: {\n id: patternFound.left.id,\n position: patternFound.left.position\n },\n right: {\n id: patternFound.right.id,\n position: patternFound.right.position\n },\n value: patternFound.value\n });\n } while (patternFound.right.id != (-1));\n return result;\n }\n findFirstSequence(patterns, start_, length_, backward_) {\n let { start, length, backward } = this.prepareFindParameters(start_, length_, backward_);\n const firstIn = this.skipNotPatterns(patterns, start, length, backward);\n if (firstIn == (-1)) {\n return {\n position: (-1),\n value: new ByteStream()\n };\n }\n const firstNotIn = this.skipPatterns(patterns, firstIn, length - ((backward) ? (start - firstIn) : (firstIn - start)), backward);\n if (backward) {\n start = firstNotIn;\n length = (firstIn - firstNotIn);\n }\n else {\n start = firstIn;\n length = (firstNotIn - firstIn);\n }\n const value = new ByteStream({\n buffer: this._buffer.slice(start, start + length),\n });\n return {\n position: firstNotIn,\n value\n };\n }\n findAllSequences(patterns, start_, length_) {\n let { start, length } = this.prepareFindParameters(start_, length_);\n const result = [];\n let patternFound = {\n position: start,\n value: new ByteStream()\n };\n do {\n const position = patternFound.position;\n patternFound = this.findFirstSequence(patterns, patternFound.position, length);\n if (patternFound.position != (-1)) {\n length -= (patternFound.position - position);\n result.push({\n position: patternFound.position,\n value: patternFound.value,\n });\n }\n } while (patternFound.position != (-1));\n return result;\n }\n findPairedPatterns(leftPattern, rightPattern, start_, length_) {\n const result = [];\n if (leftPattern.isEqual(rightPattern))\n return result;\n const { start, length } = this.prepareFindParameters(start_, length_);\n let currentPositionLeft = 0;\n const leftPatterns = this.findAllPatternIn(leftPattern, start, length);\n if (!Array.isArray(leftPatterns) || leftPatterns.length == 0) {\n return result;\n }\n const rightPatterns = this.findAllPatternIn(rightPattern, start, length);\n if (!Array.isArray(rightPatterns) || rightPatterns.length == 0) {\n return result;\n }\n while (currentPositionLeft < leftPatterns.length) {\n if (rightPatterns.length == 0) {\n break;\n }\n if (leftPatterns[0] == rightPatterns[0]) {\n result.push({\n left: leftPatterns[0],\n right: rightPatterns[0]\n });\n leftPatterns.splice(0, 1);\n rightPatterns.splice(0, 1);\n continue;\n }\n if (leftPatterns[currentPositionLeft] > rightPatterns[0]) {\n break;\n }\n while (leftPatterns[currentPositionLeft] < rightPatterns[0]) {\n currentPositionLeft++;\n if (currentPositionLeft >= leftPatterns.length) {\n break;\n }\n }\n result.push({\n left: leftPatterns[currentPositionLeft - 1],\n right: rightPatterns[0]\n });\n leftPatterns.splice(currentPositionLeft - 1, 1);\n rightPatterns.splice(0, 1);\n currentPositionLeft = 0;\n }\n result.sort((a, b) => (a.left - b.left));\n return result;\n }\n findPairedArrays(inputLeftPatterns, inputRightPatterns, start_, length_) {\n const { start, length } = this.prepareFindParameters(start_, length_);\n const result = [];\n let currentPositionLeft = 0;\n const leftPatterns = this.findAllIn(inputLeftPatterns, start, length);\n if (leftPatterns.length == 0)\n return result;\n const rightPatterns = this.findAllIn(inputRightPatterns, start, length);\n if (rightPatterns.length == 0)\n return result;\n while (currentPositionLeft < leftPatterns.length) {\n if (rightPatterns.length == 0) {\n break;\n }\n if (leftPatterns[0].position == rightPatterns[0].position) {\n result.push({\n left: leftPatterns[0],\n right: rightPatterns[0]\n });\n leftPatterns.splice(0, 1);\n rightPatterns.splice(0, 1);\n continue;\n }\n if (leftPatterns[currentPositionLeft].position > rightPatterns[0].position) {\n break;\n }\n while (leftPatterns[currentPositionLeft].position < rightPatterns[0].position) {\n currentPositionLeft++;\n if (currentPositionLeft >= leftPatterns.length) {\n break;\n }\n }\n result.push({\n left: leftPatterns[currentPositionLeft - 1],\n right: rightPatterns[0]\n });\n leftPatterns.splice(currentPositionLeft - 1, 1);\n rightPatterns.splice(0, 1);\n currentPositionLeft = 0;\n }\n result.sort((a, b) => (a.left.position - b.left.position));\n return result;\n }\n replacePattern(searchPattern, replacePattern, start_, length_, findAllResult = null) {\n let result = [];\n let i;\n const output = {\n status: (-1),\n searchPatternPositions: [],\n replacePatternPositions: []\n };\n const { start, length } = this.prepareFindParameters(start_, length_);\n if (findAllResult == null) {\n result = this.findAllIn([searchPattern], start, length);\n if (result.length == 0) {\n return output;\n }\n }\n else {\n result = findAllResult;\n }\n output.searchPatternPositions.push(...Array.from(result, element => element.position));\n const patternDifference = searchPattern.length - replacePattern.length;\n const changedBuffer = new ArrayBuffer(this.view.length - (result.length * patternDifference));\n const changedView = new Uint8Array(changedBuffer);\n changedView.set(new Uint8Array(this.buffer, 0, start));\n for (i = 0; i < result.length; i++) {\n const currentPosition = (i == 0) ? start : result[i - 1].position;\n changedView.set(new Uint8Array(this.buffer, currentPosition, result[i].position - searchPattern.length - currentPosition), currentPosition - i * patternDifference);\n changedView.set(replacePattern.view, result[i].position - searchPattern.length - i * patternDifference);\n output.replacePatternPositions.push(result[i].position - searchPattern.length - i * patternDifference);\n }\n i--;\n changedView.set(new Uint8Array(this.buffer, result[i].position, this.length - result[i].position), result[i].position - searchPattern.length + replacePattern.length - i * patternDifference);\n this.buffer = changedBuffer;\n this.view = new Uint8Array(this.buffer);\n output.status = 1;\n return output;\n }\n skipPatterns(patterns, start_, length_, backward_) {\n const { start, length, backward } = this.prepareFindParameters(start_, length_, backward_);\n let result = start;\n for (let k = 0; k < patterns.length; k++) {\n const patternLength = patterns[k].length;\n const equalStart = (backward) ? (result - patternLength) : (result);\n let equal = true;\n for (let j = 0; j < patternLength; j++) {\n if (this.view[j + equalStart] != patterns[k].view[j]) {\n equal = false;\n break;\n }\n }\n if (equal) {\n k = (-1);\n if (backward) {\n result -= patternLength;\n if (result <= 0)\n return result;\n }\n else {\n result += patternLength;\n if (result >= (start + length))\n return result;\n }\n }\n }\n return result;\n }\n skipNotPatterns(patterns, start_, length_, backward_) {\n const { start, length, backward } = this.prepareFindParameters(start_, length_, backward_);\n let result = (-1);\n for (let i = 0; i < length; i++) {\n for (let k = 0; k < patterns.length; k++) {\n const patternLength = patterns[k].length;\n const equalStart = (backward) ? (start - i - patternLength) : (start + i);\n let equal = true;\n for (let j = 0; j < patternLength; j++) {\n if (this.view[j + equalStart] != patterns[k].view[j]) {\n equal = false;\n break;\n }\n }\n if (equal) {\n result = (backward) ? (start - i) : (start + i);\n break;\n }\n }\n if (result != (-1)) {\n break;\n }\n }\n return result;\n }\n prepareFindParameters(start = null, length = null, backward = false) {\n if (start === null) {\n start = (backward) ? this.length : 0;\n }\n if (start > this.length) {\n start = this.length;\n }\n if (backward) {\n if (length === null) {\n length = start;\n }\n if (length > start) {\n length = start;\n }\n }\n else {\n if (length === null) {\n length = this.length - start;\n }\n if (length > (this.length - start)) {\n length = this.length - start;\n }\n }\n return { start, length, backward };\n }\n}\n","import { ByteStream } from \"./byte_stream\";\nconst pow2_24 = 16777216;\nexport class SeqStream {\n constructor(parameters = {}) {\n this._stream = new ByteStream();\n this._length = 0;\n this._start = 0;\n this.backward = false;\n this.appendBlock = 0;\n this.prevLength = 0;\n this.prevStart = 0;\n if (\"view\" in parameters) {\n this.stream = new ByteStream({ view: parameters.view });\n }\n else if (\"buffer\" in parameters) {\n this.stream = new ByteStream({ buffer: parameters.buffer });\n }\n else if (\"string\" in parameters) {\n this.stream = new ByteStream({ string: parameters.string });\n }\n else if (\"hexstring\" in parameters) {\n this.stream = new ByteStream({ hexstring: parameters.hexstring });\n }\n else if (\"stream\" in parameters) {\n this.stream = parameters.stream.slice();\n }\n else {\n this.stream = new ByteStream();\n }\n if (\"backward\" in parameters && parameters.backward) {\n this.backward = parameters.backward;\n this._start = this.stream.length;\n }\n if (\"length\" in parameters && parameters.length > 0) {\n this._length = parameters.length;\n }\n if (\"start\" in parameters && parameters.start && parameters.start > 0) {\n this._start = parameters.start;\n }\n if (\"appendBlock\" in parameters && parameters.appendBlock && parameters.appendBlock > 0) {\n this.appendBlock = parameters.appendBlock;\n }\n }\n set stream(value) {\n this._stream = value;\n this.prevLength = this._length;\n this._length = value.length;\n this.prevStart = this._start;\n this._start = 0;\n }\n get stream() {\n return this._stream;\n }\n set length(value) {\n this.prevLength = this._length;\n this._length = value;\n }\n get length() {\n if (this.appendBlock) {\n return this.start;\n }\n return this._length;\n }\n set start(value) {\n if (value > this.stream.length)\n return;\n this.prevStart = this._start;\n this.prevLength = this._length;\n this._length -= (this.backward) ? (this._start - value) : (value - this._start);\n this._start = value;\n }\n get start() {\n return this._start;\n }\n get buffer() {\n return this._stream.buffer.slice(0, this._length);\n }\n resetPosition() {\n this._start = this.prevStart;\n this._length = this.prevLength;\n }\n findPattern(pattern, gap = null) {\n if ((gap == null) || (gap > this.length)) {\n gap = this.length;\n }\n const result = this.stream.findPattern(pattern, this.start, this.length, this.backward);\n if (result == (-1))\n return result;\n if (this.backward) {\n if (result < (this.start - pattern.length - gap)) {\n return (-1);\n }\n }\n else {\n if (result > (this.start + pattern.length + gap)) {\n return (-1);\n }\n }\n this.start = result;\n return result;\n }\n findFirstIn(patterns, gap = null) {\n if ((gap == null) || (gap > this.length)) {\n gap = this.length;\n }\n const result = this.stream.findFirstIn(patterns, this.start, this.length, this.backward);\n if (result.id == (-1))\n return result;\n if (this.backward) {\n if (result.position < (this.start - patterns[result.id].length - gap)) {\n return {\n id: (-1),\n position: (this.backward) ? 0 : (this.start + this.length)\n };\n }\n }\n else {\n if (result.position > (this.start + patterns[result.id].length + gap)) {\n return {\n id: (-1),\n position: (this.backward) ? 0 : (this.start + this.length)\n };\n }\n }\n this.start = result.position;\n return result;\n }\n findAllIn(patterns) {\n const start = (this.backward) ? (this.start - this.length) : this.start;\n return this.stream.findAllIn(patterns, start, this.length);\n }\n findFirstNotIn(patterns, gap = null) {\n if ((gap == null) || (gap > this._length)) {\n gap = this._length;\n }\n const result = this._stream.findFirstNotIn(patterns, this._start, this._length, this.backward);\n if ((result.left.id == (-1)) && (result.right.id == (-1))) {\n return result;\n }\n if (this.backward) {\n if (result.right.id != (-1)) {\n if (result.right.position < (this._start - patterns[result.right.id].length - gap)) {\n return {\n left: {\n id: (-1),\n position: this._start\n },\n right: {\n id: (-1),\n position: 0\n },\n value: new ByteStream()\n };\n }\n }\n }\n else {\n if (result.left.id != (-1)) {\n if (result.left.position > (this._start + patterns[result.left.id].length + gap)) {\n return {\n left: {\n id: (-1),\n position: this._start\n },\n right: {\n id: (-1),\n position: 0\n },\n value: new ByteStream()\n };\n }\n }\n }\n if (this.backward) {\n if (result.left.id == (-1)) {\n this.start = 0;\n }\n else {\n this.start = result.left.position;\n }\n }\n else {\n if (result.right.id == (-1)) {\n this.start = (this._start + this._length);\n }\n else {\n this.start = result.right.position;\n }\n }\n return result;\n }\n findAllNotIn(patterns) {\n const start = (this.backward) ? (this._start - this._length) : this._start;\n return this._stream.findAllNotIn(patterns, start, this._length);\n }\n findFirstSequence(patterns, length = null, gap = null) {\n if ((length == null) || (length > this._length)) {\n length = this._length;\n }\n if ((gap == null) || (gap > length)) {\n gap = length;\n }\n const result = this._stream.findFirstSequence(patterns, this._start, length, this.backward);\n if (result.value.length == 0) {\n return result;\n }\n if (this.backward) {\n if (result.position < (this._start - result.value.length - gap)) {\n return {\n position: (-1),\n value: new ByteStream()\n };\n }\n }\n else {\n if (result.position > (this._start + result.value.length + gap)) {\n return {\n position: (-1),\n value: new ByteStream()\n };\n }\n }\n this.start = result.position;\n return result;\n }\n findAllSequences(patterns) {\n const start = (this.backward) ? (this.start - this.length) : this.start;\n return this.stream.findAllSequences(patterns, start, this.length);\n }\n findPairedPatterns(leftPattern, rightPattern, gap = null) {\n if ((gap == null) || (gap > this.length)) {\n gap = this.length;\n }\n const start = (this.backward) ? (this.start - this.length) : this.start;\n const result = this.stream.findPairedPatterns(leftPattern, rightPattern, start, this.length);\n if (result.length) {\n if (this.backward) {\n if (result[0].right < (this.start - rightPattern.length - gap)) {\n return [];\n }\n }\n else {\n if (result[0].left > (this.start + leftPattern.length + gap)) {\n return [];\n }\n }\n }\n return result;\n }\n findPairedArrays(leftPatterns, rightPatterns, gap = null) {\n if ((gap == null) || (gap > this.length)) {\n gap = this.length;\n }\n const start = (this.backward) ? (this.start - this.length) : this.start;\n const result = this.stream.findPairedArrays(leftPatterns, rightPatterns, start, this.length);\n if (result.length) {\n if (this.backward) {\n if (result[0].right.position < (this.start - rightPatterns[result[0].right.id].length - gap)) {\n return [];\n }\n }\n else {\n if (result[0].left.position > (this.start + leftPatterns[result[0].left.id].length + gap)) {\n return [];\n }\n }\n }\n return result;\n }\n replacePattern(searchPattern, replacePattern) {\n const start = (this.backward) ? (this.start - this.length) : this.start;\n return this.stream.replacePattern(searchPattern, replacePattern, start, this.length);\n }\n skipPatterns(patterns) {\n const result = this.stream.skipPatterns(patterns, this.start, this.length, this.backward);\n this.start = result;\n return result;\n }\n skipNotPatterns(patterns) {\n const result = this.stream.skipNotPatterns(patterns, this.start, this.length, this.backward);\n if (result == (-1))\n return (-1);\n this.start = result;\n return result;\n }\n append(stream) {\n this.beforeAppend(stream.length);\n this._stream.view.set(stream.view, this._start);\n this._length += (stream.length * 2);\n this.start = (this._start + stream.length);\n this.prevLength -= (stream.length * 2);\n }\n appendView(view) {\n this.beforeAppend(view.length);\n this._stream.view.set(view, this._start);\n this._length += (view.length * 2);\n this.start = (this._start + view.length);\n this.prevLength -= (view.length * 2);\n }\n appendChar(char) {\n this.beforeAppend(1);\n this._stream.view[this._start] = char;\n this._length += 2;\n this.start = (this._start + 1);\n this.prevLength -= 2;\n }\n appendUint16(number) {\n this.beforeAppend(2);\n const value = new Uint16Array([number]);\n const view = new Uint8Array(value.buffer);\n this.stream.view[this._start] = view[1];\n this._stream.view[this._start + 1] = view[0];\n this._length += 4;\n this.start = this._start + 2;\n this.prevLength -= 4;\n }\n appendUint24(number) {\n this.beforeAppend(3);\n const value = new Uint32Array([number]);\n const view = new Uint8Array(value.buffer);\n this._stream.view[this._start] = view[2];\n this._stream.view[this._start + 1] = view[1];\n this._stream.view[this._start + 2] = view[0];\n this._length += 6;\n this.start = (this._start + 3);\n this.prevLength -= 6;\n }\n appendUint32(number) {\n this.beforeAppend(4);\n const value = new Uint32Array([number]);\n const view = new Uint8Array(value.buffer);\n this._stream.view[this._start] = view[3];\n this._stream.view[this._start + 1] = view[2];\n this._stream.view[this._start + 2] = view[1];\n this._stream.view[this._start + 3] = view[0];\n this._length += 8;\n this.start = (this._start + 4);\n this.prevLength -= 8;\n }\n appendInt16(number) {\n this.beforeAppend(2);\n const value = new Int16Array([number]);\n const view = new Uint8Array(value.buffer);\n this._stream.view[this._start] = view[1];\n this._stream.view[this._start + 1] = view[0];\n this._length += 4;\n this.start = (this._start + 2);\n this.prevLength -= 4;\n }\n appendInt32(number) {\n this.beforeAppend(4);\n const value = new Int32Array([number]);\n const view = new Uint8Array(value.buffer);\n this._stream.view[this._start] = view[3];\n this._stream.view[this._start + 1] = view[2];\n this._stream.view[this._start + 2] = view[1];\n this._stream.view[this._start + 3] = view[0];\n this._length += 8;\n this.start = (this._start + 4);\n this.prevLength -= 8;\n }\n getBlock(size, changeLength = true) {\n if (this._length <= 0) {\n return new Uint8Array(0);\n }\n if (this._length < size) {\n size = this._length;\n }\n let result;\n if (this.backward) {\n const view = this._stream.view.subarray(this._length - size, this._length);\n result = new Uint8Array(size);\n for (let i = 0; i < size; i++) {\n result[size - 1 - i] = view[i];\n }\n }\n else {\n result = this._stream.view.subarray(this._start, this._start + size);\n }\n if (changeLength) {\n this.start += ((this.backward) ? ((-1) * size) : size);\n }\n return result;\n }\n getUint16(changeLength = true) {\n const block = this.getBlock(2, changeLength);\n if (block.length < 2)\n return 0;\n return (block[0] << 8) | block[1];\n }\n getInt16(changeLength = true) {\n const num = this.getUint16(changeLength);\n const negative = 0x8000;\n if (num & negative) {\n return -(negative - (num ^ negative));\n }\n return num;\n }\n getUint24(changeLength = true) {\n const block = this.getBlock(4, changeLength);\n if (block.length < 3)\n return 0;\n return (block[0] << 16) |\n (block[1] << 8) |\n block[2];\n }\n getUint32(changeLength = true) {\n const block = this.getBlock(4, changeLength);\n if (block.length < 4)\n return 0;\n return (block[0] * pow2_24) +\n (block[1] << 16) +\n (block[2] << 8) +\n block[3];\n }\n getInt32(changeLength = true) {\n const num = this.getUint32(changeLength);\n const negative = 0x80000000;\n if (num & negative) {\n return -(negative - (num ^ negative));\n }\n return num;\n }\n beforeAppend(size) {\n if ((this._start + size) > this._stream.length) {\n if (size > this.appendBlock) {\n this.appendBlock = size + SeqStream.APPEND_BLOCK;\n }\n this._stream.realloc(this._stream.length + this.appendBlock);\n }\n }\n}\nSeqStream.APPEND_BLOCK = 1000;\n","/**\n * Assertion helpers\n * @module\n */\nfunction anumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error('positive integer expected, got ' + n);\n}\n// copied from utils\nfunction isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\nfunction abytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\nfunction ahash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\nfunction aexists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nfunction aoutput(out, instance) {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\nexport { anumber, abytes, ahash, aexists, aoutput };\n//# sourceMappingURL=_assert.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nimport { abytes } from './_assert.js';\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nexport function isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n/** The rotate right (circular right shift) operation for uint32 */\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\n/** The rotate left (circular left shift) operation for uint32 */\nexport const rotl = (word, shift) => (word << shift) | ((word >>> (32 - shift)) >>> 0);\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n// The byte swap operation for uint32\nexport const byteSwap = (word) => ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff);\n/** Conditionally byte swap if on a big-endian platform */\nexport const byteSwapIfBE = isLE\n ? (n) => n\n : (n) => byteSwap(n);\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n}\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9)\n return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F)\n return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f)\n return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * Convert hex string to byte array.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * Convert JS string to byte array.\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error('utf8ToBytes expected string, got ' + typeof str);\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function wrapXOFConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return crypto.randomBytes(bytesLength);\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","import { aexists, aoutput } from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n/**\n * Merkle-Damgard hash utils.\n * @module\n */\n/**\n * Polyfill for Safari 14\n */\nexport function setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n/**\n * Choice: a ? b : c\n */\nexport const Chi = (a, b, c) => (a & b) ^ (~a & c);\n/**\n * Majority function, true if any two inputs is true\n */\nexport const Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n aexists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_md.js.map","import { HashMD, Chi, Maj } from './_md.js';\nimport { rotl, wrapConstructor } from './utils.js';\n/**\n * SHA1 (RFC 3174) legacy hash function.\n * @module\n */\n// Initial state\nconst SHA1_IV = /* @__PURE__ */ new Uint32Array([\n 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0,\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA1_W = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA1 extends HashMD {\n constructor() {\n super(64, 20, 8, false);\n this.A = SHA1_IV[0] | 0;\n this.B = SHA1_IV[1] | 0;\n this.C = SHA1_IV[2] | 0;\n this.D = SHA1_IV[3] | 0;\n this.E = SHA1_IV[4] | 0;\n }\n get() {\n const { A, B, C, D, E } = this;\n return [A, B, C, D, E];\n }\n set(A, B, C, D, E) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n SHA1_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 80; i++)\n SHA1_W[i] = rotl(SHA1_W[i - 3] ^ SHA1_W[i - 8] ^ SHA1_W[i - 14] ^ SHA1_W[i - 16], 1);\n // Compression function main loop, 80 rounds\n let { A, B, C, D, E } = this;\n for (let i = 0; i < 80; i++) {\n let F, K;\n if (i < 20) {\n F = Chi(B, C, D);\n K = 0x5a827999;\n }\n else if (i < 40) {\n F = B ^ C ^ D;\n K = 0x6ed9eba1;\n }\n else if (i < 60) {\n F = Maj(B, C, D);\n K = 0x8f1bbcdc;\n }\n else {\n F = B ^ C ^ D;\n K = 0xca62c1d6;\n }\n const T = (rotl(A, 5) + F + E + K + SHA1_W[i]) | 0;\n E = D;\n D = C;\n C = rotl(B, 30);\n B = A;\n A = T;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n this.set(A, B, C, D, E);\n }\n roundClean() {\n SHA1_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/** SHA1 (RFC 3174) legacy hash function. It was cryptographically broken. */\nexport const sha1 = /* @__PURE__ */ wrapConstructor(() => new SHA1());\n//# sourceMappingURL=sha1.js.map","import { HashMD, Chi, Maj } from './_md.js';\nimport { rotr, wrapConstructor } from './utils.js';\n/**\n * SHA2-256 a.k.a. sha256. In JS, it is the fastest hash, even faster than Blake3.\n *\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n *\n * Check out [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\n/** Round constants: first 32 bits of fractional parts of the cube roots of the first 64 primes 2..311). */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Initial state: first 32 bits of fractional parts of the square roots of the first 8 primes 2..19. */\n// prettier-ignore\nconst SHA256_IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n/**\n * Temporary buffer, not used to store anything between runs.\n * Named this way because it matches specification.\n */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = SHA256_IV[0] | 0;\n this.B = SHA256_IV[1] | 0;\n this.C = SHA256_IV[2] | 0;\n this.D = SHA256_IV[3] | 0;\n this.E = SHA256_IV[4] | 0;\n this.F = SHA256_IV[5] | 0;\n this.G = SHA256_IV[6] | 0;\n this.H = SHA256_IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/**\n * Constants taken from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf.\n */\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/** SHA2-256 hash function */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\n/** SHA2-224 hash function */\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n/**\n * BigUint64Array is too slow as per 2024, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { fromBig, split, toBig, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, rotr32H, rotr32L, rotlSH, rotlSL, rotlBH, rotlBL, add, add3L, add3H, add4L, add4H, add5H, add5L, };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","import { HashMD } from './_md.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n/**\n * SHA2-512 a.k.a. sha512 and sha384. It is slower than sha256 in js because u64 operations are slow.\n *\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [the paper on truncated SHA512/256](https://eprint.iacr.org/2010/548.pdf).\n * @module\n */\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nexport class SHA512_224 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x8c3d37c8 | 0;\n this.Al = 0x19544da2 | 0;\n this.Bh = 0x73e19966 | 0;\n this.Bl = 0x89dcd4d6 | 0;\n this.Ch = 0x1dfab7ae | 0;\n this.Cl = 0x32ff9c82 | 0;\n this.Dh = 0x679dd514 | 0;\n this.Dl = 0x582f9fcf | 0;\n this.Eh = 0x0f6d2b69 | 0;\n this.El = 0x7bd44da8 | 0;\n this.Fh = 0x77e36f73 | 0;\n this.Fl = 0x04c48942 | 0;\n this.Gh = 0x3f9d85a8 | 0;\n this.Gl = 0x6a1d36c8 | 0;\n this.Hh = 0x1112e6ad | 0;\n this.Hl = 0x91d692a1 | 0;\n this.outputLen = 28;\n }\n}\nexport class SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nexport class SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\n/** SHA2-512 hash function. */\nexport const sha512 = /* @__PURE__ */ wrapConstructor(() => new SHA512());\n/** SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks. */\nexport const sha512_224 = /* @__PURE__ */ wrapConstructor(() => new SHA512_224());\n/** SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks. */\nexport const sha512_256 = /* @__PURE__ */ wrapConstructor(() => new SHA512_256());\n/** SHA2-384 hash function. */\nexport const sha384 = /* @__PURE__ */ wrapConstructor(() => new SHA384());\n//# sourceMappingURL=sha512.js.map","/*!\n * Copyright (c) 2014, GlobalSign\n * Copyright (c) 2015-2019, Peculiar Ventures\n * All rights reserved.\n * \n * Author 2014-2019, Yury Strozhevsky\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * * Redistributions in binary form must reproduce the above copyright notice, this\n * list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * \n * * Neither the name of the {organization} nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\n * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n */\n\nimport * as asn1js from 'asn1js';\nimport * as pvtsutils from 'pvtsutils';\nimport { BufferSourceConverter } from 'pvtsutils';\nimport * as pvutils from 'pvutils';\nimport * as bs from 'bytestreamjs';\nimport { sha1 } from '@noble/hashes/sha1';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { sha512, sha384 } from '@noble/hashes/sha512';\n\nconst EMPTY_BUFFER = new ArrayBuffer(0);\nconst EMPTY_STRING = \"\";\n\nclass ArgumentError extends TypeError {\n constructor() {\n super(...arguments);\n this.name = ArgumentError.NAME;\n }\n static isType(value, type) {\n if (typeof type === \"string\") {\n if (type === \"Array\" && Array.isArray(value)) {\n return true;\n }\n else if (type === \"ArrayBuffer\" && value instanceof ArrayBuffer) {\n return true;\n }\n else if (type === \"ArrayBufferView\" && ArrayBuffer.isView(value)) {\n return true;\n }\n else if (typeof value === type) {\n return true;\n }\n }\n else if (value instanceof type) {\n return true;\n }\n return false;\n }\n static assert(value, name, ...types) {\n for (const type of types) {\n if (this.isType(value, type)) {\n return;\n }\n }\n const typeNames = types.map(o => o instanceof Function && \"name\" in o ? o.name : `${o}`);\n throw new ArgumentError(`Parameter '${name}' is not of type ${typeNames.length > 1 ? `(${typeNames.join(\" or \")})` : typeNames[0]}`);\n }\n}\nArgumentError.NAME = \"ArgumentError\";\n\nclass ParameterError extends TypeError {\n static assert(...args) {\n let target = null;\n let params;\n let fields;\n if (typeof args[0] === \"string\") {\n target = args[0];\n params = args[1];\n fields = args.slice(2);\n }\n else {\n params = args[0];\n fields = args.slice(1);\n }\n ArgumentError.assert(params, \"parameters\", \"object\");\n for (const field of fields) {\n const value = params[field];\n if (value === undefined || value === null) {\n throw new ParameterError(field, target);\n }\n }\n }\n static assertEmpty(value, name, target) {\n if (value === undefined || value === null) {\n throw new ParameterError(name, target);\n }\n }\n constructor(field, target = null, message) {\n super();\n this.name = ParameterError.NAME;\n this.field = field;\n if (target) {\n this.target = target;\n }\n if (message) {\n this.message = message;\n }\n else {\n this.message = `Absent mandatory parameter '${field}' ${target ? ` in '${target}'` : EMPTY_STRING}`;\n }\n }\n}\nParameterError.NAME = \"ParameterError\";\n\nclass AsnError extends Error {\n static assertSchema(asn1, target) {\n if (!asn1.verified) {\n throw new Error(`Object's schema was not verified against input data for ${target}`);\n }\n }\n static assert(asn, target) {\n if (asn.offset === -1) {\n throw new AsnError(`Error during parsing of ASN.1 data. Data is not correct for '${target}'.`);\n }\n }\n constructor(message) {\n super(message);\n this.name = \"AsnError\";\n }\n}\n\nclass PkiObject {\n static blockName() {\n return this.CLASS_NAME;\n }\n static fromBER(raw) {\n const asn1 = asn1js.fromBER(raw);\n AsnError.assert(asn1, this.name);\n try {\n return new this({ schema: asn1.result });\n }\n catch (e) {\n throw new AsnError(`Cannot create '${this.CLASS_NAME}' from ASN.1 object`);\n }\n }\n static defaultValues(memberName) {\n throw new Error(`Invalid member name for ${this.CLASS_NAME} class: ${memberName}`);\n }\n static schema(parameters = {}) {\n throw new Error(`Method '${this.CLASS_NAME}.schema' should be overridden`);\n }\n get className() {\n return this.constructor.CLASS_NAME;\n }\n toString(encoding = \"hex\") {\n let schema;\n try {\n schema = this.toSchema();\n }\n catch {\n schema = this.toSchema(true);\n }\n return pvtsutils.Convert.ToString(schema.toBER(), encoding);\n }\n}\nPkiObject.CLASS_NAME = \"PkiObject\";\n\nfunction stringPrep(inputString) {\n let isSpace = false;\n let cutResult = EMPTY_STRING;\n const result = inputString.trim();\n for (let i = 0; i < result.length; i++) {\n if (result.charCodeAt(i) === 32) {\n if (isSpace === false)\n isSpace = true;\n }\n else {\n if (isSpace) {\n cutResult += \" \";\n isSpace = false;\n }\n cutResult += result[i];\n }\n }\n return cutResult.toLowerCase();\n}\n\nconst TYPE$5 = \"type\";\nconst VALUE$6 = \"value\";\nclass AttributeTypeAndValue extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.type = pvutils.getParametersValue(parameters, TYPE$5, AttributeTypeAndValue.defaultValues(TYPE$5));\n this.value = pvutils.getParametersValue(parameters, VALUE$6, AttributeTypeAndValue.defaultValues(VALUE$6));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TYPE$5:\n return EMPTY_STRING;\n case VALUE$6:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.type || EMPTY_STRING) }),\n new asn1js.Any({ name: (names.value || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n TYPE$5,\n \"typeValue\"\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, AttributeTypeAndValue.schema({\n names: {\n type: TYPE$5,\n value: \"typeValue\"\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.type = asn1.result.type.valueBlock.toString();\n this.value = asn1.result.typeValue;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.type }),\n this.value\n ]\n }));\n }\n toJSON() {\n const _object = {\n type: this.type\n };\n if (Object.keys(this.value).length !== 0) {\n _object.value = (this.value).toJSON();\n }\n else {\n _object.value = this.value;\n }\n return _object;\n }\n isEqual(compareTo) {\n const stringBlockNames = [\n asn1js.Utf8String.blockName(),\n asn1js.BmpString.blockName(),\n asn1js.UniversalString.blockName(),\n asn1js.NumericString.blockName(),\n asn1js.PrintableString.blockName(),\n asn1js.TeletexString.blockName(),\n asn1js.VideotexString.blockName(),\n asn1js.IA5String.blockName(),\n asn1js.GraphicString.blockName(),\n asn1js.VisibleString.blockName(),\n asn1js.GeneralString.blockName(),\n asn1js.CharacterString.blockName()\n ];\n if (compareTo instanceof ArrayBuffer) {\n return pvtsutils.BufferSourceConverter.isEqual(this.value.valueBeforeDecodeView, compareTo);\n }\n if (compareTo.constructor.blockName() === AttributeTypeAndValue.blockName()) {\n if (this.type !== compareTo.type)\n return false;\n const isStringPair = [false, false];\n const thisName = this.value.constructor.blockName();\n for (const name of stringBlockNames) {\n if (thisName === name) {\n isStringPair[0] = true;\n }\n if (compareTo.value.constructor.blockName() === name) {\n isStringPair[1] = true;\n }\n }\n if (isStringPair[0] !== isStringPair[1]) {\n return false;\n }\n const isString = (isStringPair[0] && isStringPair[1]);\n if (isString) {\n const value1 = stringPrep(this.value.valueBlock.value);\n const value2 = stringPrep(compareTo.value.valueBlock.value);\n if (value1.localeCompare(value2) !== 0)\n return false;\n }\n else {\n if (!pvtsutils.BufferSourceConverter.isEqual(this.value.valueBeforeDecodeView, compareTo.value.valueBeforeDecodeView))\n return false;\n }\n return true;\n }\n return false;\n }\n}\nAttributeTypeAndValue.CLASS_NAME = \"AttributeTypeAndValue\";\n\nconst TYPE_AND_VALUES = \"typesAndValues\";\nconst VALUE_BEFORE_DECODE = \"valueBeforeDecode\";\nconst RDN = \"RDN\";\nclass RelativeDistinguishedNames extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.typesAndValues = pvutils.getParametersValue(parameters, TYPE_AND_VALUES, RelativeDistinguishedNames.defaultValues(TYPE_AND_VALUES));\n this.valueBeforeDecode = pvutils.getParametersValue(parameters, VALUE_BEFORE_DECODE, RelativeDistinguishedNames.defaultValues(VALUE_BEFORE_DECODE));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TYPE_AND_VALUES:\n return [];\n case VALUE_BEFORE_DECODE:\n return EMPTY_BUFFER;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TYPE_AND_VALUES:\n return (memberValue.length === 0);\n case VALUE_BEFORE_DECODE:\n return (memberValue.byteLength === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.repeatedSequence || EMPTY_STRING),\n value: new asn1js.Set({\n value: [\n new asn1js.Repeated({\n name: (names.repeatedSet || EMPTY_STRING),\n value: AttributeTypeAndValue.schema(names.typeAndValue || {})\n })\n ]\n })\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n RDN,\n TYPE_AND_VALUES\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, RelativeDistinguishedNames.schema({\n names: {\n blockName: RDN,\n repeatedSet: TYPE_AND_VALUES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (TYPE_AND_VALUES in asn1.result) {\n this.typesAndValues = Array.from(asn1.result.typesAndValues, element => new AttributeTypeAndValue({ schema: element }));\n }\n this.valueBeforeDecode = asn1.result.RDN.valueBeforeDecodeView.slice().buffer;\n }\n toSchema() {\n if (this.valueBeforeDecode.byteLength === 0) {\n return (new asn1js.Sequence({\n value: [new asn1js.Set({\n value: Array.from(this.typesAndValues, o => o.toSchema())\n })]\n }));\n }\n const asn1 = asn1js.fromBER(this.valueBeforeDecode);\n AsnError.assert(asn1, \"RelativeDistinguishedNames\");\n if (!(asn1.result instanceof asn1js.Sequence)) {\n throw new Error(\"ASN.1 result should be SEQUENCE\");\n }\n return asn1.result;\n }\n toJSON() {\n return {\n typesAndValues: Array.from(this.typesAndValues, o => o.toJSON())\n };\n }\n isEqual(compareTo) {\n if (compareTo instanceof RelativeDistinguishedNames) {\n if (this.typesAndValues.length !== compareTo.typesAndValues.length)\n return false;\n for (const [index, typeAndValue] of this.typesAndValues.entries()) {\n if (typeAndValue.isEqual(compareTo.typesAndValues[index]) === false)\n return false;\n }\n return true;\n }\n if (compareTo instanceof ArrayBuffer) {\n return pvutils.isEqualBuffer(this.valueBeforeDecode, compareTo);\n }\n return false;\n }\n}\nRelativeDistinguishedNames.CLASS_NAME = \"RelativeDistinguishedNames\";\n\nconst TYPE$4 = \"type\";\nconst VALUE$5 = \"value\";\nfunction builtInStandardAttributes(parameters = {}, optional = false) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n optional,\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 2,\n tagNumber: 1\n },\n name: (names.country_name || EMPTY_STRING),\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.NumericString(),\n new asn1js.PrintableString()\n ]\n })\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 2,\n tagNumber: 2\n },\n name: (names.administration_domain_name || EMPTY_STRING),\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.NumericString(),\n new asn1js.PrintableString()\n ]\n })\n ]\n }),\n new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n name: (names.network_address || EMPTY_STRING),\n isHexOnly: true\n }),\n new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n name: (names.terminal_identifier || EMPTY_STRING),\n isHexOnly: true\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n name: (names.private_domain_name || EMPTY_STRING),\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.NumericString(),\n new asn1js.PrintableString()\n ]\n })\n ]\n }),\n new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n name: (names.organization_name || EMPTY_STRING),\n isHexOnly: true\n }),\n new asn1js.Primitive({\n optional: true,\n name: (names.numeric_user_identifier || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 4\n },\n isHexOnly: true\n }),\n new asn1js.Constructed({\n optional: true,\n name: (names.personal_name || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 5\n },\n value: [\n new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n isHexOnly: true\n }),\n new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n isHexOnly: true\n }),\n new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n isHexOnly: true\n }),\n new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n isHexOnly: true\n })\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n name: (names.organizational_unit_names || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 6\n },\n value: [\n new asn1js.Repeated({\n value: new asn1js.PrintableString()\n })\n ]\n })\n ]\n }));\n}\nfunction builtInDomainDefinedAttributes(optional = false) {\n return (new asn1js.Sequence({\n optional,\n value: [\n new asn1js.PrintableString(),\n new asn1js.PrintableString()\n ]\n }));\n}\nfunction extensionAttributes(optional = false) {\n return (new asn1js.Set({\n optional,\n value: [\n new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n isHexOnly: true\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [new asn1js.Any()]\n })\n ]\n }));\n}\nclass GeneralName extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.type = pvutils.getParametersValue(parameters, TYPE$4, GeneralName.defaultValues(TYPE$4));\n this.value = pvutils.getParametersValue(parameters, VALUE$5, GeneralName.defaultValues(VALUE$5));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TYPE$4:\n return 9;\n case VALUE$5:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TYPE$4:\n return (memberValue === GeneralName.defaultValues(memberName));\n case VALUE$5:\n return (Object.keys(memberValue).length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Choice({\n value: [\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier(),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Any()]\n })\n ]\n }),\n new asn1js.Primitive({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n }\n }),\n new asn1js.Primitive({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n }\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n name: (names.blockName || EMPTY_STRING),\n value: [\n builtInStandardAttributes((names.builtInStandardAttributes || {}), false),\n builtInDomainDefinedAttributes(true),\n extensionAttributes(true)\n ]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 4\n },\n name: (names.blockName || EMPTY_STRING),\n value: [RelativeDistinguishedNames.schema(names.directoryName || {})]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 5\n },\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.TeletexString(),\n new asn1js.PrintableString(),\n new asn1js.UniversalString(),\n new asn1js.Utf8String(),\n new asn1js.BmpString()\n ]\n })\n ]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.TeletexString(),\n new asn1js.PrintableString(),\n new asn1js.UniversalString(),\n new asn1js.Utf8String(),\n new asn1js.BmpString()\n ]\n })\n ]\n })\n ]\n }),\n new asn1js.Primitive({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 6\n }\n }),\n new asn1js.Primitive({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 7\n }\n }),\n new asn1js.Primitive({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 8\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n \"blockName\",\n \"otherName\",\n \"rfc822Name\",\n \"dNSName\",\n \"x400Address\",\n \"directoryName\",\n \"ediPartyName\",\n \"uniformResourceIdentifier\",\n \"iPAddress\",\n \"registeredID\"\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, GeneralName.schema({\n names: {\n blockName: \"blockName\",\n otherName: \"otherName\",\n rfc822Name: \"rfc822Name\",\n dNSName: \"dNSName\",\n x400Address: \"x400Address\",\n directoryName: {\n names: {\n blockName: \"directoryName\"\n }\n },\n ediPartyName: \"ediPartyName\",\n uniformResourceIdentifier: \"uniformResourceIdentifier\",\n iPAddress: \"iPAddress\",\n registeredID: \"registeredID\"\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.type = asn1.result.blockName.idBlock.tagNumber;\n switch (this.type) {\n case 0:\n this.value = asn1.result.blockName;\n break;\n case 1:\n case 2:\n case 6:\n {\n const value = asn1.result.blockName;\n value.idBlock.tagClass = 1;\n value.idBlock.tagNumber = 22;\n const valueBER = value.toBER(false);\n const asnValue = asn1js.fromBER(valueBER);\n AsnError.assert(asnValue, \"GeneralName value\");\n this.value = asnValue.result.valueBlock.value;\n }\n break;\n case 3:\n this.value = asn1.result.blockName;\n break;\n case 4:\n this.value = new RelativeDistinguishedNames({ schema: asn1.result.directoryName });\n break;\n case 5:\n this.value = asn1.result.ediPartyName;\n break;\n case 7:\n this.value = new asn1js.OctetString({ valueHex: asn1.result.blockName.valueBlock.valueHex });\n break;\n case 8:\n {\n const value = asn1.result.blockName;\n value.idBlock.tagClass = 1;\n value.idBlock.tagNumber = 6;\n const valueBER = value.toBER(false);\n const asnValue = asn1js.fromBER(valueBER);\n AsnError.assert(asnValue, \"GeneralName registeredID\");\n this.value = asnValue.result.valueBlock.toString();\n }\n break;\n }\n }\n toSchema() {\n switch (this.type) {\n case 0:\n case 3:\n case 5:\n return new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: this.type\n },\n value: [\n this.value\n ]\n });\n case 1:\n case 2:\n case 6:\n {\n const value = new asn1js.IA5String({ value: this.value });\n value.idBlock.tagClass = 3;\n value.idBlock.tagNumber = this.type;\n return value;\n }\n case 4:\n return new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 4\n },\n value: [this.value.toSchema()]\n });\n case 7:\n {\n const value = this.value;\n value.idBlock.tagClass = 3;\n value.idBlock.tagNumber = this.type;\n return value;\n }\n case 8:\n {\n const value = new asn1js.ObjectIdentifier({ value: this.value });\n value.idBlock.tagClass = 3;\n value.idBlock.tagNumber = this.type;\n return value;\n }\n default:\n return GeneralName.schema();\n }\n }\n toJSON() {\n const _object = {\n type: this.type,\n value: EMPTY_STRING\n };\n if ((typeof this.value) === \"string\")\n _object.value = this.value;\n else {\n try {\n _object.value = this.value.toJSON();\n }\n catch (ex) {\n }\n }\n return _object;\n }\n}\nGeneralName.CLASS_NAME = \"GeneralName\";\n\nconst ACCESS_METHOD = \"accessMethod\";\nconst ACCESS_LOCATION = \"accessLocation\";\nconst CLEAR_PROPS$1v = [\n ACCESS_METHOD,\n ACCESS_LOCATION,\n];\nclass AccessDescription extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.accessMethod = pvutils.getParametersValue(parameters, ACCESS_METHOD, AccessDescription.defaultValues(ACCESS_METHOD));\n this.accessLocation = pvutils.getParametersValue(parameters, ACCESS_LOCATION, AccessDescription.defaultValues(ACCESS_LOCATION));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ACCESS_METHOD:\n return EMPTY_STRING;\n case ACCESS_LOCATION:\n return new GeneralName();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.accessMethod || EMPTY_STRING) }),\n GeneralName.schema(names.accessLocation || {})\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1v);\n const asn1 = asn1js.compareSchema(schema, schema, AccessDescription.schema({\n names: {\n accessMethod: ACCESS_METHOD,\n accessLocation: {\n names: {\n blockName: ACCESS_LOCATION\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.accessMethod = asn1.result.accessMethod.valueBlock.toString();\n this.accessLocation = new GeneralName({ schema: asn1.result.accessLocation });\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.accessMethod }),\n this.accessLocation.toSchema()\n ]\n }));\n }\n toJSON() {\n return {\n accessMethod: this.accessMethod,\n accessLocation: this.accessLocation.toJSON()\n };\n }\n}\nAccessDescription.CLASS_NAME = \"AccessDescription\";\n\nconst SECONDS = \"seconds\";\nconst MILLIS = \"millis\";\nconst MICROS = \"micros\";\nclass Accuracy extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (SECONDS in parameters) {\n this.seconds = pvutils.getParametersValue(parameters, SECONDS, Accuracy.defaultValues(SECONDS));\n }\n if (MILLIS in parameters) {\n this.millis = pvutils.getParametersValue(parameters, MILLIS, Accuracy.defaultValues(MILLIS));\n }\n if (MICROS in parameters) {\n this.micros = pvutils.getParametersValue(parameters, MICROS, Accuracy.defaultValues(MICROS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case SECONDS:\n case MILLIS:\n case MICROS:\n return 0;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case SECONDS:\n case MILLIS:\n case MICROS:\n return (memberValue === Accuracy.defaultValues(memberName));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n optional: true,\n value: [\n new asn1js.Integer({\n optional: true,\n name: (names.seconds || EMPTY_STRING)\n }),\n new asn1js.Primitive({\n name: (names.millis || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n }\n }),\n new asn1js.Primitive({\n name: (names.micros || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n SECONDS,\n MILLIS,\n MICROS,\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, Accuracy.schema({\n names: {\n seconds: SECONDS,\n millis: MILLIS,\n micros: MICROS,\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (\"seconds\" in asn1.result) {\n this.seconds = asn1.result.seconds.valueBlock.valueDec;\n }\n if (\"millis\" in asn1.result) {\n const intMillis = new asn1js.Integer({ valueHex: asn1.result.millis.valueBlock.valueHex });\n this.millis = intMillis.valueBlock.valueDec;\n }\n if (\"micros\" in asn1.result) {\n const intMicros = new asn1js.Integer({ valueHex: asn1.result.micros.valueBlock.valueHex });\n this.micros = intMicros.valueBlock.valueDec;\n }\n }\n toSchema() {\n const outputArray = [];\n if (this.seconds !== undefined)\n outputArray.push(new asn1js.Integer({ value: this.seconds }));\n if (this.millis !== undefined) {\n const intMillis = new asn1js.Integer({ value: this.millis });\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n valueHex: intMillis.valueBlock.valueHexView\n }));\n }\n if (this.micros !== undefined) {\n const intMicros = new asn1js.Integer({ value: this.micros });\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n valueHex: intMicros.valueBlock.valueHexView\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const _object = {};\n if (this.seconds !== undefined)\n _object.seconds = this.seconds;\n if (this.millis !== undefined)\n _object.millis = this.millis;\n if (this.micros !== undefined)\n _object.micros = this.micros;\n return _object;\n }\n}\nAccuracy.CLASS_NAME = \"Accuracy\";\n\nconst ALGORITHM_ID = \"algorithmId\";\nconst ALGORITHM_PARAMS = \"algorithmParams\";\nconst ALGORITHM$2 = \"algorithm\";\nconst PARAMS = \"params\";\nconst CLEAR_PROPS$1u = [\n ALGORITHM$2,\n PARAMS\n];\nclass AlgorithmIdentifier extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.algorithmId = pvutils.getParametersValue(parameters, ALGORITHM_ID, AlgorithmIdentifier.defaultValues(ALGORITHM_ID));\n if (ALGORITHM_PARAMS in parameters) {\n this.algorithmParams = pvutils.getParametersValue(parameters, ALGORITHM_PARAMS, AlgorithmIdentifier.defaultValues(ALGORITHM_PARAMS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ALGORITHM_ID:\n return EMPTY_STRING;\n case ALGORITHM_PARAMS:\n return new asn1js.Any();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case ALGORITHM_ID:\n return (memberValue === EMPTY_STRING);\n case ALGORITHM_PARAMS:\n return (memberValue instanceof asn1js.Any);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n optional: (names.optional || false),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.algorithmIdentifier || EMPTY_STRING) }),\n new asn1js.Any({ name: (names.algorithmParams || EMPTY_STRING), optional: true })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1u);\n const asn1 = asn1js.compareSchema(schema, schema, AlgorithmIdentifier.schema({\n names: {\n algorithmIdentifier: ALGORITHM$2,\n algorithmParams: PARAMS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.algorithmId = asn1.result.algorithm.valueBlock.toString();\n if (PARAMS in asn1.result) {\n this.algorithmParams = asn1.result.params;\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.algorithmId }));\n if (this.algorithmParams && !(this.algorithmParams instanceof asn1js.Any)) {\n outputArray.push(this.algorithmParams);\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const object = {\n algorithmId: this.algorithmId\n };\n if (this.algorithmParams && !(this.algorithmParams instanceof asn1js.Any)) {\n object.algorithmParams = this.algorithmParams.toJSON();\n }\n return object;\n }\n isEqual(algorithmIdentifier) {\n if (!(algorithmIdentifier instanceof AlgorithmIdentifier)) {\n return false;\n }\n if (this.algorithmId !== algorithmIdentifier.algorithmId) {\n return false;\n }\n if (this.algorithmParams) {\n if (algorithmIdentifier.algorithmParams) {\n return JSON.stringify(this.algorithmParams) === JSON.stringify(algorithmIdentifier.algorithmParams);\n }\n return false;\n }\n if (algorithmIdentifier.algorithmParams) {\n return false;\n }\n return true;\n }\n}\nAlgorithmIdentifier.CLASS_NAME = \"AlgorithmIdentifier\";\n\nconst ALT_NAMES = \"altNames\";\nconst CLEAR_PROPS$1t = [\n ALT_NAMES\n];\nclass AltName extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.altNames = pvutils.getParametersValue(parameters, ALT_NAMES, AltName.defaultValues(ALT_NAMES));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ALT_NAMES:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.altNames || EMPTY_STRING),\n value: GeneralName.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1t);\n const asn1 = asn1js.compareSchema(schema, schema, AltName.schema({\n names: {\n altNames: ALT_NAMES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (ALT_NAMES in asn1.result) {\n this.altNames = Array.from(asn1.result.altNames, element => new GeneralName({ schema: element }));\n }\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.altNames, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n altNames: Array.from(this.altNames, o => o.toJSON())\n };\n }\n}\nAltName.CLASS_NAME = \"AltName\";\n\nconst TYPE$3 = \"type\";\nconst VALUES$1 = \"values\";\nconst CLEAR_PROPS$1s = [\n TYPE$3,\n VALUES$1\n];\nclass Attribute extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.type = pvutils.getParametersValue(parameters, TYPE$3, Attribute.defaultValues(TYPE$3));\n this.values = pvutils.getParametersValue(parameters, VALUES$1, Attribute.defaultValues(VALUES$1));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TYPE$3:\n return EMPTY_STRING;\n case VALUES$1:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TYPE$3:\n return (memberValue === EMPTY_STRING);\n case VALUES$1:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.type || EMPTY_STRING) }),\n new asn1js.Set({\n name: (names.setName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.values || EMPTY_STRING),\n value: new asn1js.Any()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1s);\n const asn1 = asn1js.compareSchema(schema, schema, Attribute.schema({\n names: {\n type: TYPE$3,\n values: VALUES$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.type = asn1.result.type.valueBlock.toString();\n this.values = asn1.result.values;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.type }),\n new asn1js.Set({\n value: this.values\n })\n ]\n }));\n }\n toJSON() {\n return {\n type: this.type,\n values: Array.from(this.values, o => o.toJSON())\n };\n }\n}\nAttribute.CLASS_NAME = \"Attribute\";\n\nconst NOT_BEFORE_TIME = \"notBeforeTime\";\nconst NOT_AFTER_TIME = \"notAfterTime\";\nconst CLEAR_PROPS$1r = [\n NOT_BEFORE_TIME,\n NOT_AFTER_TIME,\n];\nclass AttCertValidityPeriod extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.notBeforeTime = pvutils.getParametersValue(parameters, NOT_BEFORE_TIME, AttCertValidityPeriod.defaultValues(NOT_BEFORE_TIME));\n this.notAfterTime = pvutils.getParametersValue(parameters, NOT_AFTER_TIME, AttCertValidityPeriod.defaultValues(NOT_AFTER_TIME));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case NOT_BEFORE_TIME:\n case NOT_AFTER_TIME:\n return new Date(0, 0, 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.GeneralizedTime({ name: (names.notBeforeTime || EMPTY_STRING) }),\n new asn1js.GeneralizedTime({ name: (names.notAfterTime || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1r);\n const asn1 = asn1js.compareSchema(schema, schema, AttCertValidityPeriod.schema({\n names: {\n notBeforeTime: NOT_BEFORE_TIME,\n notAfterTime: NOT_AFTER_TIME\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.notBeforeTime = asn1.result.notBeforeTime.toDate();\n this.notAfterTime = asn1.result.notAfterTime.toDate();\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.GeneralizedTime({ valueDate: this.notBeforeTime }),\n new asn1js.GeneralizedTime({ valueDate: this.notAfterTime }),\n ]\n }));\n }\n toJSON() {\n return {\n notBeforeTime: this.notBeforeTime,\n notAfterTime: this.notAfterTime\n };\n }\n}\nAttCertValidityPeriod.CLASS_NAME = \"AttCertValidityPeriod\";\n\nconst NAMES = \"names\";\nconst GENERAL_NAMES = \"generalNames\";\nclass GeneralNames extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.names = pvutils.getParametersValue(parameters, NAMES, GeneralNames.defaultValues(NAMES));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case \"names\":\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}, optional = false) {\n const names = pvutils.getParametersValue(parameters, NAMES, {});\n return (new asn1js.Sequence({\n optional,\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.generalNames || EMPTY_STRING),\n value: GeneralName.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n NAMES,\n GENERAL_NAMES\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, GeneralNames.schema({\n names: {\n blockName: NAMES,\n generalNames: GENERAL_NAMES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.names = Array.from(asn1.result.generalNames, element => new GeneralName({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.names, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n names: Array.from(this.names, o => o.toJSON())\n };\n }\n}\nGeneralNames.CLASS_NAME = \"GeneralNames\";\n\nconst id_SubjectDirectoryAttributes = \"2.5.29.9\";\nconst id_SubjectKeyIdentifier = \"2.5.29.14\";\nconst id_KeyUsage = \"2.5.29.15\";\nconst id_PrivateKeyUsagePeriod = \"2.5.29.16\";\nconst id_SubjectAltName = \"2.5.29.17\";\nconst id_IssuerAltName = \"2.5.29.18\";\nconst id_BasicConstraints = \"2.5.29.19\";\nconst id_CRLNumber = \"2.5.29.20\";\nconst id_BaseCRLNumber = \"2.5.29.27\";\nconst id_CRLReason = \"2.5.29.21\";\nconst id_InvalidityDate = \"2.5.29.24\";\nconst id_IssuingDistributionPoint = \"2.5.29.28\";\nconst id_CertificateIssuer = \"2.5.29.29\";\nconst id_NameConstraints = \"2.5.29.30\";\nconst id_CRLDistributionPoints = \"2.5.29.31\";\nconst id_FreshestCRL = \"2.5.29.46\";\nconst id_CertificatePolicies = \"2.5.29.32\";\nconst id_AnyPolicy = \"2.5.29.32.0\";\nconst id_MicrosoftAppPolicies = \"1.3.6.1.4.1.311.21.10\";\nconst id_PolicyMappings = \"2.5.29.33\";\nconst id_AuthorityKeyIdentifier = \"2.5.29.35\";\nconst id_PolicyConstraints = \"2.5.29.36\";\nconst id_ExtKeyUsage = \"2.5.29.37\";\nconst id_InhibitAnyPolicy = \"2.5.29.54\";\nconst id_AuthorityInfoAccess = \"1.3.6.1.5.5.7.1.1\";\nconst id_SubjectInfoAccess = \"1.3.6.1.5.5.7.1.11\";\nconst id_SignedCertificateTimestampList = \"1.3.6.1.4.1.11129.2.4.2\";\nconst id_MicrosoftCertTemplateV1 = \"1.3.6.1.4.1.311.20.2\";\nconst id_MicrosoftPrevCaCertHash = \"1.3.6.1.4.1.311.21.2\";\nconst id_MicrosoftCertTemplateV2 = \"1.3.6.1.4.1.311.21.7\";\nconst id_MicrosoftCaVersion = \"1.3.6.1.4.1.311.21.1\";\nconst id_QCStatements = \"1.3.6.1.5.5.7.1.3\";\nconst id_ContentType_Data = \"1.2.840.113549.1.7.1\";\nconst id_ContentType_SignedData = \"1.2.840.113549.1.7.2\";\nconst id_ContentType_EnvelopedData = \"1.2.840.113549.1.7.3\";\nconst id_ContentType_EncryptedData = \"1.2.840.113549.1.7.6\";\nconst id_eContentType_TSTInfo = \"1.2.840.113549.1.9.16.1.4\";\nconst id_CertBag_X509Certificate = \"1.2.840.113549.1.9.22.1\";\nconst id_CertBag_SDSICertificate = \"1.2.840.113549.1.9.22.2\";\nconst id_CertBag_AttributeCertificate = \"1.2.840.113549.1.9.22.3\";\nconst id_CRLBag_X509CRL = \"1.2.840.113549.1.9.23.1\";\nconst id_pkix = \"1.3.6.1.5.5.7\";\nconst id_ad = `${id_pkix}.48`;\nconst id_PKIX_OCSP_Basic = `${id_ad}.1.1`;\nconst id_ad_caIssuers = `${id_ad}.2`;\nconst id_ad_ocsp = `${id_ad}.1`;\nconst id_sha1 = \"1.3.14.3.2.26\";\nconst id_sha256 = \"2.16.840.1.101.3.4.2.1\";\nconst id_sha384 = \"2.16.840.1.101.3.4.2.2\";\nconst id_sha512 = \"2.16.840.1.101.3.4.2.3\";\n\nconst KEY_IDENTIFIER$1 = \"keyIdentifier\";\nconst AUTHORITY_CERT_ISSUER = \"authorityCertIssuer\";\nconst AUTHORITY_CERT_SERIAL_NUMBER = \"authorityCertSerialNumber\";\nconst CLEAR_PROPS$1q = [\n KEY_IDENTIFIER$1,\n AUTHORITY_CERT_ISSUER,\n AUTHORITY_CERT_SERIAL_NUMBER,\n];\nclass AuthorityKeyIdentifier extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (KEY_IDENTIFIER$1 in parameters) {\n this.keyIdentifier = pvutils.getParametersValue(parameters, KEY_IDENTIFIER$1, AuthorityKeyIdentifier.defaultValues(KEY_IDENTIFIER$1));\n }\n if (AUTHORITY_CERT_ISSUER in parameters) {\n this.authorityCertIssuer = pvutils.getParametersValue(parameters, AUTHORITY_CERT_ISSUER, AuthorityKeyIdentifier.defaultValues(AUTHORITY_CERT_ISSUER));\n }\n if (AUTHORITY_CERT_SERIAL_NUMBER in parameters) {\n this.authorityCertSerialNumber = pvutils.getParametersValue(parameters, AUTHORITY_CERT_SERIAL_NUMBER, AuthorityKeyIdentifier.defaultValues(AUTHORITY_CERT_SERIAL_NUMBER));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case KEY_IDENTIFIER$1:\n return new asn1js.OctetString();\n case AUTHORITY_CERT_ISSUER:\n return [];\n case AUTHORITY_CERT_SERIAL_NUMBER:\n return new asn1js.Integer();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Primitive({\n name: (names.keyIdentifier || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n }\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.Repeated({\n name: (names.authorityCertIssuer || EMPTY_STRING),\n value: GeneralName.schema()\n })\n ]\n }),\n new asn1js.Primitive({\n name: (names.authorityCertSerialNumber || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1q);\n const asn1 = asn1js.compareSchema(schema, schema, AuthorityKeyIdentifier.schema({\n names: {\n keyIdentifier: KEY_IDENTIFIER$1,\n authorityCertIssuer: AUTHORITY_CERT_ISSUER,\n authorityCertSerialNumber: AUTHORITY_CERT_SERIAL_NUMBER\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (KEY_IDENTIFIER$1 in asn1.result)\n this.keyIdentifier = new asn1js.OctetString({ valueHex: asn1.result.keyIdentifier.valueBlock.valueHex });\n if (AUTHORITY_CERT_ISSUER in asn1.result)\n this.authorityCertIssuer = Array.from(asn1.result.authorityCertIssuer, o => new GeneralName({ schema: o }));\n if (AUTHORITY_CERT_SERIAL_NUMBER in asn1.result)\n this.authorityCertSerialNumber = new asn1js.Integer({ valueHex: asn1.result.authorityCertSerialNumber.valueBlock.valueHex });\n }\n toSchema() {\n const outputArray = [];\n if (this.keyIdentifier) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n valueHex: this.keyIdentifier.valueBlock.valueHexView\n }));\n }\n if (this.authorityCertIssuer) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: Array.from(this.authorityCertIssuer, o => o.toSchema())\n }));\n }\n if (this.authorityCertSerialNumber) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n valueHex: this.authorityCertSerialNumber.valueBlock.valueHexView\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const object = {};\n if (this.keyIdentifier) {\n object.keyIdentifier = this.keyIdentifier.toJSON();\n }\n if (this.authorityCertIssuer) {\n object.authorityCertIssuer = Array.from(this.authorityCertIssuer, o => o.toJSON());\n }\n if (this.authorityCertSerialNumber) {\n object.authorityCertSerialNumber = this.authorityCertSerialNumber.toJSON();\n }\n return object;\n }\n}\nAuthorityKeyIdentifier.CLASS_NAME = \"AuthorityKeyIdentifier\";\n\nconst PATH_LENGTH_CONSTRAINT = \"pathLenConstraint\";\nconst CA = \"cA\";\nclass BasicConstraints extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.cA = pvutils.getParametersValue(parameters, CA, false);\n if (PATH_LENGTH_CONSTRAINT in parameters) {\n this.pathLenConstraint = pvutils.getParametersValue(parameters, PATH_LENGTH_CONSTRAINT, 0);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CA:\n return false;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Boolean({\n optional: true,\n name: (names.cA || EMPTY_STRING)\n }),\n new asn1js.Integer({\n optional: true,\n name: (names.pathLenConstraint || EMPTY_STRING)\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n CA,\n PATH_LENGTH_CONSTRAINT\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, BasicConstraints.schema({\n names: {\n cA: CA,\n pathLenConstraint: PATH_LENGTH_CONSTRAINT\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (CA in asn1.result) {\n this.cA = asn1.result.cA.valueBlock.value;\n }\n if (PATH_LENGTH_CONSTRAINT in asn1.result) {\n if (asn1.result.pathLenConstraint.valueBlock.isHexOnly) {\n this.pathLenConstraint = asn1.result.pathLenConstraint;\n }\n else {\n this.pathLenConstraint = asn1.result.pathLenConstraint.valueBlock.valueDec;\n }\n }\n }\n toSchema() {\n const outputArray = [];\n if (this.cA !== BasicConstraints.defaultValues(CA))\n outputArray.push(new asn1js.Boolean({ value: this.cA }));\n if (PATH_LENGTH_CONSTRAINT in this) {\n if (this.pathLenConstraint instanceof asn1js.Integer) {\n outputArray.push(this.pathLenConstraint);\n }\n else {\n outputArray.push(new asn1js.Integer({ value: this.pathLenConstraint }));\n }\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const object = {};\n if (this.cA !== BasicConstraints.defaultValues(CA)) {\n object.cA = this.cA;\n }\n if (PATH_LENGTH_CONSTRAINT in this) {\n if (this.pathLenConstraint instanceof asn1js.Integer) {\n object.pathLenConstraint = this.pathLenConstraint.toJSON();\n }\n else {\n object.pathLenConstraint = this.pathLenConstraint;\n }\n }\n return object;\n }\n}\nBasicConstraints.CLASS_NAME = \"BasicConstraints\";\n\nconst CERTIFICATE_INDEX = \"certificateIndex\";\nconst KEY_INDEX = \"keyIndex\";\nclass CAVersion extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.certificateIndex = pvutils.getParametersValue(parameters, CERTIFICATE_INDEX, CAVersion.defaultValues(CERTIFICATE_INDEX));\n this.keyIndex = pvutils.getParametersValue(parameters, KEY_INDEX, CAVersion.defaultValues(KEY_INDEX));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CERTIFICATE_INDEX:\n case KEY_INDEX:\n return 0;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema() {\n return (new asn1js.Integer());\n }\n fromSchema(schema) {\n if (schema.constructor.blockName() !== asn1js.Integer.blockName()) {\n throw new Error(\"Object's schema was not verified against input data for CAVersion\");\n }\n let value = schema.valueBlock.valueHex.slice(0);\n const valueView = new Uint8Array(value);\n switch (true) {\n case (value.byteLength < 4):\n {\n const tempValue = new ArrayBuffer(4);\n const tempValueView = new Uint8Array(tempValue);\n tempValueView.set(valueView, 4 - value.byteLength);\n value = tempValue.slice(0);\n }\n break;\n case (value.byteLength > 4):\n {\n const tempValue = new ArrayBuffer(4);\n const tempValueView = new Uint8Array(tempValue);\n tempValueView.set(valueView.slice(0, 4));\n value = tempValue.slice(0);\n }\n break;\n }\n const keyIndexBuffer = value.slice(0, 2);\n const keyIndexView8 = new Uint8Array(keyIndexBuffer);\n let temp = keyIndexView8[0];\n keyIndexView8[0] = keyIndexView8[1];\n keyIndexView8[1] = temp;\n const keyIndexView16 = new Uint16Array(keyIndexBuffer);\n this.keyIndex = keyIndexView16[0];\n const certificateIndexBuffer = value.slice(2);\n const certificateIndexView8 = new Uint8Array(certificateIndexBuffer);\n temp = certificateIndexView8[0];\n certificateIndexView8[0] = certificateIndexView8[1];\n certificateIndexView8[1] = temp;\n const certificateIndexView16 = new Uint16Array(certificateIndexBuffer);\n this.certificateIndex = certificateIndexView16[0];\n }\n toSchema() {\n const certificateIndexBuffer = new ArrayBuffer(2);\n const certificateIndexView = new Uint16Array(certificateIndexBuffer);\n certificateIndexView[0] = this.certificateIndex;\n const certificateIndexView8 = new Uint8Array(certificateIndexBuffer);\n let temp = certificateIndexView8[0];\n certificateIndexView8[0] = certificateIndexView8[1];\n certificateIndexView8[1] = temp;\n const keyIndexBuffer = new ArrayBuffer(2);\n const keyIndexView = new Uint16Array(keyIndexBuffer);\n keyIndexView[0] = this.keyIndex;\n const keyIndexView8 = new Uint8Array(keyIndexBuffer);\n temp = keyIndexView8[0];\n keyIndexView8[0] = keyIndexView8[1];\n keyIndexView8[1] = temp;\n return (new asn1js.Integer({\n valueHex: pvutils.utilConcatBuf(keyIndexBuffer, certificateIndexBuffer)\n }));\n }\n toJSON() {\n return {\n certificateIndex: this.certificateIndex,\n keyIndex: this.keyIndex\n };\n }\n}\nCAVersion.CLASS_NAME = \"CAVersion\";\n\nconst POLICY_QUALIFIER_ID = \"policyQualifierId\";\nconst QUALIFIER = \"qualifier\";\nconst CLEAR_PROPS$1p = [\n POLICY_QUALIFIER_ID,\n QUALIFIER\n];\nclass PolicyQualifierInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.policyQualifierId = pvutils.getParametersValue(parameters, POLICY_QUALIFIER_ID, PolicyQualifierInfo.defaultValues(POLICY_QUALIFIER_ID));\n this.qualifier = pvutils.getParametersValue(parameters, QUALIFIER, PolicyQualifierInfo.defaultValues(QUALIFIER));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case POLICY_QUALIFIER_ID:\n return EMPTY_STRING;\n case QUALIFIER:\n return new asn1js.Any();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.policyQualifierId || EMPTY_STRING) }),\n new asn1js.Any({ name: (names.qualifier || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1p);\n const asn1 = asn1js.compareSchema(schema, schema, PolicyQualifierInfo.schema({\n names: {\n policyQualifierId: POLICY_QUALIFIER_ID,\n qualifier: QUALIFIER\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.policyQualifierId = asn1.result.policyQualifierId.valueBlock.toString();\n this.qualifier = asn1.result.qualifier;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.policyQualifierId }),\n this.qualifier\n ]\n }));\n }\n toJSON() {\n return {\n policyQualifierId: this.policyQualifierId,\n qualifier: this.qualifier.toJSON()\n };\n }\n}\nPolicyQualifierInfo.CLASS_NAME = \"PolicyQualifierInfo\";\n\nconst POLICY_IDENTIFIER = \"policyIdentifier\";\nconst POLICY_QUALIFIERS = \"policyQualifiers\";\nconst CLEAR_PROPS$1o = [\n POLICY_IDENTIFIER,\n POLICY_QUALIFIERS\n];\nclass PolicyInformation extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.policyIdentifier = pvutils.getParametersValue(parameters, POLICY_IDENTIFIER, PolicyInformation.defaultValues(POLICY_IDENTIFIER));\n if (POLICY_QUALIFIERS in parameters) {\n this.policyQualifiers = pvutils.getParametersValue(parameters, POLICY_QUALIFIERS, PolicyInformation.defaultValues(POLICY_QUALIFIERS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case POLICY_IDENTIFIER:\n return EMPTY_STRING;\n case POLICY_QUALIFIERS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.policyIdentifier || EMPTY_STRING) }),\n new asn1js.Sequence({\n optional: true,\n value: [\n new asn1js.Repeated({\n name: (names.policyQualifiers || EMPTY_STRING),\n value: PolicyQualifierInfo.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1o);\n const asn1 = asn1js.compareSchema(schema, schema, PolicyInformation.schema({\n names: {\n policyIdentifier: POLICY_IDENTIFIER,\n policyQualifiers: POLICY_QUALIFIERS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.policyIdentifier = asn1.result.policyIdentifier.valueBlock.toString();\n if (POLICY_QUALIFIERS in asn1.result) {\n this.policyQualifiers = Array.from(asn1.result.policyQualifiers, element => new PolicyQualifierInfo({ schema: element }));\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.policyIdentifier }));\n if (this.policyQualifiers) {\n outputArray.push(new asn1js.Sequence({\n value: Array.from(this.policyQualifiers, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n policyIdentifier: this.policyIdentifier\n };\n if (this.policyQualifiers)\n res.policyQualifiers = Array.from(this.policyQualifiers, o => o.toJSON());\n return res;\n }\n}\nPolicyInformation.CLASS_NAME = \"PolicyInformation\";\n\nconst CERTIFICATE_POLICIES = \"certificatePolicies\";\nconst CLEAR_PROPS$1n = [\n CERTIFICATE_POLICIES,\n];\nclass CertificatePolicies extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.certificatePolicies = pvutils.getParametersValue(parameters, CERTIFICATE_POLICIES, CertificatePolicies.defaultValues(CERTIFICATE_POLICIES));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CERTIFICATE_POLICIES:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.certificatePolicies || EMPTY_STRING),\n value: PolicyInformation.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1n);\n const asn1 = asn1js.compareSchema(schema, schema, CertificatePolicies.schema({\n names: {\n certificatePolicies: CERTIFICATE_POLICIES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.certificatePolicies = Array.from(asn1.result.certificatePolicies, element => new PolicyInformation({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.certificatePolicies, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n certificatePolicies: Array.from(this.certificatePolicies, o => o.toJSON())\n };\n }\n}\nCertificatePolicies.CLASS_NAME = \"CertificatePolicies\";\n\nconst TEMPLATE_ID = \"templateID\";\nconst TEMPLATE_MAJOR_VERSION = \"templateMajorVersion\";\nconst TEMPLATE_MINOR_VERSION = \"templateMinorVersion\";\nconst CLEAR_PROPS$1m = [\n TEMPLATE_ID,\n TEMPLATE_MAJOR_VERSION,\n TEMPLATE_MINOR_VERSION\n];\nclass CertificateTemplate extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.templateID = pvutils.getParametersValue(parameters, TEMPLATE_ID, CertificateTemplate.defaultValues(TEMPLATE_ID));\n if (TEMPLATE_MAJOR_VERSION in parameters) {\n this.templateMajorVersion = pvutils.getParametersValue(parameters, TEMPLATE_MAJOR_VERSION, CertificateTemplate.defaultValues(TEMPLATE_MAJOR_VERSION));\n }\n if (TEMPLATE_MINOR_VERSION in parameters) {\n this.templateMinorVersion = pvutils.getParametersValue(parameters, TEMPLATE_MINOR_VERSION, CertificateTemplate.defaultValues(TEMPLATE_MINOR_VERSION));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TEMPLATE_ID:\n return EMPTY_STRING;\n case TEMPLATE_MAJOR_VERSION:\n case TEMPLATE_MINOR_VERSION:\n return 0;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.templateID || EMPTY_STRING) }),\n new asn1js.Integer({\n name: (names.templateMajorVersion || EMPTY_STRING),\n optional: true\n }),\n new asn1js.Integer({\n name: (names.templateMinorVersion || EMPTY_STRING),\n optional: true\n }),\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1m);\n const asn1 = asn1js.compareSchema(schema, schema, CertificateTemplate.schema({\n names: {\n templateID: TEMPLATE_ID,\n templateMajorVersion: TEMPLATE_MAJOR_VERSION,\n templateMinorVersion: TEMPLATE_MINOR_VERSION\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.templateID = asn1.result.templateID.valueBlock.toString();\n if (TEMPLATE_MAJOR_VERSION in asn1.result) {\n this.templateMajorVersion = asn1.result.templateMajorVersion.valueBlock.valueDec;\n }\n if (TEMPLATE_MINOR_VERSION in asn1.result) {\n this.templateMinorVersion = asn1.result.templateMinorVersion.valueBlock.valueDec;\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.templateID }));\n if (TEMPLATE_MAJOR_VERSION in this) {\n outputArray.push(new asn1js.Integer({ value: this.templateMajorVersion }));\n }\n if (TEMPLATE_MINOR_VERSION in this) {\n outputArray.push(new asn1js.Integer({ value: this.templateMinorVersion }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n templateID: this.templateID\n };\n if (TEMPLATE_MAJOR_VERSION in this)\n res.templateMajorVersion = this.templateMajorVersion;\n if (TEMPLATE_MINOR_VERSION in this)\n res.templateMinorVersion = this.templateMinorVersion;\n return res;\n }\n}\n\nconst DISTRIBUTION_POINT$1 = \"distributionPoint\";\nconst DISTRIBUTION_POINT_NAMES$1 = \"distributionPointNames\";\nconst REASONS = \"reasons\";\nconst CRL_ISSUER = \"cRLIssuer\";\nconst CRL_ISSUER_NAMES = \"cRLIssuerNames\";\nconst CLEAR_PROPS$1l = [\n DISTRIBUTION_POINT$1,\n DISTRIBUTION_POINT_NAMES$1,\n REASONS,\n CRL_ISSUER,\n CRL_ISSUER_NAMES,\n];\nclass DistributionPoint extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (DISTRIBUTION_POINT$1 in parameters) {\n this.distributionPoint = pvutils.getParametersValue(parameters, DISTRIBUTION_POINT$1, DistributionPoint.defaultValues(DISTRIBUTION_POINT$1));\n }\n if (REASONS in parameters) {\n this.reasons = pvutils.getParametersValue(parameters, REASONS, DistributionPoint.defaultValues(REASONS));\n }\n if (CRL_ISSUER in parameters) {\n this.cRLIssuer = pvutils.getParametersValue(parameters, CRL_ISSUER, DistributionPoint.defaultValues(CRL_ISSUER));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case DISTRIBUTION_POINT$1:\n return [];\n case REASONS:\n return new asn1js.BitString();\n case CRL_ISSUER:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.Constructed({\n name: (names.distributionPoint || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Repeated({\n name: (names.distributionPointNames || EMPTY_STRING),\n value: GeneralName.schema()\n })\n ]\n }),\n new asn1js.Constructed({\n name: (names.distributionPoint || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: RelativeDistinguishedNames.schema().valueBlock.value\n })\n ]\n })\n ]\n }),\n new asn1js.Primitive({\n name: (names.reasons || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n }\n }),\n new asn1js.Constructed({\n name: (names.cRLIssuer || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [\n new asn1js.Repeated({\n name: (names.cRLIssuerNames || EMPTY_STRING),\n value: GeneralName.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1l);\n const asn1 = asn1js.compareSchema(schema, schema, DistributionPoint.schema({\n names: {\n distributionPoint: DISTRIBUTION_POINT$1,\n distributionPointNames: DISTRIBUTION_POINT_NAMES$1,\n reasons: REASONS,\n cRLIssuer: CRL_ISSUER,\n cRLIssuerNames: CRL_ISSUER_NAMES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (DISTRIBUTION_POINT$1 in asn1.result) {\n if (asn1.result.distributionPoint.idBlock.tagNumber === 0) {\n this.distributionPoint = Array.from(asn1.result.distributionPointNames, element => new GeneralName({ schema: element }));\n }\n if (asn1.result.distributionPoint.idBlock.tagNumber === 1) {\n this.distributionPoint = new RelativeDistinguishedNames({\n schema: new asn1js.Sequence({\n value: asn1.result.distributionPoint.valueBlock.value\n })\n });\n }\n }\n if (REASONS in asn1.result) {\n this.reasons = new asn1js.BitString({ valueHex: asn1.result.reasons.valueBlock.valueHex });\n }\n if (CRL_ISSUER in asn1.result) {\n this.cRLIssuer = Array.from(asn1.result.cRLIssuerNames, element => new GeneralName({ schema: element }));\n }\n }\n toSchema() {\n const outputArray = [];\n if (this.distributionPoint) {\n let internalValue;\n if (this.distributionPoint instanceof Array) {\n internalValue = new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: Array.from(this.distributionPoint, o => o.toSchema())\n });\n }\n else {\n internalValue = new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [this.distributionPoint.toSchema()]\n });\n }\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [internalValue]\n }));\n }\n if (this.reasons) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n valueHex: this.reasons.valueBlock.valueHexView\n }));\n }\n if (this.cRLIssuer) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: Array.from(this.cRLIssuer, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const object = {};\n if (this.distributionPoint) {\n if (this.distributionPoint instanceof Array) {\n object.distributionPoint = Array.from(this.distributionPoint, o => o.toJSON());\n }\n else {\n object.distributionPoint = this.distributionPoint.toJSON();\n }\n }\n if (this.reasons) {\n object.reasons = this.reasons.toJSON();\n }\n if (this.cRLIssuer) {\n object.cRLIssuer = Array.from(this.cRLIssuer, o => o.toJSON());\n }\n return object;\n }\n}\nDistributionPoint.CLASS_NAME = \"DistributionPoint\";\n\nconst DISTRIBUTION_POINTS = \"distributionPoints\";\nconst CLEAR_PROPS$1k = [\n DISTRIBUTION_POINTS\n];\nclass CRLDistributionPoints extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.distributionPoints = pvutils.getParametersValue(parameters, DISTRIBUTION_POINTS, CRLDistributionPoints.defaultValues(DISTRIBUTION_POINTS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case DISTRIBUTION_POINTS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.distributionPoints || EMPTY_STRING),\n value: DistributionPoint.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1k);\n const asn1 = asn1js.compareSchema(schema, schema, CRLDistributionPoints.schema({\n names: {\n distributionPoints: DISTRIBUTION_POINTS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.distributionPoints = Array.from(asn1.result.distributionPoints, element => new DistributionPoint({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.distributionPoints, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n distributionPoints: Array.from(this.distributionPoints, o => o.toJSON())\n };\n }\n}\nCRLDistributionPoints.CLASS_NAME = \"CRLDistributionPoints\";\n\nconst KEY_PURPOSES = \"keyPurposes\";\nconst CLEAR_PROPS$1j = [\n KEY_PURPOSES,\n];\nclass ExtKeyUsage extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.keyPurposes = pvutils.getParametersValue(parameters, KEY_PURPOSES, ExtKeyUsage.defaultValues(KEY_PURPOSES));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case KEY_PURPOSES:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.keyPurposes || EMPTY_STRING),\n value: new asn1js.ObjectIdentifier()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1j);\n const asn1 = asn1js.compareSchema(schema, schema, ExtKeyUsage.schema({\n names: {\n keyPurposes: KEY_PURPOSES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.keyPurposes = Array.from(asn1.result.keyPurposes, (element) => element.valueBlock.toString());\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.keyPurposes, element => new asn1js.ObjectIdentifier({ value: element }))\n }));\n }\n toJSON() {\n return {\n keyPurposes: Array.from(this.keyPurposes)\n };\n }\n}\nExtKeyUsage.CLASS_NAME = \"ExtKeyUsage\";\n\nconst ACCESS_DESCRIPTIONS = \"accessDescriptions\";\nclass InfoAccess extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.accessDescriptions = pvutils.getParametersValue(parameters, ACCESS_DESCRIPTIONS, InfoAccess.defaultValues(ACCESS_DESCRIPTIONS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ACCESS_DESCRIPTIONS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.accessDescriptions || EMPTY_STRING),\n value: AccessDescription.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n ACCESS_DESCRIPTIONS\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, InfoAccess.schema({\n names: {\n accessDescriptions: ACCESS_DESCRIPTIONS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.accessDescriptions = Array.from(asn1.result.accessDescriptions, element => new AccessDescription({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.accessDescriptions, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n accessDescriptions: Array.from(this.accessDescriptions, o => o.toJSON())\n };\n }\n}\nInfoAccess.CLASS_NAME = \"InfoAccess\";\n\nconst DISTRIBUTION_POINT = \"distributionPoint\";\nconst DISTRIBUTION_POINT_NAMES = \"distributionPointNames\";\nconst ONLY_CONTAINS_USER_CERTS = \"onlyContainsUserCerts\";\nconst ONLY_CONTAINS_CA_CERTS = \"onlyContainsCACerts\";\nconst ONLY_SOME_REASON = \"onlySomeReasons\";\nconst INDIRECT_CRL = \"indirectCRL\";\nconst ONLY_CONTAINS_ATTRIBUTE_CERTS = \"onlyContainsAttributeCerts\";\nconst CLEAR_PROPS$1i = [\n DISTRIBUTION_POINT,\n DISTRIBUTION_POINT_NAMES,\n ONLY_CONTAINS_USER_CERTS,\n ONLY_CONTAINS_CA_CERTS,\n ONLY_SOME_REASON,\n INDIRECT_CRL,\n ONLY_CONTAINS_ATTRIBUTE_CERTS,\n];\nclass IssuingDistributionPoint extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (DISTRIBUTION_POINT in parameters) {\n this.distributionPoint = pvutils.getParametersValue(parameters, DISTRIBUTION_POINT, IssuingDistributionPoint.defaultValues(DISTRIBUTION_POINT));\n }\n this.onlyContainsUserCerts = pvutils.getParametersValue(parameters, ONLY_CONTAINS_USER_CERTS, IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_USER_CERTS));\n this.onlyContainsCACerts = pvutils.getParametersValue(parameters, ONLY_CONTAINS_CA_CERTS, IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_CA_CERTS));\n if (ONLY_SOME_REASON in parameters) {\n this.onlySomeReasons = pvutils.getParametersValue(parameters, ONLY_SOME_REASON, IssuingDistributionPoint.defaultValues(ONLY_SOME_REASON));\n }\n this.indirectCRL = pvutils.getParametersValue(parameters, INDIRECT_CRL, IssuingDistributionPoint.defaultValues(INDIRECT_CRL));\n this.onlyContainsAttributeCerts = pvutils.getParametersValue(parameters, ONLY_CONTAINS_ATTRIBUTE_CERTS, IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_ATTRIBUTE_CERTS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case DISTRIBUTION_POINT:\n return [];\n case ONLY_CONTAINS_USER_CERTS:\n return false;\n case ONLY_CONTAINS_CA_CERTS:\n return false;\n case ONLY_SOME_REASON:\n return 0;\n case INDIRECT_CRL:\n return false;\n case ONLY_CONTAINS_ATTRIBUTE_CERTS:\n return false;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.Constructed({\n name: (names.distributionPoint || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Repeated({\n name: (names.distributionPointNames || EMPTY_STRING),\n value: GeneralName.schema()\n })\n ]\n }),\n new asn1js.Constructed({\n name: (names.distributionPoint || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: RelativeDistinguishedNames.schema().valueBlock.value\n })\n ]\n })\n ]\n }),\n new asn1js.Primitive({\n name: (names.onlyContainsUserCerts || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n }\n }),\n new asn1js.Primitive({\n name: (names.onlyContainsCACerts || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n }\n }),\n new asn1js.Primitive({\n name: (names.onlySomeReasons || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n }\n }),\n new asn1js.Primitive({\n name: (names.indirectCRL || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 4\n }\n }),\n new asn1js.Primitive({\n name: (names.onlyContainsAttributeCerts || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 5\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1i);\n const asn1 = asn1js.compareSchema(schema, schema, IssuingDistributionPoint.schema({\n names: {\n distributionPoint: DISTRIBUTION_POINT,\n distributionPointNames: DISTRIBUTION_POINT_NAMES,\n onlyContainsUserCerts: ONLY_CONTAINS_USER_CERTS,\n onlyContainsCACerts: ONLY_CONTAINS_CA_CERTS,\n onlySomeReasons: ONLY_SOME_REASON,\n indirectCRL: INDIRECT_CRL,\n onlyContainsAttributeCerts: ONLY_CONTAINS_ATTRIBUTE_CERTS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (DISTRIBUTION_POINT in asn1.result) {\n switch (true) {\n case (asn1.result.distributionPoint.idBlock.tagNumber === 0):\n this.distributionPoint = Array.from(asn1.result.distributionPointNames, element => new GeneralName({ schema: element }));\n break;\n case (asn1.result.distributionPoint.idBlock.tagNumber === 1):\n {\n this.distributionPoint = new RelativeDistinguishedNames({\n schema: new asn1js.Sequence({\n value: asn1.result.distributionPoint.valueBlock.value\n })\n });\n }\n break;\n default:\n throw new Error(\"Unknown tagNumber for distributionPoint: {$asn1.result.distributionPoint.idBlock.tagNumber}\");\n }\n }\n if (ONLY_CONTAINS_USER_CERTS in asn1.result) {\n const view = new Uint8Array(asn1.result.onlyContainsUserCerts.valueBlock.valueHex);\n this.onlyContainsUserCerts = (view[0] !== 0x00);\n }\n if (ONLY_CONTAINS_CA_CERTS in asn1.result) {\n const view = new Uint8Array(asn1.result.onlyContainsCACerts.valueBlock.valueHex);\n this.onlyContainsCACerts = (view[0] !== 0x00);\n }\n if (ONLY_SOME_REASON in asn1.result) {\n const view = new Uint8Array(asn1.result.onlySomeReasons.valueBlock.valueHex);\n this.onlySomeReasons = view[0];\n }\n if (INDIRECT_CRL in asn1.result) {\n const view = new Uint8Array(asn1.result.indirectCRL.valueBlock.valueHex);\n this.indirectCRL = (view[0] !== 0x00);\n }\n if (ONLY_CONTAINS_ATTRIBUTE_CERTS in asn1.result) {\n const view = new Uint8Array(asn1.result.onlyContainsAttributeCerts.valueBlock.valueHex);\n this.onlyContainsAttributeCerts = (view[0] !== 0x00);\n }\n }\n toSchema() {\n const outputArray = [];\n if (this.distributionPoint) {\n let value;\n if (this.distributionPoint instanceof Array) {\n value = new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: Array.from(this.distributionPoint, o => o.toSchema())\n });\n }\n else {\n value = this.distributionPoint.toSchema();\n value.idBlock.tagClass = 3;\n value.idBlock.tagNumber = 1;\n }\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [value]\n }));\n }\n if (this.onlyContainsUserCerts !== IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_USER_CERTS)) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n valueHex: (new Uint8Array([0xFF])).buffer\n }));\n }\n if (this.onlyContainsCACerts !== IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_CA_CERTS)) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n valueHex: (new Uint8Array([0xFF])).buffer\n }));\n }\n if (this.onlySomeReasons !== undefined) {\n const buffer = new ArrayBuffer(1);\n const view = new Uint8Array(buffer);\n view[0] = this.onlySomeReasons;\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n valueHex: buffer\n }));\n }\n if (this.indirectCRL !== IssuingDistributionPoint.defaultValues(INDIRECT_CRL)) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 4\n },\n valueHex: (new Uint8Array([0xFF])).buffer\n }));\n }\n if (this.onlyContainsAttributeCerts !== IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_ATTRIBUTE_CERTS)) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 5\n },\n valueHex: (new Uint8Array([0xFF])).buffer\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const obj = {};\n if (this.distributionPoint) {\n if (this.distributionPoint instanceof Array) {\n obj.distributionPoint = Array.from(this.distributionPoint, o => o.toJSON());\n }\n else {\n obj.distributionPoint = this.distributionPoint.toJSON();\n }\n }\n if (this.onlyContainsUserCerts !== IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_USER_CERTS)) {\n obj.onlyContainsUserCerts = this.onlyContainsUserCerts;\n }\n if (this.onlyContainsCACerts !== IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_CA_CERTS)) {\n obj.onlyContainsCACerts = this.onlyContainsCACerts;\n }\n if (ONLY_SOME_REASON in this) {\n obj.onlySomeReasons = this.onlySomeReasons;\n }\n if (this.indirectCRL !== IssuingDistributionPoint.defaultValues(INDIRECT_CRL)) {\n obj.indirectCRL = this.indirectCRL;\n }\n if (this.onlyContainsAttributeCerts !== IssuingDistributionPoint.defaultValues(ONLY_CONTAINS_ATTRIBUTE_CERTS)) {\n obj.onlyContainsAttributeCerts = this.onlyContainsAttributeCerts;\n }\n return obj;\n }\n}\nIssuingDistributionPoint.CLASS_NAME = \"IssuingDistributionPoint\";\n\nconst BASE = \"base\";\nconst MINIMUM = \"minimum\";\nconst MAXIMUM = \"maximum\";\nconst CLEAR_PROPS$1h = [\n BASE,\n MINIMUM,\n MAXIMUM\n];\nclass GeneralSubtree extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.base = pvutils.getParametersValue(parameters, BASE, GeneralSubtree.defaultValues(BASE));\n this.minimum = pvutils.getParametersValue(parameters, MINIMUM, GeneralSubtree.defaultValues(MINIMUM));\n if (MAXIMUM in parameters) {\n this.maximum = pvutils.getParametersValue(parameters, MAXIMUM, GeneralSubtree.defaultValues(MAXIMUM));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case BASE:\n return new GeneralName();\n case MINIMUM:\n return 0;\n case MAXIMUM:\n return 0;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n GeneralName.schema(names.base || {}),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Integer({ name: (names.minimum || EMPTY_STRING) })]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [new asn1js.Integer({ name: (names.maximum || EMPTY_STRING) })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1h);\n const asn1 = asn1js.compareSchema(schema, schema, GeneralSubtree.schema({\n names: {\n base: {\n names: {\n blockName: BASE\n }\n },\n minimum: MINIMUM,\n maximum: MAXIMUM\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.base = new GeneralName({ schema: asn1.result.base });\n if (MINIMUM in asn1.result) {\n if (asn1.result.minimum.valueBlock.isHexOnly)\n this.minimum = asn1.result.minimum;\n else\n this.minimum = asn1.result.minimum.valueBlock.valueDec;\n }\n if (MAXIMUM in asn1.result) {\n if (asn1.result.maximum.valueBlock.isHexOnly)\n this.maximum = asn1.result.maximum;\n else\n this.maximum = asn1.result.maximum.valueBlock.valueDec;\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.base.toSchema());\n if (this.minimum !== 0) {\n let valueMinimum = 0;\n if (this.minimum instanceof asn1js.Integer) {\n valueMinimum = this.minimum;\n }\n else {\n valueMinimum = new asn1js.Integer({ value: this.minimum });\n }\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [valueMinimum]\n }));\n }\n if (MAXIMUM in this) {\n let valueMaximum = 0;\n if (this.maximum instanceof asn1js.Integer) {\n valueMaximum = this.maximum;\n }\n else {\n valueMaximum = new asn1js.Integer({ value: this.maximum });\n }\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [valueMaximum]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n base: this.base.toJSON()\n };\n if (this.minimum !== 0) {\n if (typeof this.minimum === \"number\") {\n res.minimum = this.minimum;\n }\n else {\n res.minimum = this.minimum.toJSON();\n }\n }\n if (this.maximum !== undefined) {\n if (typeof this.maximum === \"number\") {\n res.maximum = this.maximum;\n }\n else {\n res.maximum = this.maximum.toJSON();\n }\n }\n return res;\n }\n}\nGeneralSubtree.CLASS_NAME = \"GeneralSubtree\";\n\nconst PERMITTED_SUBTREES = \"permittedSubtrees\";\nconst EXCLUDED_SUBTREES = \"excludedSubtrees\";\nconst CLEAR_PROPS$1g = [\n PERMITTED_SUBTREES,\n EXCLUDED_SUBTREES\n];\nclass NameConstraints extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (PERMITTED_SUBTREES in parameters) {\n this.permittedSubtrees = pvutils.getParametersValue(parameters, PERMITTED_SUBTREES, NameConstraints.defaultValues(PERMITTED_SUBTREES));\n }\n if (EXCLUDED_SUBTREES in parameters) {\n this.excludedSubtrees = pvutils.getParametersValue(parameters, EXCLUDED_SUBTREES, NameConstraints.defaultValues(EXCLUDED_SUBTREES));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case PERMITTED_SUBTREES:\n case EXCLUDED_SUBTREES:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Repeated({\n name: (names.permittedSubtrees || EMPTY_STRING),\n value: GeneralSubtree.schema()\n })\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.Repeated({\n name: (names.excludedSubtrees || EMPTY_STRING),\n value: GeneralSubtree.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1g);\n const asn1 = asn1js.compareSchema(schema, schema, NameConstraints.schema({\n names: {\n permittedSubtrees: PERMITTED_SUBTREES,\n excludedSubtrees: EXCLUDED_SUBTREES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (PERMITTED_SUBTREES in asn1.result)\n this.permittedSubtrees = Array.from(asn1.result.permittedSubtrees, element => new GeneralSubtree({ schema: element }));\n if (EXCLUDED_SUBTREES in asn1.result)\n this.excludedSubtrees = Array.from(asn1.result.excludedSubtrees, element => new GeneralSubtree({ schema: element }));\n }\n toSchema() {\n const outputArray = [];\n if (this.permittedSubtrees) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: Array.from(this.permittedSubtrees, o => o.toSchema())\n }));\n }\n if (this.excludedSubtrees) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: Array.from(this.excludedSubtrees, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const object = {};\n if (this.permittedSubtrees) {\n object.permittedSubtrees = Array.from(this.permittedSubtrees, o => o.toJSON());\n }\n if (this.excludedSubtrees) {\n object.excludedSubtrees = Array.from(this.excludedSubtrees, o => o.toJSON());\n }\n return object;\n }\n}\nNameConstraints.CLASS_NAME = \"NameConstraints\";\n\nconst REQUIRE_EXPLICIT_POLICY = \"requireExplicitPolicy\";\nconst INHIBIT_POLICY_MAPPING = \"inhibitPolicyMapping\";\nconst CLEAR_PROPS$1f = [\n REQUIRE_EXPLICIT_POLICY,\n INHIBIT_POLICY_MAPPING,\n];\nclass PolicyConstraints extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (REQUIRE_EXPLICIT_POLICY in parameters) {\n this.requireExplicitPolicy = pvutils.getParametersValue(parameters, REQUIRE_EXPLICIT_POLICY, PolicyConstraints.defaultValues(REQUIRE_EXPLICIT_POLICY));\n }\n if (INHIBIT_POLICY_MAPPING in parameters) {\n this.inhibitPolicyMapping = pvutils.getParametersValue(parameters, INHIBIT_POLICY_MAPPING, PolicyConstraints.defaultValues(INHIBIT_POLICY_MAPPING));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case REQUIRE_EXPLICIT_POLICY:\n return 0;\n case INHIBIT_POLICY_MAPPING:\n return 0;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Primitive({\n name: (names.requireExplicitPolicy || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n }\n }),\n new asn1js.Primitive({\n name: (names.inhibitPolicyMapping || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1f);\n const asn1 = asn1js.compareSchema(schema, schema, PolicyConstraints.schema({\n names: {\n requireExplicitPolicy: REQUIRE_EXPLICIT_POLICY,\n inhibitPolicyMapping: INHIBIT_POLICY_MAPPING\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (REQUIRE_EXPLICIT_POLICY in asn1.result) {\n const field1 = asn1.result.requireExplicitPolicy;\n field1.idBlock.tagClass = 1;\n field1.idBlock.tagNumber = 2;\n const ber1 = field1.toBER(false);\n const int1 = asn1js.fromBER(ber1);\n AsnError.assert(int1, \"Integer\");\n this.requireExplicitPolicy = int1.result.valueBlock.valueDec;\n }\n if (INHIBIT_POLICY_MAPPING in asn1.result) {\n const field2 = asn1.result.inhibitPolicyMapping;\n field2.idBlock.tagClass = 1;\n field2.idBlock.tagNumber = 2;\n const ber2 = field2.toBER(false);\n const int2 = asn1js.fromBER(ber2);\n AsnError.assert(int2, \"Integer\");\n this.inhibitPolicyMapping = int2.result.valueBlock.valueDec;\n }\n }\n toSchema() {\n const outputArray = [];\n if (REQUIRE_EXPLICIT_POLICY in this) {\n const int1 = new asn1js.Integer({ value: this.requireExplicitPolicy });\n int1.idBlock.tagClass = 3;\n int1.idBlock.tagNumber = 0;\n outputArray.push(int1);\n }\n if (INHIBIT_POLICY_MAPPING in this) {\n const int2 = new asn1js.Integer({ value: this.inhibitPolicyMapping });\n int2.idBlock.tagClass = 3;\n int2.idBlock.tagNumber = 1;\n outputArray.push(int2);\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {};\n if (REQUIRE_EXPLICIT_POLICY in this) {\n res.requireExplicitPolicy = this.requireExplicitPolicy;\n }\n if (INHIBIT_POLICY_MAPPING in this) {\n res.inhibitPolicyMapping = this.inhibitPolicyMapping;\n }\n return res;\n }\n}\nPolicyConstraints.CLASS_NAME = \"PolicyConstraints\";\n\nconst ISSUER_DOMAIN_POLICY = \"issuerDomainPolicy\";\nconst SUBJECT_DOMAIN_POLICY = \"subjectDomainPolicy\";\nconst CLEAR_PROPS$1e = [\n ISSUER_DOMAIN_POLICY,\n SUBJECT_DOMAIN_POLICY\n];\nclass PolicyMapping extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.issuerDomainPolicy = pvutils.getParametersValue(parameters, ISSUER_DOMAIN_POLICY, PolicyMapping.defaultValues(ISSUER_DOMAIN_POLICY));\n this.subjectDomainPolicy = pvutils.getParametersValue(parameters, SUBJECT_DOMAIN_POLICY, PolicyMapping.defaultValues(SUBJECT_DOMAIN_POLICY));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ISSUER_DOMAIN_POLICY:\n return EMPTY_STRING;\n case SUBJECT_DOMAIN_POLICY:\n return EMPTY_STRING;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.issuerDomainPolicy || EMPTY_STRING) }),\n new asn1js.ObjectIdentifier({ name: (names.subjectDomainPolicy || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1e);\n const asn1 = asn1js.compareSchema(schema, schema, PolicyMapping.schema({\n names: {\n issuerDomainPolicy: ISSUER_DOMAIN_POLICY,\n subjectDomainPolicy: SUBJECT_DOMAIN_POLICY\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.issuerDomainPolicy = asn1.result.issuerDomainPolicy.valueBlock.toString();\n this.subjectDomainPolicy = asn1.result.subjectDomainPolicy.valueBlock.toString();\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.issuerDomainPolicy }),\n new asn1js.ObjectIdentifier({ value: this.subjectDomainPolicy })\n ]\n }));\n }\n toJSON() {\n return {\n issuerDomainPolicy: this.issuerDomainPolicy,\n subjectDomainPolicy: this.subjectDomainPolicy\n };\n }\n}\nPolicyMapping.CLASS_NAME = \"PolicyMapping\";\n\nconst MAPPINGS = \"mappings\";\nconst CLEAR_PROPS$1d = [\n MAPPINGS,\n];\nclass PolicyMappings extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.mappings = pvutils.getParametersValue(parameters, MAPPINGS, PolicyMappings.defaultValues(MAPPINGS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case MAPPINGS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.mappings || EMPTY_STRING),\n value: PolicyMapping.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1d);\n const asn1 = asn1js.compareSchema(schema, schema, PolicyMappings.schema({\n names: {\n mappings: MAPPINGS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.mappings = Array.from(asn1.result.mappings, element => new PolicyMapping({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.mappings, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n mappings: Array.from(this.mappings, o => o.toJSON())\n };\n }\n}\nPolicyMappings.CLASS_NAME = \"PolicyMappings\";\n\nconst NOT_BEFORE$1 = \"notBefore\";\nconst NOT_AFTER$1 = \"notAfter\";\nconst CLEAR_PROPS$1c = [\n NOT_BEFORE$1,\n NOT_AFTER$1\n];\nclass PrivateKeyUsagePeriod extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (NOT_BEFORE$1 in parameters) {\n this.notBefore = pvutils.getParametersValue(parameters, NOT_BEFORE$1, PrivateKeyUsagePeriod.defaultValues(NOT_BEFORE$1));\n }\n if (NOT_AFTER$1 in parameters) {\n this.notAfter = pvutils.getParametersValue(parameters, NOT_AFTER$1, PrivateKeyUsagePeriod.defaultValues(NOT_AFTER$1));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case NOT_BEFORE$1:\n return new Date();\n case NOT_AFTER$1:\n return new Date();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Primitive({\n name: (names.notBefore || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n }\n }),\n new asn1js.Primitive({\n name: (names.notAfter || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1c);\n const asn1 = asn1js.compareSchema(schema, schema, PrivateKeyUsagePeriod.schema({\n names: {\n notBefore: NOT_BEFORE$1,\n notAfter: NOT_AFTER$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (NOT_BEFORE$1 in asn1.result) {\n const localNotBefore = new asn1js.GeneralizedTime();\n localNotBefore.fromBuffer(asn1.result.notBefore.valueBlock.valueHex);\n this.notBefore = localNotBefore.toDate();\n }\n if (NOT_AFTER$1 in asn1.result) {\n const localNotAfter = new asn1js.GeneralizedTime({ valueHex: asn1.result.notAfter.valueBlock.valueHex });\n localNotAfter.fromBuffer(asn1.result.notAfter.valueBlock.valueHex);\n this.notAfter = localNotAfter.toDate();\n }\n }\n toSchema() {\n const outputArray = [];\n if (NOT_BEFORE$1 in this) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n valueHex: (new asn1js.GeneralizedTime({ valueDate: this.notBefore })).valueBlock.valueHexView\n }));\n }\n if (NOT_AFTER$1 in this) {\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n valueHex: (new asn1js.GeneralizedTime({ valueDate: this.notAfter })).valueBlock.valueHexView\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {};\n if (this.notBefore) {\n res.notBefore = this.notBefore;\n }\n if (this.notAfter) {\n res.notAfter = this.notAfter;\n }\n return res;\n }\n}\nPrivateKeyUsagePeriod.CLASS_NAME = \"PrivateKeyUsagePeriod\";\n\nconst ID = \"id\";\nconst TYPE$2 = \"type\";\nconst VALUES = \"values\";\nconst QC_STATEMENT_CLEAR_PROPS = [\n ID,\n TYPE$2\n];\nconst QC_STATEMENTS_CLEAR_PROPS = [\n VALUES\n];\nclass QCStatement extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.id = pvutils.getParametersValue(parameters, ID, QCStatement.defaultValues(ID));\n if (TYPE$2 in parameters) {\n this.type = pvutils.getParametersValue(parameters, TYPE$2, QCStatement.defaultValues(TYPE$2));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ID:\n return EMPTY_STRING;\n case TYPE$2:\n return new asn1js.Null();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case ID:\n return (memberValue === EMPTY_STRING);\n case TYPE$2:\n return (memberValue instanceof asn1js.Null);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.id || EMPTY_STRING) }),\n new asn1js.Any({\n name: (names.type || EMPTY_STRING),\n optional: true\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, QC_STATEMENT_CLEAR_PROPS);\n const asn1 = asn1js.compareSchema(schema, schema, QCStatement.schema({\n names: {\n id: ID,\n type: TYPE$2\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.id = asn1.result.id.valueBlock.toString();\n if (TYPE$2 in asn1.result)\n this.type = asn1.result.type;\n }\n toSchema() {\n const value = [\n new asn1js.ObjectIdentifier({ value: this.id })\n ];\n if (TYPE$2 in this)\n value.push(this.type);\n return (new asn1js.Sequence({\n value,\n }));\n }\n toJSON() {\n const object = {\n id: this.id\n };\n if (this.type) {\n object.type = this.type.toJSON();\n }\n return object;\n }\n}\nQCStatement.CLASS_NAME = \"QCStatement\";\nclass QCStatements extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.values = pvutils.getParametersValue(parameters, VALUES, QCStatements.defaultValues(VALUES));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VALUES:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VALUES:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.values || EMPTY_STRING),\n value: QCStatement.schema(names.value || {})\n }),\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, QC_STATEMENTS_CLEAR_PROPS);\n const asn1 = asn1js.compareSchema(schema, schema, QCStatements.schema({\n names: {\n values: VALUES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.values = Array.from(asn1.result.values, element => new QCStatement({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.values, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n values: Array.from(this.values, o => o.toJSON())\n };\n }\n}\nQCStatements.CLASS_NAME = \"QCStatements\";\n\nvar _a;\nclass ECNamedCurves {\n static register(name, id, size) {\n this.namedCurves[name.toLowerCase()] = this.namedCurves[id] = { name, id, size };\n }\n static find(nameOrId) {\n return this.namedCurves[nameOrId.toLowerCase()] || null;\n }\n}\n_a = ECNamedCurves;\nECNamedCurves.namedCurves = {};\n(() => {\n _a.register(\"P-256\", \"1.2.840.10045.3.1.7\", 32);\n _a.register(\"P-384\", \"1.3.132.0.34\", 48);\n _a.register(\"P-521\", \"1.3.132.0.35\", 66);\n _a.register(\"brainpoolP256r1\", \"1.3.36.3.3.2.8.1.1.7\", 32);\n _a.register(\"brainpoolP384r1\", \"1.3.36.3.3.2.8.1.1.11\", 48);\n _a.register(\"brainpoolP512r1\", \"1.3.36.3.3.2.8.1.1.13\", 64);\n})();\n\nconst X = \"x\";\nconst Y = \"y\";\nconst NAMED_CURVE$1 = \"namedCurve\";\nclass ECPublicKey extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.x = pvutils.getParametersValue(parameters, X, ECPublicKey.defaultValues(X));\n this.y = pvutils.getParametersValue(parameters, Y, ECPublicKey.defaultValues(Y));\n this.namedCurve = pvutils.getParametersValue(parameters, NAMED_CURVE$1, ECPublicKey.defaultValues(NAMED_CURVE$1));\n if (parameters.json) {\n this.fromJSON(parameters.json);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case X:\n case Y:\n return EMPTY_BUFFER;\n case NAMED_CURVE$1:\n return EMPTY_STRING;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case X:\n case Y:\n return memberValue instanceof ArrayBuffer &&\n (pvutils.isEqualBuffer(memberValue, ECPublicKey.defaultValues(memberName)));\n case NAMED_CURVE$1:\n return typeof memberValue === \"string\" &&\n memberValue === ECPublicKey.defaultValues(memberName);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema() {\n return new asn1js.RawData();\n }\n fromSchema(schema1) {\n const view = BufferSourceConverter.toUint8Array(schema1);\n if (view[0] !== 0x04) {\n throw new Error(\"Object's schema was not verified against input data for ECPublicKey\");\n }\n const namedCurve = ECNamedCurves.find(this.namedCurve);\n if (!namedCurve) {\n throw new Error(`Incorrect curve OID: ${this.namedCurve}`);\n }\n const coordinateLength = namedCurve.size;\n if (view.byteLength !== (coordinateLength * 2 + 1)) {\n throw new Error(\"Object's schema was not verified against input data for ECPublicKey\");\n }\n this.namedCurve = namedCurve.name;\n this.x = view.slice(1, coordinateLength + 1).buffer;\n this.y = view.slice(1 + coordinateLength, coordinateLength * 2 + 1).buffer;\n }\n toSchema() {\n return new asn1js.RawData({\n data: pvutils.utilConcatBuf((new Uint8Array([0x04])).buffer, this.x, this.y)\n });\n }\n toJSON() {\n const namedCurve = ECNamedCurves.find(this.namedCurve);\n return {\n crv: namedCurve ? namedCurve.name : this.namedCurve,\n x: pvutils.toBase64(pvutils.arrayBufferToString(this.x), true, true, false),\n y: pvutils.toBase64(pvutils.arrayBufferToString(this.y), true, true, false)\n };\n }\n fromJSON(json) {\n ParameterError.assert(\"json\", json, \"crv\", \"x\", \"y\");\n let coordinateLength = 0;\n const namedCurve = ECNamedCurves.find(json.crv);\n if (namedCurve) {\n this.namedCurve = namedCurve.id;\n coordinateLength = namedCurve.size;\n }\n const xConvertBuffer = pvutils.stringToArrayBuffer(pvutils.fromBase64(json.x, true));\n if (xConvertBuffer.byteLength < coordinateLength) {\n this.x = new ArrayBuffer(coordinateLength);\n const view = new Uint8Array(this.x);\n const convertBufferView = new Uint8Array(xConvertBuffer);\n view.set(convertBufferView, 1);\n }\n else {\n this.x = xConvertBuffer.slice(0, coordinateLength);\n }\n const yConvertBuffer = pvutils.stringToArrayBuffer(pvutils.fromBase64(json.y, true));\n if (yConvertBuffer.byteLength < coordinateLength) {\n this.y = new ArrayBuffer(coordinateLength);\n const view = new Uint8Array(this.y);\n const convertBufferView = new Uint8Array(yConvertBuffer);\n view.set(convertBufferView, 1);\n }\n else {\n this.y = yConvertBuffer.slice(0, coordinateLength);\n }\n }\n}\nECPublicKey.CLASS_NAME = \"ECPublicKey\";\n\nconst MODULUS$1 = \"modulus\";\nconst PUBLIC_EXPONENT$1 = \"publicExponent\";\nconst CLEAR_PROPS$1b = [MODULUS$1, PUBLIC_EXPONENT$1];\nclass RSAPublicKey extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.modulus = pvutils.getParametersValue(parameters, MODULUS$1, RSAPublicKey.defaultValues(MODULUS$1));\n this.publicExponent = pvutils.getParametersValue(parameters, PUBLIC_EXPONENT$1, RSAPublicKey.defaultValues(PUBLIC_EXPONENT$1));\n if (parameters.json) {\n this.fromJSON(parameters.json);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case MODULUS$1:\n return new asn1js.Integer();\n case PUBLIC_EXPONENT$1:\n return new asn1js.Integer();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.modulus || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.publicExponent || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1b);\n const asn1 = asn1js.compareSchema(schema, schema, RSAPublicKey.schema({\n names: {\n modulus: MODULUS$1,\n publicExponent: PUBLIC_EXPONENT$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.modulus = asn1.result.modulus.convertFromDER(256);\n this.publicExponent = asn1.result.publicExponent;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.modulus.convertToDER(),\n this.publicExponent\n ]\n }));\n }\n toJSON() {\n return {\n n: pvtsutils.Convert.ToBase64Url(this.modulus.valueBlock.valueHexView),\n e: pvtsutils.Convert.ToBase64Url(this.publicExponent.valueBlock.valueHexView),\n };\n }\n fromJSON(json) {\n ParameterError.assert(\"json\", json, \"n\", \"e\");\n const array = pvutils.stringToArrayBuffer(pvutils.fromBase64(json.n, true));\n this.modulus = new asn1js.Integer({ valueHex: array.slice(0, Math.pow(2, pvutils.nearestPowerOf2(array.byteLength))) });\n this.publicExponent = new asn1js.Integer({ valueHex: pvutils.stringToArrayBuffer(pvutils.fromBase64(json.e, true)).slice(0, 3) });\n }\n}\nRSAPublicKey.CLASS_NAME = \"RSAPublicKey\";\n\nconst ALGORITHM$1 = \"algorithm\";\nconst SUBJECT_PUBLIC_KEY = \"subjectPublicKey\";\nconst CLEAR_PROPS$1a = [ALGORITHM$1, SUBJECT_PUBLIC_KEY];\nclass PublicKeyInfo extends PkiObject {\n get parsedKey() {\n if (this._parsedKey === undefined) {\n switch (this.algorithm.algorithmId) {\n case \"1.2.840.10045.2.1\":\n if (\"algorithmParams\" in this.algorithm) {\n if (this.algorithm.algorithmParams.constructor.blockName() === asn1js.ObjectIdentifier.blockName()) {\n try {\n this._parsedKey = new ECPublicKey({\n namedCurve: this.algorithm.algorithmParams.valueBlock.toString(),\n schema: this.subjectPublicKey.valueBlock.valueHexView\n });\n }\n catch (ex) {\n }\n }\n }\n break;\n case \"1.2.840.113549.1.1.1\":\n {\n const publicKeyASN1 = asn1js.fromBER(this.subjectPublicKey.valueBlock.valueHexView);\n if (publicKeyASN1.offset !== -1) {\n try {\n this._parsedKey = new RSAPublicKey({ schema: publicKeyASN1.result });\n }\n catch (ex) {\n }\n }\n }\n break;\n }\n this._parsedKey || (this._parsedKey = null);\n }\n return this._parsedKey || undefined;\n }\n set parsedKey(value) {\n this._parsedKey = value;\n }\n constructor(parameters = {}) {\n super();\n this.algorithm = pvutils.getParametersValue(parameters, ALGORITHM$1, PublicKeyInfo.defaultValues(ALGORITHM$1));\n this.subjectPublicKey = pvutils.getParametersValue(parameters, SUBJECT_PUBLIC_KEY, PublicKeyInfo.defaultValues(SUBJECT_PUBLIC_KEY));\n const parsedKey = pvutils.getParametersValue(parameters, \"parsedKey\", null);\n if (parsedKey) {\n this.parsedKey = parsedKey;\n }\n if (parameters.json) {\n this.fromJSON(parameters.json);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ALGORITHM$1:\n return new AlgorithmIdentifier();\n case SUBJECT_PUBLIC_KEY:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.algorithm || {}),\n new asn1js.BitString({ name: (names.subjectPublicKey || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1a);\n const asn1 = asn1js.compareSchema(schema, schema, PublicKeyInfo.schema({\n names: {\n algorithm: {\n names: {\n blockName: ALGORITHM$1\n }\n },\n subjectPublicKey: SUBJECT_PUBLIC_KEY\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.algorithm = new AlgorithmIdentifier({ schema: asn1.result.algorithm });\n this.subjectPublicKey = asn1.result.subjectPublicKey;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.algorithm.toSchema(),\n this.subjectPublicKey\n ]\n }));\n }\n toJSON() {\n if (!this.parsedKey) {\n return {\n algorithm: this.algorithm.toJSON(),\n subjectPublicKey: this.subjectPublicKey.toJSON(),\n };\n }\n const jwk = {};\n switch (this.algorithm.algorithmId) {\n case \"1.2.840.10045.2.1\":\n jwk.kty = \"EC\";\n break;\n case \"1.2.840.113549.1.1.1\":\n jwk.kty = \"RSA\";\n break;\n }\n const publicKeyJWK = this.parsedKey.toJSON();\n Object.assign(jwk, publicKeyJWK);\n return jwk;\n }\n fromJSON(json) {\n if (\"kty\" in json) {\n switch (json.kty.toUpperCase()) {\n case \"EC\":\n this.parsedKey = new ECPublicKey({ json });\n this.algorithm = new AlgorithmIdentifier({\n algorithmId: \"1.2.840.10045.2.1\",\n algorithmParams: new asn1js.ObjectIdentifier({ value: this.parsedKey.namedCurve })\n });\n break;\n case \"RSA\":\n this.parsedKey = new RSAPublicKey({ json });\n this.algorithm = new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.1.1\",\n algorithmParams: new asn1js.Null()\n });\n break;\n default:\n throw new Error(`Invalid value for \"kty\" parameter: ${json.kty}`);\n }\n this.subjectPublicKey = new asn1js.BitString({ valueHex: this.parsedKey.toSchema().toBER(false) });\n }\n }\n async importKey(publicKey, crypto = getCrypto(true)) {\n try {\n if (!publicKey) {\n throw new Error(\"Need to provide publicKey input parameter\");\n }\n const exportedKey = await crypto.exportKey(\"spki\", publicKey);\n const asn1 = asn1js.fromBER(exportedKey);\n try {\n this.fromSchema(asn1.result);\n }\n catch (exception) {\n throw new Error(\"Error during initializing object from schema\");\n }\n }\n catch (e) {\n const message = e instanceof Error ? e.message : `${e}`;\n throw new Error(`Error during exporting public key: ${message}`);\n }\n }\n}\nPublicKeyInfo.CLASS_NAME = \"PublicKeyInfo\";\n\nconst VERSION$l = \"version\";\nconst PRIVATE_KEY$1 = \"privateKey\";\nconst NAMED_CURVE = \"namedCurve\";\nconst PUBLIC_KEY$1 = \"publicKey\";\nconst CLEAR_PROPS$19 = [\n VERSION$l,\n PRIVATE_KEY$1,\n NAMED_CURVE,\n PUBLIC_KEY$1\n];\nclass ECPrivateKey extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$l, ECPrivateKey.defaultValues(VERSION$l));\n this.privateKey = pvutils.getParametersValue(parameters, PRIVATE_KEY$1, ECPrivateKey.defaultValues(PRIVATE_KEY$1));\n if (NAMED_CURVE in parameters) {\n this.namedCurve = pvutils.getParametersValue(parameters, NAMED_CURVE, ECPrivateKey.defaultValues(NAMED_CURVE));\n }\n if (PUBLIC_KEY$1 in parameters) {\n this.publicKey = pvutils.getParametersValue(parameters, PUBLIC_KEY$1, ECPrivateKey.defaultValues(PUBLIC_KEY$1));\n }\n if (parameters.json) {\n this.fromJSON(parameters.json);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$l:\n return 1;\n case PRIVATE_KEY$1:\n return new asn1js.OctetString();\n case NAMED_CURVE:\n return EMPTY_STRING;\n case PUBLIC_KEY$1:\n return new ECPublicKey();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$l:\n return (memberValue === ECPrivateKey.defaultValues(memberName));\n case PRIVATE_KEY$1:\n return (memberValue.isEqual(ECPrivateKey.defaultValues(memberName)));\n case NAMED_CURVE:\n return (memberValue === EMPTY_STRING);\n case PUBLIC_KEY$1:\n return ((ECPublicKey.compareWithDefault(NAMED_CURVE, memberValue.namedCurve)) &&\n (ECPublicKey.compareWithDefault(\"x\", memberValue.x)) &&\n (ECPublicKey.compareWithDefault(\"y\", memberValue.y)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n new asn1js.OctetString({ name: (names.privateKey || EMPTY_STRING) }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.ObjectIdentifier({ name: (names.namedCurve || EMPTY_STRING) })\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.BitString({ name: (names.publicKey || EMPTY_STRING) })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$19);\n const asn1 = asn1js.compareSchema(schema, schema, ECPrivateKey.schema({\n names: {\n version: VERSION$l,\n privateKey: PRIVATE_KEY$1,\n namedCurve: NAMED_CURVE,\n publicKey: PUBLIC_KEY$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.privateKey = asn1.result.privateKey;\n if (NAMED_CURVE in asn1.result) {\n this.namedCurve = asn1.result.namedCurve.valueBlock.toString();\n }\n if (PUBLIC_KEY$1 in asn1.result) {\n const publicKeyData = { schema: asn1.result.publicKey.valueBlock.valueHex };\n if (NAMED_CURVE in this) {\n publicKeyData.namedCurve = this.namedCurve;\n }\n this.publicKey = new ECPublicKey(publicKeyData);\n }\n }\n toSchema() {\n const outputArray = [\n new asn1js.Integer({ value: this.version }),\n this.privateKey\n ];\n if (this.namedCurve) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.ObjectIdentifier({ value: this.namedCurve })\n ]\n }));\n }\n if (this.publicKey) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.BitString({ valueHex: this.publicKey.toSchema().toBER(false) })\n ]\n }));\n }\n return new asn1js.Sequence({\n value: outputArray\n });\n }\n toJSON() {\n if (!this.namedCurve || ECPrivateKey.compareWithDefault(NAMED_CURVE, this.namedCurve)) {\n throw new Error(\"Not enough information for making JSON: absent \\\"namedCurve\\\" value\");\n }\n const curve = ECNamedCurves.find(this.namedCurve);\n const privateKeyJSON = {\n crv: curve ? curve.name : this.namedCurve,\n d: pvtsutils.Convert.ToBase64Url(this.privateKey.valueBlock.valueHexView),\n };\n if (this.publicKey) {\n const publicKeyJSON = this.publicKey.toJSON();\n privateKeyJSON.x = publicKeyJSON.x;\n privateKeyJSON.y = publicKeyJSON.y;\n }\n return privateKeyJSON;\n }\n fromJSON(json) {\n ParameterError.assert(\"json\", json, \"crv\", \"d\");\n let coordinateLength = 0;\n const curve = ECNamedCurves.find(json.crv);\n if (curve) {\n this.namedCurve = curve.id;\n coordinateLength = curve.size;\n }\n const convertBuffer = pvtsutils.Convert.FromBase64Url(json.d);\n if (convertBuffer.byteLength < coordinateLength) {\n const buffer = new ArrayBuffer(coordinateLength);\n const view = new Uint8Array(buffer);\n const convertBufferView = new Uint8Array(convertBuffer);\n view.set(convertBufferView, 1);\n this.privateKey = new asn1js.OctetString({ valueHex: buffer });\n }\n else {\n this.privateKey = new asn1js.OctetString({ valueHex: convertBuffer.slice(0, coordinateLength) });\n }\n if (json.x && json.y) {\n this.publicKey = new ECPublicKey({ json });\n }\n }\n}\nECPrivateKey.CLASS_NAME = \"ECPrivateKey\";\n\nconst PRIME = \"prime\";\nconst EXPONENT = \"exponent\";\nconst COEFFICIENT$1 = \"coefficient\";\nconst CLEAR_PROPS$18 = [\n PRIME,\n EXPONENT,\n COEFFICIENT$1,\n];\nclass OtherPrimeInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.prime = pvutils.getParametersValue(parameters, PRIME, OtherPrimeInfo.defaultValues(PRIME));\n this.exponent = pvutils.getParametersValue(parameters, EXPONENT, OtherPrimeInfo.defaultValues(EXPONENT));\n this.coefficient = pvutils.getParametersValue(parameters, COEFFICIENT$1, OtherPrimeInfo.defaultValues(COEFFICIENT$1));\n if (parameters.json) {\n this.fromJSON(parameters.json);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case PRIME:\n return new asn1js.Integer();\n case EXPONENT:\n return new asn1js.Integer();\n case COEFFICIENT$1:\n return new asn1js.Integer();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.prime || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.exponent || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.coefficient || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$18);\n const asn1 = asn1js.compareSchema(schema, schema, OtherPrimeInfo.schema({\n names: {\n prime: PRIME,\n exponent: EXPONENT,\n coefficient: COEFFICIENT$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.prime = asn1.result.prime.convertFromDER();\n this.exponent = asn1.result.exponent.convertFromDER();\n this.coefficient = asn1.result.coefficient.convertFromDER();\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.prime.convertToDER(),\n this.exponent.convertToDER(),\n this.coefficient.convertToDER()\n ]\n }));\n }\n toJSON() {\n return {\n r: pvtsutils.Convert.ToBase64Url(this.prime.valueBlock.valueHexView),\n d: pvtsutils.Convert.ToBase64Url(this.exponent.valueBlock.valueHexView),\n t: pvtsutils.Convert.ToBase64Url(this.coefficient.valueBlock.valueHexView),\n };\n }\n fromJSON(json) {\n ParameterError.assert(\"json\", json, \"r\", \"d\", \"r\");\n this.prime = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.r) });\n this.exponent = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.d) });\n this.coefficient = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.t) });\n }\n}\nOtherPrimeInfo.CLASS_NAME = \"OtherPrimeInfo\";\n\nconst VERSION$k = \"version\";\nconst MODULUS = \"modulus\";\nconst PUBLIC_EXPONENT = \"publicExponent\";\nconst PRIVATE_EXPONENT = \"privateExponent\";\nconst PRIME1 = \"prime1\";\nconst PRIME2 = \"prime2\";\nconst EXPONENT1 = \"exponent1\";\nconst EXPONENT2 = \"exponent2\";\nconst COEFFICIENT = \"coefficient\";\nconst OTHER_PRIME_INFOS = \"otherPrimeInfos\";\nconst CLEAR_PROPS$17 = [\n VERSION$k,\n MODULUS,\n PUBLIC_EXPONENT,\n PRIVATE_EXPONENT,\n PRIME1,\n PRIME2,\n EXPONENT1,\n EXPONENT2,\n COEFFICIENT,\n OTHER_PRIME_INFOS\n];\nclass RSAPrivateKey extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$k, RSAPrivateKey.defaultValues(VERSION$k));\n this.modulus = pvutils.getParametersValue(parameters, MODULUS, RSAPrivateKey.defaultValues(MODULUS));\n this.publicExponent = pvutils.getParametersValue(parameters, PUBLIC_EXPONENT, RSAPrivateKey.defaultValues(PUBLIC_EXPONENT));\n this.privateExponent = pvutils.getParametersValue(parameters, PRIVATE_EXPONENT, RSAPrivateKey.defaultValues(PRIVATE_EXPONENT));\n this.prime1 = pvutils.getParametersValue(parameters, PRIME1, RSAPrivateKey.defaultValues(PRIME1));\n this.prime2 = pvutils.getParametersValue(parameters, PRIME2, RSAPrivateKey.defaultValues(PRIME2));\n this.exponent1 = pvutils.getParametersValue(parameters, EXPONENT1, RSAPrivateKey.defaultValues(EXPONENT1));\n this.exponent2 = pvutils.getParametersValue(parameters, EXPONENT2, RSAPrivateKey.defaultValues(EXPONENT2));\n this.coefficient = pvutils.getParametersValue(parameters, COEFFICIENT, RSAPrivateKey.defaultValues(COEFFICIENT));\n if (OTHER_PRIME_INFOS in parameters) {\n this.otherPrimeInfos = pvutils.getParametersValue(parameters, OTHER_PRIME_INFOS, RSAPrivateKey.defaultValues(OTHER_PRIME_INFOS));\n }\n if (parameters.json) {\n this.fromJSON(parameters.json);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$k:\n return 0;\n case MODULUS:\n return new asn1js.Integer();\n case PUBLIC_EXPONENT:\n return new asn1js.Integer();\n case PRIVATE_EXPONENT:\n return new asn1js.Integer();\n case PRIME1:\n return new asn1js.Integer();\n case PRIME2:\n return new asn1js.Integer();\n case EXPONENT1:\n return new asn1js.Integer();\n case EXPONENT2:\n return new asn1js.Integer();\n case COEFFICIENT:\n return new asn1js.Integer();\n case OTHER_PRIME_INFOS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.modulus || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.publicExponent || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.privateExponent || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.prime1 || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.prime2 || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.exponent1 || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.exponent2 || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.coefficient || EMPTY_STRING) }),\n new asn1js.Sequence({\n optional: true,\n value: [\n new asn1js.Repeated({\n name: (names.otherPrimeInfosName || EMPTY_STRING),\n value: OtherPrimeInfo.schema(names.otherPrimeInfo || {})\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$17);\n const asn1 = asn1js.compareSchema(schema, schema, RSAPrivateKey.schema({\n names: {\n version: VERSION$k,\n modulus: MODULUS,\n publicExponent: PUBLIC_EXPONENT,\n privateExponent: PRIVATE_EXPONENT,\n prime1: PRIME1,\n prime2: PRIME2,\n exponent1: EXPONENT1,\n exponent2: EXPONENT2,\n coefficient: COEFFICIENT,\n otherPrimeInfo: {\n names: {\n blockName: OTHER_PRIME_INFOS\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.modulus = asn1.result.modulus.convertFromDER(256);\n this.publicExponent = asn1.result.publicExponent;\n this.privateExponent = asn1.result.privateExponent.convertFromDER(256);\n this.prime1 = asn1.result.prime1.convertFromDER(128);\n this.prime2 = asn1.result.prime2.convertFromDER(128);\n this.exponent1 = asn1.result.exponent1.convertFromDER(128);\n this.exponent2 = asn1.result.exponent2.convertFromDER(128);\n this.coefficient = asn1.result.coefficient.convertFromDER(128);\n if (OTHER_PRIME_INFOS in asn1.result)\n this.otherPrimeInfos = Array.from(asn1.result.otherPrimeInfos, element => new OtherPrimeInfo({ schema: element }));\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(this.modulus.convertToDER());\n outputArray.push(this.publicExponent);\n outputArray.push(this.privateExponent.convertToDER());\n outputArray.push(this.prime1.convertToDER());\n outputArray.push(this.prime2.convertToDER());\n outputArray.push(this.exponent1.convertToDER());\n outputArray.push(this.exponent2.convertToDER());\n outputArray.push(this.coefficient.convertToDER());\n if (this.otherPrimeInfos) {\n outputArray.push(new asn1js.Sequence({\n value: Array.from(this.otherPrimeInfos, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const jwk = {\n n: pvtsutils.Convert.ToBase64Url(this.modulus.valueBlock.valueHexView),\n e: pvtsutils.Convert.ToBase64Url(this.publicExponent.valueBlock.valueHexView),\n d: pvtsutils.Convert.ToBase64Url(this.privateExponent.valueBlock.valueHexView),\n p: pvtsutils.Convert.ToBase64Url(this.prime1.valueBlock.valueHexView),\n q: pvtsutils.Convert.ToBase64Url(this.prime2.valueBlock.valueHexView),\n dp: pvtsutils.Convert.ToBase64Url(this.exponent1.valueBlock.valueHexView),\n dq: pvtsutils.Convert.ToBase64Url(this.exponent2.valueBlock.valueHexView),\n qi: pvtsutils.Convert.ToBase64Url(this.coefficient.valueBlock.valueHexView),\n };\n if (this.otherPrimeInfos) {\n jwk.oth = Array.from(this.otherPrimeInfos, o => o.toJSON());\n }\n return jwk;\n }\n fromJSON(json) {\n ParameterError.assert(\"json\", json, \"n\", \"e\", \"d\", \"p\", \"q\", \"dp\", \"dq\", \"qi\");\n this.modulus = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.n) });\n this.publicExponent = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.e) });\n this.privateExponent = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.d) });\n this.prime1 = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.p) });\n this.prime2 = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.q) });\n this.exponent1 = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.dp) });\n this.exponent2 = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.dq) });\n this.coefficient = new asn1js.Integer({ valueHex: pvtsutils.Convert.FromBase64Url(json.qi) });\n if (json.oth) {\n this.otherPrimeInfos = Array.from(json.oth, (element) => new OtherPrimeInfo({ json: element }));\n }\n }\n}\nRSAPrivateKey.CLASS_NAME = \"RSAPrivateKey\";\n\nconst VERSION$j = \"version\";\nconst PRIVATE_KEY_ALGORITHM = \"privateKeyAlgorithm\";\nconst PRIVATE_KEY = \"privateKey\";\nconst ATTRIBUTES$5 = \"attributes\";\nconst PARSED_KEY = \"parsedKey\";\nconst CLEAR_PROPS$16 = [\n VERSION$j,\n PRIVATE_KEY_ALGORITHM,\n PRIVATE_KEY,\n ATTRIBUTES$5\n];\nclass PrivateKeyInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$j, PrivateKeyInfo.defaultValues(VERSION$j));\n this.privateKeyAlgorithm = pvutils.getParametersValue(parameters, PRIVATE_KEY_ALGORITHM, PrivateKeyInfo.defaultValues(PRIVATE_KEY_ALGORITHM));\n this.privateKey = pvutils.getParametersValue(parameters, PRIVATE_KEY, PrivateKeyInfo.defaultValues(PRIVATE_KEY));\n if (ATTRIBUTES$5 in parameters) {\n this.attributes = pvutils.getParametersValue(parameters, ATTRIBUTES$5, PrivateKeyInfo.defaultValues(ATTRIBUTES$5));\n }\n if (PARSED_KEY in parameters) {\n this.parsedKey = pvutils.getParametersValue(parameters, PARSED_KEY, PrivateKeyInfo.defaultValues(PARSED_KEY));\n }\n if (parameters.json) {\n this.fromJSON(parameters.json);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$j:\n return 0;\n case PRIVATE_KEY_ALGORITHM:\n return new AlgorithmIdentifier();\n case PRIVATE_KEY:\n return new asn1js.OctetString();\n case ATTRIBUTES$5:\n return [];\n case PARSED_KEY:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n AlgorithmIdentifier.schema(names.privateKeyAlgorithm || {}),\n new asn1js.OctetString({ name: (names.privateKey || EMPTY_STRING) }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Repeated({\n name: (names.attributes || EMPTY_STRING),\n value: Attribute.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$16);\n const asn1 = asn1js.compareSchema(schema, schema, PrivateKeyInfo.schema({\n names: {\n version: VERSION$j,\n privateKeyAlgorithm: {\n names: {\n blockName: PRIVATE_KEY_ALGORITHM\n }\n },\n privateKey: PRIVATE_KEY,\n attributes: ATTRIBUTES$5\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.privateKeyAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.privateKeyAlgorithm });\n this.privateKey = asn1.result.privateKey;\n if (ATTRIBUTES$5 in asn1.result)\n this.attributes = Array.from(asn1.result.attributes, element => new Attribute({ schema: element }));\n switch (this.privateKeyAlgorithm.algorithmId) {\n case \"1.2.840.113549.1.1.1\":\n {\n const privateKeyASN1 = asn1js.fromBER(this.privateKey.valueBlock.valueHexView);\n if (privateKeyASN1.offset !== -1)\n this.parsedKey = new RSAPrivateKey({ schema: privateKeyASN1.result });\n }\n break;\n case \"1.2.840.10045.2.1\":\n if (\"algorithmParams\" in this.privateKeyAlgorithm) {\n if (this.privateKeyAlgorithm.algorithmParams instanceof asn1js.ObjectIdentifier) {\n const privateKeyASN1 = asn1js.fromBER(this.privateKey.valueBlock.valueHexView);\n if (privateKeyASN1.offset !== -1) {\n this.parsedKey = new ECPrivateKey({\n namedCurve: this.privateKeyAlgorithm.algorithmParams.valueBlock.toString(),\n schema: privateKeyASN1.result\n });\n }\n }\n }\n break;\n }\n }\n toSchema() {\n const outputArray = [\n new asn1js.Integer({ value: this.version }),\n this.privateKeyAlgorithm.toSchema(),\n this.privateKey\n ];\n if (this.attributes) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: Array.from(this.attributes, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n if (!this.parsedKey) {\n const object = {\n version: this.version,\n privateKeyAlgorithm: this.privateKeyAlgorithm.toJSON(),\n privateKey: this.privateKey.toJSON(),\n };\n if (this.attributes) {\n object.attributes = Array.from(this.attributes, o => o.toJSON());\n }\n return object;\n }\n const jwk = {};\n switch (this.privateKeyAlgorithm.algorithmId) {\n case \"1.2.840.10045.2.1\":\n jwk.kty = \"EC\";\n break;\n case \"1.2.840.113549.1.1.1\":\n jwk.kty = \"RSA\";\n break;\n }\n const publicKeyJWK = this.parsedKey.toJSON();\n Object.assign(jwk, publicKeyJWK);\n return jwk;\n }\n fromJSON(json) {\n if (\"kty\" in json) {\n switch (json.kty.toUpperCase()) {\n case \"EC\":\n this.parsedKey = new ECPrivateKey({ json });\n this.privateKeyAlgorithm = new AlgorithmIdentifier({\n algorithmId: \"1.2.840.10045.2.1\",\n algorithmParams: new asn1js.ObjectIdentifier({ value: this.parsedKey.namedCurve })\n });\n break;\n case \"RSA\":\n this.parsedKey = new RSAPrivateKey({ json });\n this.privateKeyAlgorithm = new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.1.1\",\n algorithmParams: new asn1js.Null()\n });\n break;\n default:\n throw new Error(`Invalid value for \"kty\" parameter: ${json.kty}`);\n }\n this.privateKey = new asn1js.OctetString({ valueHex: this.parsedKey.toSchema().toBER(false) });\n }\n }\n}\nPrivateKeyInfo.CLASS_NAME = \"PrivateKeyInfo\";\n\nconst CONTENT_TYPE$1 = \"contentType\";\nconst CONTENT_ENCRYPTION_ALGORITHM = \"contentEncryptionAlgorithm\";\nconst ENCRYPTED_CONTENT = \"encryptedContent\";\nconst CLEAR_PROPS$15 = [\n CONTENT_TYPE$1,\n CONTENT_ENCRYPTION_ALGORITHM,\n ENCRYPTED_CONTENT,\n];\nconst PIECE_SIZE = 1024;\nclass EncryptedContentInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.contentType = pvutils.getParametersValue(parameters, CONTENT_TYPE$1, EncryptedContentInfo.defaultValues(CONTENT_TYPE$1));\n this.contentEncryptionAlgorithm = pvutils.getParametersValue(parameters, CONTENT_ENCRYPTION_ALGORITHM, EncryptedContentInfo.defaultValues(CONTENT_ENCRYPTION_ALGORITHM));\n if (ENCRYPTED_CONTENT in parameters && parameters.encryptedContent) {\n this.encryptedContent = parameters.encryptedContent;\n if ((this.encryptedContent.idBlock.tagClass === 1) &&\n (this.encryptedContent.idBlock.tagNumber === 4)) {\n if (this.encryptedContent.idBlock.isConstructed === false && !parameters.disableSplit) {\n const constrString = new asn1js.OctetString({\n idBlock: { isConstructed: true },\n isConstructed: true\n });\n let offset = 0;\n const valueHex = this.encryptedContent.valueBlock.valueHexView.slice().buffer;\n let length = valueHex.byteLength;\n while (length > 0) {\n const pieceView = new Uint8Array(valueHex, offset, ((offset + PIECE_SIZE) > valueHex.byteLength) ? (valueHex.byteLength - offset) : PIECE_SIZE);\n const _array = new ArrayBuffer(pieceView.length);\n const _view = new Uint8Array(_array);\n for (let i = 0; i < _view.length; i++)\n _view[i] = pieceView[i];\n constrString.valueBlock.value.push(new asn1js.OctetString({ valueHex: _array }));\n length -= pieceView.length;\n offset += pieceView.length;\n }\n this.encryptedContent = constrString;\n }\n }\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CONTENT_TYPE$1:\n return EMPTY_STRING;\n case CONTENT_ENCRYPTION_ALGORITHM:\n return new AlgorithmIdentifier();\n case ENCRYPTED_CONTENT:\n return new asn1js.OctetString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case CONTENT_TYPE$1:\n return (memberValue === EMPTY_STRING);\n case CONTENT_ENCRYPTION_ALGORITHM:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case ENCRYPTED_CONTENT:\n return (memberValue.isEqual(EncryptedContentInfo.defaultValues(ENCRYPTED_CONTENT)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.contentType || EMPTY_STRING) }),\n AlgorithmIdentifier.schema(names.contentEncryptionAlgorithm || {}),\n new asn1js.Choice({\n value: [\n new asn1js.Constructed({\n name: (names.encryptedContent || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Repeated({\n value: new asn1js.OctetString()\n })\n ]\n }),\n new asn1js.Primitive({\n name: (names.encryptedContent || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n }\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$15);\n const asn1 = asn1js.compareSchema(schema, schema, EncryptedContentInfo.schema({\n names: {\n contentType: CONTENT_TYPE$1,\n contentEncryptionAlgorithm: {\n names: {\n blockName: CONTENT_ENCRYPTION_ALGORITHM\n }\n },\n encryptedContent: ENCRYPTED_CONTENT\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.contentType = asn1.result.contentType.valueBlock.toString();\n this.contentEncryptionAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.contentEncryptionAlgorithm });\n if (ENCRYPTED_CONTENT in asn1.result) {\n this.encryptedContent = asn1.result.encryptedContent;\n this.encryptedContent.idBlock.tagClass = 1;\n this.encryptedContent.idBlock.tagNumber = 4;\n }\n }\n toSchema() {\n const sequenceLengthBlock = {\n isIndefiniteForm: false\n };\n const outputArray = [];\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.contentType }));\n outputArray.push(this.contentEncryptionAlgorithm.toSchema());\n if (this.encryptedContent) {\n sequenceLengthBlock.isIndefiniteForm = this.encryptedContent.idBlock.isConstructed;\n const encryptedValue = this.encryptedContent;\n encryptedValue.idBlock.tagClass = 3;\n encryptedValue.idBlock.tagNumber = 0;\n encryptedValue.lenBlock.isIndefiniteForm = this.encryptedContent.idBlock.isConstructed;\n outputArray.push(encryptedValue);\n }\n return (new asn1js.Sequence({\n lenBlock: sequenceLengthBlock,\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n contentType: this.contentType,\n contentEncryptionAlgorithm: this.contentEncryptionAlgorithm.toJSON()\n };\n if (this.encryptedContent) {\n res.encryptedContent = this.encryptedContent.toJSON();\n }\n return res;\n }\n getEncryptedContent() {\n if (!this.encryptedContent) {\n throw new Error(\"Parameter 'encryptedContent' is undefined\");\n }\n return asn1js.OctetString.prototype.getValue.call(this.encryptedContent);\n }\n}\nEncryptedContentInfo.CLASS_NAME = \"EncryptedContentInfo\";\n\nconst HASH_ALGORITHM$4 = \"hashAlgorithm\";\nconst MASK_GEN_ALGORITHM$1 = \"maskGenAlgorithm\";\nconst SALT_LENGTH = \"saltLength\";\nconst TRAILER_FIELD = \"trailerField\";\nconst CLEAR_PROPS$14 = [\n HASH_ALGORITHM$4,\n MASK_GEN_ALGORITHM$1,\n SALT_LENGTH,\n TRAILER_FIELD\n];\nclass RSASSAPSSParams extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.hashAlgorithm = pvutils.getParametersValue(parameters, HASH_ALGORITHM$4, RSASSAPSSParams.defaultValues(HASH_ALGORITHM$4));\n this.maskGenAlgorithm = pvutils.getParametersValue(parameters, MASK_GEN_ALGORITHM$1, RSASSAPSSParams.defaultValues(MASK_GEN_ALGORITHM$1));\n this.saltLength = pvutils.getParametersValue(parameters, SALT_LENGTH, RSASSAPSSParams.defaultValues(SALT_LENGTH));\n this.trailerField = pvutils.getParametersValue(parameters, TRAILER_FIELD, RSASSAPSSParams.defaultValues(TRAILER_FIELD));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case HASH_ALGORITHM$4:\n return new AlgorithmIdentifier({\n algorithmId: \"1.3.14.3.2.26\",\n algorithmParams: new asn1js.Null()\n });\n case MASK_GEN_ALGORITHM$1:\n return new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.1.8\",\n algorithmParams: (new AlgorithmIdentifier({\n algorithmId: \"1.3.14.3.2.26\",\n algorithmParams: new asn1js.Null()\n })).toSchema()\n });\n case SALT_LENGTH:\n return 20;\n case TRAILER_FIELD:\n return 1;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n optional: true,\n value: [AlgorithmIdentifier.schema(names.hashAlgorithm || {})]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n optional: true,\n value: [AlgorithmIdentifier.schema(names.maskGenAlgorithm || {})]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n optional: true,\n value: [new asn1js.Integer({ name: (names.saltLength || EMPTY_STRING) })]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n optional: true,\n value: [new asn1js.Integer({ name: (names.trailerField || EMPTY_STRING) })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$14);\n const asn1 = asn1js.compareSchema(schema, schema, RSASSAPSSParams.schema({\n names: {\n hashAlgorithm: {\n names: {\n blockName: HASH_ALGORITHM$4\n }\n },\n maskGenAlgorithm: {\n names: {\n blockName: MASK_GEN_ALGORITHM$1\n }\n },\n saltLength: SALT_LENGTH,\n trailerField: TRAILER_FIELD\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (HASH_ALGORITHM$4 in asn1.result)\n this.hashAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.hashAlgorithm });\n if (MASK_GEN_ALGORITHM$1 in asn1.result)\n this.maskGenAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.maskGenAlgorithm });\n if (SALT_LENGTH in asn1.result)\n this.saltLength = asn1.result.saltLength.valueBlock.valueDec;\n if (TRAILER_FIELD in asn1.result)\n this.trailerField = asn1.result.trailerField.valueBlock.valueDec;\n }\n toSchema() {\n const outputArray = [];\n if (!this.hashAlgorithm.isEqual(RSASSAPSSParams.defaultValues(HASH_ALGORITHM$4))) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.hashAlgorithm.toSchema()]\n }));\n }\n if (!this.maskGenAlgorithm.isEqual(RSASSAPSSParams.defaultValues(MASK_GEN_ALGORITHM$1))) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [this.maskGenAlgorithm.toSchema()]\n }));\n }\n if (this.saltLength !== RSASSAPSSParams.defaultValues(SALT_LENGTH)) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [new asn1js.Integer({ value: this.saltLength })]\n }));\n }\n if (this.trailerField !== RSASSAPSSParams.defaultValues(TRAILER_FIELD)) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n value: [new asn1js.Integer({ value: this.trailerField })]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {};\n if (!this.hashAlgorithm.isEqual(RSASSAPSSParams.defaultValues(HASH_ALGORITHM$4))) {\n res.hashAlgorithm = this.hashAlgorithm.toJSON();\n }\n if (!this.maskGenAlgorithm.isEqual(RSASSAPSSParams.defaultValues(MASK_GEN_ALGORITHM$1))) {\n res.maskGenAlgorithm = this.maskGenAlgorithm.toJSON();\n }\n if (this.saltLength !== RSASSAPSSParams.defaultValues(SALT_LENGTH)) {\n res.saltLength = this.saltLength;\n }\n if (this.trailerField !== RSASSAPSSParams.defaultValues(TRAILER_FIELD)) {\n res.trailerField = this.trailerField;\n }\n return res;\n }\n}\nRSASSAPSSParams.CLASS_NAME = \"RSASSAPSSParams\";\n\nconst SALT = \"salt\";\nconst ITERATION_COUNT = \"iterationCount\";\nconst KEY_LENGTH = \"keyLength\";\nconst PRF = \"prf\";\nconst CLEAR_PROPS$13 = [\n SALT,\n ITERATION_COUNT,\n KEY_LENGTH,\n PRF\n];\nclass PBKDF2Params extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.salt = pvutils.getParametersValue(parameters, SALT, PBKDF2Params.defaultValues(SALT));\n this.iterationCount = pvutils.getParametersValue(parameters, ITERATION_COUNT, PBKDF2Params.defaultValues(ITERATION_COUNT));\n if (KEY_LENGTH in parameters) {\n this.keyLength = pvutils.getParametersValue(parameters, KEY_LENGTH, PBKDF2Params.defaultValues(KEY_LENGTH));\n }\n if (PRF in parameters) {\n this.prf = pvutils.getParametersValue(parameters, PRF, PBKDF2Params.defaultValues(PRF));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case SALT:\n return {};\n case ITERATION_COUNT:\n return (-1);\n case KEY_LENGTH:\n return 0;\n case PRF:\n return new AlgorithmIdentifier({\n algorithmId: \"1.3.14.3.2.26\",\n algorithmParams: new asn1js.Null()\n });\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Choice({\n value: [\n new asn1js.OctetString({ name: (names.saltPrimitive || EMPTY_STRING) }),\n AlgorithmIdentifier.schema(names.saltConstructed || {})\n ]\n }),\n new asn1js.Integer({ name: (names.iterationCount || EMPTY_STRING) }),\n new asn1js.Integer({\n name: (names.keyLength || EMPTY_STRING),\n optional: true\n }),\n AlgorithmIdentifier.schema(names.prf || {\n names: {\n optional: true\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$13);\n const asn1 = asn1js.compareSchema(schema, schema, PBKDF2Params.schema({\n names: {\n saltPrimitive: SALT,\n saltConstructed: {\n names: {\n blockName: SALT\n }\n },\n iterationCount: ITERATION_COUNT,\n keyLength: KEY_LENGTH,\n prf: {\n names: {\n blockName: PRF,\n optional: true\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.salt = asn1.result.salt;\n this.iterationCount = asn1.result.iterationCount.valueBlock.valueDec;\n if (KEY_LENGTH in asn1.result)\n this.keyLength = asn1.result.keyLength.valueBlock.valueDec;\n if (PRF in asn1.result)\n this.prf = new AlgorithmIdentifier({ schema: asn1.result.prf });\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.salt);\n outputArray.push(new asn1js.Integer({ value: this.iterationCount }));\n if (KEY_LENGTH in this) {\n if (PBKDF2Params.defaultValues(KEY_LENGTH) !== this.keyLength)\n outputArray.push(new asn1js.Integer({ value: this.keyLength }));\n }\n if (this.prf) {\n if (PBKDF2Params.defaultValues(PRF).isEqual(this.prf) === false)\n outputArray.push(this.prf.toSchema());\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n salt: this.salt.toJSON(),\n iterationCount: this.iterationCount\n };\n if (KEY_LENGTH in this) {\n if (PBKDF2Params.defaultValues(KEY_LENGTH) !== this.keyLength)\n res.keyLength = this.keyLength;\n }\n if (this.prf) {\n if (PBKDF2Params.defaultValues(PRF).isEqual(this.prf) === false)\n res.prf = this.prf.toJSON();\n }\n return res;\n }\n}\nPBKDF2Params.CLASS_NAME = \"PBKDF2Params\";\n\nconst KEY_DERIVATION_FUNC = \"keyDerivationFunc\";\nconst ENCRYPTION_SCHEME = \"encryptionScheme\";\nconst CLEAR_PROPS$12 = [\n KEY_DERIVATION_FUNC,\n ENCRYPTION_SCHEME\n];\nclass PBES2Params extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.keyDerivationFunc = pvutils.getParametersValue(parameters, KEY_DERIVATION_FUNC, PBES2Params.defaultValues(KEY_DERIVATION_FUNC));\n this.encryptionScheme = pvutils.getParametersValue(parameters, ENCRYPTION_SCHEME, PBES2Params.defaultValues(ENCRYPTION_SCHEME));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case KEY_DERIVATION_FUNC:\n return new AlgorithmIdentifier();\n case ENCRYPTION_SCHEME:\n return new AlgorithmIdentifier();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.keyDerivationFunc || {}),\n AlgorithmIdentifier.schema(names.encryptionScheme || {})\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$12);\n const asn1 = asn1js.compareSchema(schema, schema, PBES2Params.schema({\n names: {\n keyDerivationFunc: {\n names: {\n blockName: KEY_DERIVATION_FUNC\n }\n },\n encryptionScheme: {\n names: {\n blockName: ENCRYPTION_SCHEME\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.keyDerivationFunc = new AlgorithmIdentifier({ schema: asn1.result.keyDerivationFunc });\n this.encryptionScheme = new AlgorithmIdentifier({ schema: asn1.result.encryptionScheme });\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.keyDerivationFunc.toSchema(),\n this.encryptionScheme.toSchema()\n ]\n }));\n }\n toJSON() {\n return {\n keyDerivationFunc: this.keyDerivationFunc.toJSON(),\n encryptionScheme: this.encryptionScheme.toJSON()\n };\n }\n}\nPBES2Params.CLASS_NAME = \"PBES2Params\";\n\nclass AbstractCryptoEngine {\n constructor(parameters) {\n this.crypto = parameters.crypto;\n this.subtle = \"webkitSubtle\" in parameters.crypto\n ? parameters.crypto.webkitSubtle\n : parameters.crypto.subtle;\n this.name = pvutils.getParametersValue(parameters, \"name\", EMPTY_STRING);\n }\n async encrypt(...args) {\n return this.subtle.encrypt(...args);\n }\n async decrypt(...args) {\n return this.subtle.decrypt(...args);\n }\n sign(...args) {\n return this.subtle.sign(...args);\n }\n async verify(...args) {\n return this.subtle.verify(...args);\n }\n async digest(...args) {\n return this.subtle.digest(...args);\n }\n async generateKey(...args) {\n return this.subtle.generateKey(...args);\n }\n async deriveKey(...args) {\n return this.subtle.deriveKey(...args);\n }\n async deriveBits(...args) {\n return this.subtle.deriveBits(...args);\n }\n async wrapKey(...args) {\n return this.subtle.wrapKey(...args);\n }\n async unwrapKey(...args) {\n return this.subtle.unwrapKey(...args);\n }\n exportKey(...args) {\n return this.subtle.exportKey(...args);\n }\n importKey(...args) {\n return this.subtle.importKey(...args);\n }\n getRandomValues(array) {\n return this.crypto.getRandomValues(array);\n }\n}\n\nasync function makePKCS12B2Key(hashAlgorithm, keyLength, password, salt, iterationCount) {\n let u;\n let v;\n let md;\n switch (hashAlgorithm.toUpperCase()) {\n case \"SHA-1\":\n u = 20;\n v = 64;\n md = sha1;\n break;\n case \"SHA-256\":\n u = 32;\n v = 64;\n md = sha256;\n break;\n case \"SHA-384\":\n u = 48;\n v = 128;\n md = sha384;\n break;\n case \"SHA-512\":\n u = 64;\n v = 128;\n md = sha512;\n break;\n default:\n throw new Error(\"Unsupported hashing algorithm\");\n }\n const originalPassword = new Uint8Array(password);\n let decodedPassword = new TextDecoder().decode(password);\n const encodedPassword = new TextEncoder().encode(decodedPassword);\n if (encodedPassword.some((byte, i) => byte !== originalPassword[i])) {\n decodedPassword = String.fromCharCode(...originalPassword);\n }\n const passwordTransformed = new Uint8Array(decodedPassword.length * 2 + 2);\n const passwordView = new DataView(passwordTransformed.buffer);\n for (let i = 0; i < decodedPassword.length; i++) {\n passwordView.setUint16(i * 2, decodedPassword.charCodeAt(i), false);\n }\n passwordView.setUint16(decodedPassword.length * 2, 0, false);\n const D = new Uint8Array(v).fill(3);\n const saltView = new Uint8Array(salt);\n const S = new Uint8Array(v * Math.ceil(saltView.length / v)).map((_, i) => saltView[i % saltView.length]);\n const P = new Uint8Array(v * Math.ceil(passwordTransformed.length / v)).map((_, i) => passwordTransformed[i % passwordTransformed.length]);\n let I = new Uint8Array(S.length + P.length);\n I.set(S);\n I.set(P, S.length);\n const c = Math.ceil((keyLength >> 3) / u);\n const result = [];\n for (let i = 0; i < c; i++) {\n let A = new Uint8Array(D.length + I.length);\n A.set(D);\n A.set(I, D.length);\n for (let j = 0; j < iterationCount; j++) {\n A = md(A);\n }\n const B = new Uint8Array(v).map((_, i) => A[i % A.length]);\n const k = Math.ceil(saltView.length / v) + Math.ceil(passwordTransformed.length / v);\n const iRound = [];\n for (let j = 0; j < k; j++) {\n const chunk = Array.from(I.slice(j * v, (j + 1) * v));\n let x = 0x1ff;\n for (let l = B.length - 1; l >= 0; l--) {\n x >>= 8;\n x += B[l] + (chunk[l] || 0);\n chunk[l] = x & 0xff;\n }\n iRound.push(...chunk);\n }\n I = new Uint8Array(iRound);\n result.push(...A);\n }\n return new Uint8Array(result.slice(0, keyLength >> 3)).buffer;\n}\nfunction prepareAlgorithm(data) {\n const res = typeof data === \"string\"\n ? { name: data }\n : data;\n if (\"hash\" in res) {\n return {\n ...res,\n hash: prepareAlgorithm(res.hash)\n };\n }\n return res;\n}\nclass CryptoEngine extends AbstractCryptoEngine {\n async importKey(format, keyData, algorithm, extractable, keyUsages) {\n var _a, _b, _c, _d, _e, _f;\n let jwk = {};\n const alg = prepareAlgorithm(algorithm);\n switch (format.toLowerCase()) {\n case \"raw\":\n return this.subtle.importKey(\"raw\", keyData, algorithm, extractable, keyUsages);\n case \"spki\":\n {\n const asn1 = asn1js.fromBER(pvtsutils.BufferSourceConverter.toArrayBuffer(keyData));\n AsnError.assert(asn1, \"keyData\");\n const publicKeyInfo = new PublicKeyInfo();\n try {\n publicKeyInfo.fromSchema(asn1.result);\n }\n catch {\n throw new ArgumentError(\"Incorrect keyData\");\n }\n switch (alg.name.toUpperCase()) {\n case \"RSA-PSS\":\n {\n if (!alg.hash) {\n throw new ParameterError(\"hash\", \"algorithm.hash\", \"Incorrect hash algorithm: Hash algorithm is missed\");\n }\n switch (alg.hash.name.toUpperCase()) {\n case \"SHA-1\":\n jwk.alg = \"PS1\";\n break;\n case \"SHA-256\":\n jwk.alg = \"PS256\";\n break;\n case \"SHA-384\":\n jwk.alg = \"PS384\";\n break;\n case \"SHA-512\":\n jwk.alg = \"PS512\";\n break;\n default:\n throw new Error(`Incorrect hash algorithm: ${alg.hash.name.toUpperCase()}`);\n }\n }\n case \"RSASSA-PKCS1-V1_5\":\n {\n keyUsages = [\"verify\"];\n jwk.kty = \"RSA\";\n jwk.ext = extractable;\n jwk.key_ops = keyUsages;\n if (publicKeyInfo.algorithm.algorithmId !== \"1.2.840.113549.1.1.1\")\n throw new Error(`Incorrect public key algorithm: ${publicKeyInfo.algorithm.algorithmId}`);\n if (!jwk.alg) {\n if (!alg.hash) {\n throw new ParameterError(\"hash\", \"algorithm.hash\", \"Incorrect hash algorithm: Hash algorithm is missed\");\n }\n switch (alg.hash.name.toUpperCase()) {\n case \"SHA-1\":\n jwk.alg = \"RS1\";\n break;\n case \"SHA-256\":\n jwk.alg = \"RS256\";\n break;\n case \"SHA-384\":\n jwk.alg = \"RS384\";\n break;\n case \"SHA-512\":\n jwk.alg = \"RS512\";\n break;\n default:\n throw new Error(`Incorrect hash algorithm: ${alg.hash.name.toUpperCase()}`);\n }\n }\n const publicKeyJSON = publicKeyInfo.toJSON();\n Object.assign(jwk, publicKeyJSON);\n }\n break;\n case \"ECDSA\":\n keyUsages = [\"verify\"];\n case \"ECDH\":\n {\n jwk = {\n kty: \"EC\",\n ext: extractable,\n key_ops: keyUsages\n };\n if (publicKeyInfo.algorithm.algorithmId !== \"1.2.840.10045.2.1\") {\n throw new Error(`Incorrect public key algorithm: ${publicKeyInfo.algorithm.algorithmId}`);\n }\n const publicKeyJSON = publicKeyInfo.toJSON();\n Object.assign(jwk, publicKeyJSON);\n }\n break;\n case \"RSA-OAEP\":\n {\n jwk.kty = \"RSA\";\n jwk.ext = extractable;\n jwk.key_ops = keyUsages;\n if (this.name.toLowerCase() === \"safari\")\n jwk.alg = \"RSA-OAEP\";\n else {\n if (!alg.hash) {\n throw new ParameterError(\"hash\", \"algorithm.hash\", \"Incorrect hash algorithm: Hash algorithm is missed\");\n }\n switch (alg.hash.name.toUpperCase()) {\n case \"SHA-1\":\n jwk.alg = \"RSA-OAEP\";\n break;\n case \"SHA-256\":\n jwk.alg = \"RSA-OAEP-256\";\n break;\n case \"SHA-384\":\n jwk.alg = \"RSA-OAEP-384\";\n break;\n case \"SHA-512\":\n jwk.alg = \"RSA-OAEP-512\";\n break;\n default:\n throw new Error(`Incorrect hash algorithm: ${alg.hash.name.toUpperCase()}`);\n }\n }\n const publicKeyJSON = publicKeyInfo.toJSON();\n Object.assign(jwk, publicKeyJSON);\n }\n break;\n case \"RSAES-PKCS1-V1_5\":\n {\n jwk.kty = \"RSA\";\n jwk.ext = extractable;\n jwk.key_ops = keyUsages;\n jwk.alg = \"PS1\";\n const publicKeyJSON = publicKeyInfo.toJSON();\n Object.assign(jwk, publicKeyJSON);\n }\n break;\n default:\n throw new Error(`Incorrect algorithm name: ${alg.name.toUpperCase()}`);\n }\n }\n break;\n case \"pkcs8\":\n {\n const privateKeyInfo = new PrivateKeyInfo();\n const asn1 = asn1js.fromBER(pvtsutils.BufferSourceConverter.toArrayBuffer(keyData));\n AsnError.assert(asn1, \"keyData\");\n try {\n privateKeyInfo.fromSchema(asn1.result);\n }\n catch (ex) {\n throw new Error(\"Incorrect keyData\");\n }\n if (!privateKeyInfo.parsedKey)\n throw new Error(\"Incorrect keyData\");\n switch (alg.name.toUpperCase()) {\n case \"RSA-PSS\":\n {\n switch ((_a = alg.hash) === null || _a === void 0 ? void 0 : _a.name.toUpperCase()) {\n case \"SHA-1\":\n jwk.alg = \"PS1\";\n break;\n case \"SHA-256\":\n jwk.alg = \"PS256\";\n break;\n case \"SHA-384\":\n jwk.alg = \"PS384\";\n break;\n case \"SHA-512\":\n jwk.alg = \"PS512\";\n break;\n default:\n throw new Error(`Incorrect hash algorithm: ${(_b = alg.hash) === null || _b === void 0 ? void 0 : _b.name.toUpperCase()}`);\n }\n }\n case \"RSASSA-PKCS1-V1_5\":\n {\n keyUsages = [\"sign\"];\n jwk.kty = \"RSA\";\n jwk.ext = extractable;\n jwk.key_ops = keyUsages;\n if (privateKeyInfo.privateKeyAlgorithm.algorithmId !== \"1.2.840.113549.1.1.1\")\n throw new Error(`Incorrect private key algorithm: ${privateKeyInfo.privateKeyAlgorithm.algorithmId}`);\n if ((\"alg\" in jwk) === false) {\n switch ((_c = alg.hash) === null || _c === void 0 ? void 0 : _c.name.toUpperCase()) {\n case \"SHA-1\":\n jwk.alg = \"RS1\";\n break;\n case \"SHA-256\":\n jwk.alg = \"RS256\";\n break;\n case \"SHA-384\":\n jwk.alg = \"RS384\";\n break;\n case \"SHA-512\":\n jwk.alg = \"RS512\";\n break;\n default:\n throw new Error(`Incorrect hash algorithm: ${(_d = alg.hash) === null || _d === void 0 ? void 0 : _d.name.toUpperCase()}`);\n }\n }\n const privateKeyJSON = privateKeyInfo.toJSON();\n Object.assign(jwk, privateKeyJSON);\n }\n break;\n case \"ECDSA\":\n keyUsages = [\"sign\"];\n case \"ECDH\":\n {\n jwk = {\n kty: \"EC\",\n ext: extractable,\n key_ops: keyUsages\n };\n if (privateKeyInfo.privateKeyAlgorithm.algorithmId !== \"1.2.840.10045.2.1\")\n throw new Error(`Incorrect algorithm: ${privateKeyInfo.privateKeyAlgorithm.algorithmId}`);\n const privateKeyJSON = privateKeyInfo.toJSON();\n Object.assign(jwk, privateKeyJSON);\n }\n break;\n case \"RSA-OAEP\":\n {\n jwk.kty = \"RSA\";\n jwk.ext = extractable;\n jwk.key_ops = keyUsages;\n if (this.name.toLowerCase() === \"safari\")\n jwk.alg = \"RSA-OAEP\";\n else {\n switch ((_e = alg.hash) === null || _e === void 0 ? void 0 : _e.name.toUpperCase()) {\n case \"SHA-1\":\n jwk.alg = \"RSA-OAEP\";\n break;\n case \"SHA-256\":\n jwk.alg = \"RSA-OAEP-256\";\n break;\n case \"SHA-384\":\n jwk.alg = \"RSA-OAEP-384\";\n break;\n case \"SHA-512\":\n jwk.alg = \"RSA-OAEP-512\";\n break;\n default:\n throw new Error(`Incorrect hash algorithm: ${(_f = alg.hash) === null || _f === void 0 ? void 0 : _f.name.toUpperCase()}`);\n }\n }\n const privateKeyJSON = privateKeyInfo.toJSON();\n Object.assign(jwk, privateKeyJSON);\n }\n break;\n case \"RSAES-PKCS1-V1_5\":\n {\n keyUsages = [\"decrypt\"];\n jwk.kty = \"RSA\";\n jwk.ext = extractable;\n jwk.key_ops = keyUsages;\n jwk.alg = \"PS1\";\n const privateKeyJSON = privateKeyInfo.toJSON();\n Object.assign(jwk, privateKeyJSON);\n }\n break;\n default:\n throw new Error(`Incorrect algorithm name: ${alg.name.toUpperCase()}`);\n }\n }\n break;\n case \"jwk\":\n jwk = keyData;\n break;\n default:\n throw new Error(`Incorrect format: ${format}`);\n }\n if (this.name.toLowerCase() === \"safari\") {\n try {\n return this.subtle.importKey(\"jwk\", pvutils.stringToArrayBuffer(JSON.stringify(jwk)), algorithm, extractable, keyUsages);\n }\n catch {\n return this.subtle.importKey(\"jwk\", jwk, algorithm, extractable, keyUsages);\n }\n }\n return this.subtle.importKey(\"jwk\", jwk, algorithm, extractable, keyUsages);\n }\n async exportKey(format, key) {\n let jwk = await this.subtle.exportKey(\"jwk\", key);\n if (this.name.toLowerCase() === \"safari\") {\n if (jwk instanceof ArrayBuffer) {\n jwk = JSON.parse(pvutils.arrayBufferToString(jwk));\n }\n }\n switch (format.toLowerCase()) {\n case \"raw\":\n return this.subtle.exportKey(\"raw\", key);\n case \"spki\": {\n const publicKeyInfo = new PublicKeyInfo();\n try {\n publicKeyInfo.fromJSON(jwk);\n }\n catch (ex) {\n throw new Error(\"Incorrect key data\");\n }\n return publicKeyInfo.toSchema().toBER(false);\n }\n case \"pkcs8\": {\n const privateKeyInfo = new PrivateKeyInfo();\n try {\n privateKeyInfo.fromJSON(jwk);\n }\n catch (ex) {\n throw new Error(\"Incorrect key data\");\n }\n return privateKeyInfo.toSchema().toBER(false);\n }\n case \"jwk\":\n return jwk;\n default:\n throw new Error(`Incorrect format: ${format}`);\n }\n }\n async convert(inputFormat, outputFormat, keyData, algorithm, extractable, keyUsages) {\n if (inputFormat.toLowerCase() === outputFormat.toLowerCase()) {\n return keyData;\n }\n const key = await this.importKey(inputFormat, keyData, algorithm, extractable, keyUsages);\n return this.exportKey(outputFormat, key);\n }\n getAlgorithmByOID(oid, safety = false, target) {\n switch (oid) {\n case \"1.2.840.113549.1.1.1\":\n return {\n name: \"RSAES-PKCS1-v1_5\"\n };\n case \"1.2.840.113549.1.1.5\":\n return {\n name: \"RSASSA-PKCS1-v1_5\",\n hash: {\n name: \"SHA-1\"\n }\n };\n case \"1.2.840.113549.1.1.11\":\n return {\n name: \"RSASSA-PKCS1-v1_5\",\n hash: {\n name: \"SHA-256\"\n }\n };\n case \"1.2.840.113549.1.1.12\":\n return {\n name: \"RSASSA-PKCS1-v1_5\",\n hash: {\n name: \"SHA-384\"\n }\n };\n case \"1.2.840.113549.1.1.13\":\n return {\n name: \"RSASSA-PKCS1-v1_5\",\n hash: {\n name: \"SHA-512\"\n }\n };\n case \"1.2.840.113549.1.1.10\":\n return {\n name: \"RSA-PSS\"\n };\n case \"1.2.840.113549.1.1.7\":\n return {\n name: \"RSA-OAEP\"\n };\n case \"1.2.840.10045.2.1\":\n case \"1.2.840.10045.4.1\":\n return {\n name: \"ECDSA\",\n hash: {\n name: \"SHA-1\"\n }\n };\n case \"1.2.840.10045.4.3.2\":\n return {\n name: \"ECDSA\",\n hash: {\n name: \"SHA-256\"\n }\n };\n case \"1.2.840.10045.4.3.3\":\n return {\n name: \"ECDSA\",\n hash: {\n name: \"SHA-384\"\n }\n };\n case \"1.2.840.10045.4.3.4\":\n return {\n name: \"ECDSA\",\n hash: {\n name: \"SHA-512\"\n }\n };\n case \"1.3.133.16.840.63.0.2\":\n return {\n name: \"ECDH\",\n kdf: \"SHA-1\"\n };\n case \"1.3.132.1.11.1\":\n return {\n name: \"ECDH\",\n kdf: \"SHA-256\"\n };\n case \"1.3.132.1.11.2\":\n return {\n name: \"ECDH\",\n kdf: \"SHA-384\"\n };\n case \"1.3.132.1.11.3\":\n return {\n name: \"ECDH\",\n kdf: \"SHA-512\"\n };\n case \"2.16.840.1.101.3.4.1.2\":\n return {\n name: \"AES-CBC\",\n length: 128\n };\n case \"2.16.840.1.101.3.4.1.22\":\n return {\n name: \"AES-CBC\",\n length: 192\n };\n case \"2.16.840.1.101.3.4.1.42\":\n return {\n name: \"AES-CBC\",\n length: 256\n };\n case \"2.16.840.1.101.3.4.1.6\":\n return {\n name: \"AES-GCM\",\n length: 128\n };\n case \"2.16.840.1.101.3.4.1.26\":\n return {\n name: \"AES-GCM\",\n length: 192\n };\n case \"2.16.840.1.101.3.4.1.46\":\n return {\n name: \"AES-GCM\",\n length: 256\n };\n case \"2.16.840.1.101.3.4.1.4\":\n return {\n name: \"AES-CFB\",\n length: 128\n };\n case \"2.16.840.1.101.3.4.1.24\":\n return {\n name: \"AES-CFB\",\n length: 192\n };\n case \"2.16.840.1.101.3.4.1.44\":\n return {\n name: \"AES-CFB\",\n length: 256\n };\n case \"2.16.840.1.101.3.4.1.5\":\n return {\n name: \"AES-KW\",\n length: 128\n };\n case \"2.16.840.1.101.3.4.1.25\":\n return {\n name: \"AES-KW\",\n length: 192\n };\n case \"2.16.840.1.101.3.4.1.45\":\n return {\n name: \"AES-KW\",\n length: 256\n };\n case \"1.2.840.113549.2.7\":\n return {\n name: \"HMAC\",\n hash: {\n name: \"SHA-1\"\n }\n };\n case \"1.2.840.113549.2.9\":\n return {\n name: \"HMAC\",\n hash: {\n name: \"SHA-256\"\n }\n };\n case \"1.2.840.113549.2.10\":\n return {\n name: \"HMAC\",\n hash: {\n name: \"SHA-384\"\n }\n };\n case \"1.2.840.113549.2.11\":\n return {\n name: \"HMAC\",\n hash: {\n name: \"SHA-512\"\n }\n };\n case \"1.2.840.113549.1.9.16.3.5\":\n return {\n name: \"DH\"\n };\n case \"1.3.14.3.2.26\":\n return {\n name: \"SHA-1\"\n };\n case \"2.16.840.1.101.3.4.2.1\":\n return {\n name: \"SHA-256\"\n };\n case \"2.16.840.1.101.3.4.2.2\":\n return {\n name: \"SHA-384\"\n };\n case \"2.16.840.1.101.3.4.2.3\":\n return {\n name: \"SHA-512\"\n };\n case \"1.2.840.113549.1.5.12\":\n return {\n name: \"PBKDF2\"\n };\n case \"1.2.840.10045.3.1.7\":\n return {\n name: \"P-256\"\n };\n case \"1.3.132.0.34\":\n return {\n name: \"P-384\"\n };\n case \"1.3.132.0.35\":\n return {\n name: \"P-521\"\n };\n }\n if (safety) {\n throw new Error(`Unsupported algorithm identifier ${target ? `for ${target} ` : EMPTY_STRING}: ${oid}`);\n }\n return {};\n }\n getOIDByAlgorithm(algorithm, safety = false, target) {\n let result = EMPTY_STRING;\n switch (algorithm.name.toUpperCase()) {\n case \"RSAES-PKCS1-V1_5\":\n result = \"1.2.840.113549.1.1.1\";\n break;\n case \"RSASSA-PKCS1-V1_5\":\n switch (algorithm.hash.name.toUpperCase()) {\n case \"SHA-1\":\n result = \"1.2.840.113549.1.1.5\";\n break;\n case \"SHA-256\":\n result = \"1.2.840.113549.1.1.11\";\n break;\n case \"SHA-384\":\n result = \"1.2.840.113549.1.1.12\";\n break;\n case \"SHA-512\":\n result = \"1.2.840.113549.1.1.13\";\n break;\n }\n break;\n case \"RSA-PSS\":\n result = \"1.2.840.113549.1.1.10\";\n break;\n case \"RSA-OAEP\":\n result = \"1.2.840.113549.1.1.7\";\n break;\n case \"ECDSA\":\n switch (algorithm.hash.name.toUpperCase()) {\n case \"SHA-1\":\n result = \"1.2.840.10045.4.1\";\n break;\n case \"SHA-256\":\n result = \"1.2.840.10045.4.3.2\";\n break;\n case \"SHA-384\":\n result = \"1.2.840.10045.4.3.3\";\n break;\n case \"SHA-512\":\n result = \"1.2.840.10045.4.3.4\";\n break;\n }\n break;\n case \"ECDH\":\n switch (algorithm.kdf.toUpperCase()) {\n case \"SHA-1\":\n result = \"1.3.133.16.840.63.0.2\";\n break;\n case \"SHA-256\":\n result = \"1.3.132.1.11.1\";\n break;\n case \"SHA-384\":\n result = \"1.3.132.1.11.2\";\n break;\n case \"SHA-512\":\n result = \"1.3.132.1.11.3\";\n break;\n }\n break;\n case \"AES-CTR\":\n break;\n case \"AES-CBC\":\n switch (algorithm.length) {\n case 128:\n result = \"2.16.840.1.101.3.4.1.2\";\n break;\n case 192:\n result = \"2.16.840.1.101.3.4.1.22\";\n break;\n case 256:\n result = \"2.16.840.1.101.3.4.1.42\";\n break;\n }\n break;\n case \"AES-CMAC\":\n break;\n case \"AES-GCM\":\n switch (algorithm.length) {\n case 128:\n result = \"2.16.840.1.101.3.4.1.6\";\n break;\n case 192:\n result = \"2.16.840.1.101.3.4.1.26\";\n break;\n case 256:\n result = \"2.16.840.1.101.3.4.1.46\";\n break;\n }\n break;\n case \"AES-CFB\":\n switch (algorithm.length) {\n case 128:\n result = \"2.16.840.1.101.3.4.1.4\";\n break;\n case 192:\n result = \"2.16.840.1.101.3.4.1.24\";\n break;\n case 256:\n result = \"2.16.840.1.101.3.4.1.44\";\n break;\n }\n break;\n case \"AES-KW\":\n switch (algorithm.length) {\n case 128:\n result = \"2.16.840.1.101.3.4.1.5\";\n break;\n case 192:\n result = \"2.16.840.1.101.3.4.1.25\";\n break;\n case 256:\n result = \"2.16.840.1.101.3.4.1.45\";\n break;\n }\n break;\n case \"HMAC\":\n switch (algorithm.hash.name.toUpperCase()) {\n case \"SHA-1\":\n result = \"1.2.840.113549.2.7\";\n break;\n case \"SHA-256\":\n result = \"1.2.840.113549.2.9\";\n break;\n case \"SHA-384\":\n result = \"1.2.840.113549.2.10\";\n break;\n case \"SHA-512\":\n result = \"1.2.840.113549.2.11\";\n break;\n }\n break;\n case \"DH\":\n result = \"1.2.840.113549.1.9.16.3.5\";\n break;\n case \"SHA-1\":\n result = \"1.3.14.3.2.26\";\n break;\n case \"SHA-256\":\n result = \"2.16.840.1.101.3.4.2.1\";\n break;\n case \"SHA-384\":\n result = \"2.16.840.1.101.3.4.2.2\";\n break;\n case \"SHA-512\":\n result = \"2.16.840.1.101.3.4.2.3\";\n break;\n case \"CONCAT\":\n break;\n case \"HKDF\":\n break;\n case \"PBKDF2\":\n result = \"1.2.840.113549.1.5.12\";\n break;\n case \"P-256\":\n result = \"1.2.840.10045.3.1.7\";\n break;\n case \"P-384\":\n result = \"1.3.132.0.34\";\n break;\n case \"P-521\":\n result = \"1.3.132.0.35\";\n break;\n }\n if (!result && safety) {\n throw new Error(`Unsupported algorithm ${target ? `for ${target} ` : EMPTY_STRING}: ${algorithm.name}`);\n }\n return result;\n }\n getAlgorithmParameters(algorithmName, operation) {\n let result = {\n algorithm: {},\n usages: []\n };\n switch (algorithmName.toUpperCase()) {\n case \"RSAES-PKCS1-V1_5\":\n case \"RSASSA-PKCS1-V1_5\":\n switch (operation.toLowerCase()) {\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"RSASSA-PKCS1-v1_5\",\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: {\n name: \"SHA-256\"\n }\n },\n usages: [\"sign\", \"verify\"]\n };\n break;\n case \"verify\":\n case \"sign\":\n case \"importkey\":\n result = {\n algorithm: {\n name: \"RSASSA-PKCS1-v1_5\",\n hash: {\n name: \"SHA-256\"\n }\n },\n usages: [\"verify\"]\n };\n break;\n case \"exportkey\":\n default:\n return {\n algorithm: {\n name: \"RSASSA-PKCS1-v1_5\"\n },\n usages: []\n };\n }\n break;\n case \"RSA-PSS\":\n switch (operation.toLowerCase()) {\n case \"sign\":\n case \"verify\":\n result = {\n algorithm: {\n name: \"RSA-PSS\",\n hash: {\n name: \"SHA-1\"\n },\n saltLength: 20\n },\n usages: [\"sign\", \"verify\"]\n };\n break;\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"RSA-PSS\",\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: {\n name: \"SHA-1\"\n }\n },\n usages: [\"sign\", \"verify\"]\n };\n break;\n case \"importkey\":\n result = {\n algorithm: {\n name: \"RSA-PSS\",\n hash: {\n name: \"SHA-1\"\n }\n },\n usages: [\"verify\"]\n };\n break;\n case \"exportkey\":\n default:\n return {\n algorithm: {\n name: \"RSA-PSS\"\n },\n usages: []\n };\n }\n break;\n case \"RSA-OAEP\":\n switch (operation.toLowerCase()) {\n case \"encrypt\":\n case \"decrypt\":\n result = {\n algorithm: {\n name: \"RSA-OAEP\"\n },\n usages: [\"encrypt\", \"decrypt\"]\n };\n break;\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"RSA-OAEP\",\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: {\n name: \"SHA-256\"\n }\n },\n usages: [\"encrypt\", \"decrypt\", \"wrapKey\", \"unwrapKey\"]\n };\n break;\n case \"importkey\":\n result = {\n algorithm: {\n name: \"RSA-OAEP\",\n hash: {\n name: \"SHA-256\"\n }\n },\n usages: [\"encrypt\"]\n };\n break;\n case \"exportkey\":\n default:\n return {\n algorithm: {\n name: \"RSA-OAEP\"\n },\n usages: []\n };\n }\n break;\n case \"ECDSA\":\n switch (operation.toLowerCase()) {\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"ECDSA\",\n namedCurve: \"P-256\"\n },\n usages: [\"sign\", \"verify\"]\n };\n break;\n case \"importkey\":\n result = {\n algorithm: {\n name: \"ECDSA\",\n namedCurve: \"P-256\"\n },\n usages: [\"verify\"]\n };\n break;\n case \"verify\":\n case \"sign\":\n result = {\n algorithm: {\n name: \"ECDSA\",\n hash: {\n name: \"SHA-256\"\n }\n },\n usages: [\"sign\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"ECDSA\"\n },\n usages: []\n };\n }\n break;\n case \"ECDH\":\n switch (operation.toLowerCase()) {\n case \"exportkey\":\n case \"importkey\":\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"ECDH\",\n namedCurve: \"P-256\"\n },\n usages: [\"deriveKey\", \"deriveBits\"]\n };\n break;\n case \"derivekey\":\n case \"derivebits\":\n result = {\n algorithm: {\n name: \"ECDH\",\n namedCurve: \"P-256\",\n public: []\n },\n usages: [\"encrypt\", \"decrypt\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"ECDH\"\n },\n usages: []\n };\n }\n break;\n case \"AES-CTR\":\n switch (operation.toLowerCase()) {\n case \"importkey\":\n case \"exportkey\":\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"AES-CTR\",\n length: 256\n },\n usages: [\"encrypt\", \"decrypt\", \"wrapKey\", \"unwrapKey\"]\n };\n break;\n case \"decrypt\":\n case \"encrypt\":\n result = {\n algorithm: {\n name: \"AES-CTR\",\n counter: new Uint8Array(16),\n length: 10\n },\n usages: [\"encrypt\", \"decrypt\", \"wrapKey\", \"unwrapKey\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"AES-CTR\"\n },\n usages: []\n };\n }\n break;\n case \"AES-CBC\":\n switch (operation.toLowerCase()) {\n case \"importkey\":\n case \"exportkey\":\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"AES-CBC\",\n length: 256\n },\n usages: [\"encrypt\", \"decrypt\", \"wrapKey\", \"unwrapKey\"]\n };\n break;\n case \"decrypt\":\n case \"encrypt\":\n result = {\n algorithm: {\n name: \"AES-CBC\",\n iv: this.getRandomValues(new Uint8Array(16))\n },\n usages: [\"encrypt\", \"decrypt\", \"wrapKey\", \"unwrapKey\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"AES-CBC\"\n },\n usages: []\n };\n }\n break;\n case \"AES-GCM\":\n switch (operation.toLowerCase()) {\n case \"importkey\":\n case \"exportkey\":\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"AES-GCM\",\n length: 256\n },\n usages: [\"encrypt\", \"decrypt\", \"wrapKey\", \"unwrapKey\"]\n };\n break;\n case \"decrypt\":\n case \"encrypt\":\n result = {\n algorithm: {\n name: \"AES-GCM\",\n iv: this.getRandomValues(new Uint8Array(16))\n },\n usages: [\"encrypt\", \"decrypt\", \"wrapKey\", \"unwrapKey\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"AES-GCM\"\n },\n usages: []\n };\n }\n break;\n case \"AES-KW\":\n switch (operation.toLowerCase()) {\n case \"importkey\":\n case \"exportkey\":\n case \"generatekey\":\n case \"wrapkey\":\n case \"unwrapkey\":\n result = {\n algorithm: {\n name: \"AES-KW\",\n length: 256\n },\n usages: [\"wrapKey\", \"unwrapKey\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"AES-KW\"\n },\n usages: []\n };\n }\n break;\n case \"HMAC\":\n switch (operation.toLowerCase()) {\n case \"sign\":\n case \"verify\":\n result = {\n algorithm: {\n name: \"HMAC\"\n },\n usages: [\"sign\", \"verify\"]\n };\n break;\n case \"importkey\":\n case \"exportkey\":\n case \"generatekey\":\n result = {\n algorithm: {\n name: \"HMAC\",\n length: 32,\n hash: {\n name: \"SHA-256\"\n }\n },\n usages: [\"sign\", \"verify\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"HMAC\"\n },\n usages: []\n };\n }\n break;\n case \"HKDF\":\n switch (operation.toLowerCase()) {\n case \"derivekey\":\n result = {\n algorithm: {\n name: \"HKDF\",\n hash: \"SHA-256\",\n salt: new Uint8Array([]),\n info: new Uint8Array([])\n },\n usages: [\"encrypt\", \"decrypt\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"HKDF\"\n },\n usages: []\n };\n }\n break;\n case \"PBKDF2\":\n switch (operation.toLowerCase()) {\n case \"derivekey\":\n result = {\n algorithm: {\n name: \"PBKDF2\",\n hash: { name: \"SHA-256\" },\n salt: new Uint8Array([]),\n iterations: 10000\n },\n usages: [\"encrypt\", \"decrypt\"]\n };\n break;\n default:\n return {\n algorithm: {\n name: \"PBKDF2\"\n },\n usages: []\n };\n }\n break;\n }\n return result;\n }\n getHashAlgorithm(signatureAlgorithm) {\n let result = EMPTY_STRING;\n switch (signatureAlgorithm.algorithmId) {\n case \"1.2.840.10045.4.1\":\n case \"1.2.840.113549.1.1.5\":\n result = \"SHA-1\";\n break;\n case \"1.2.840.10045.4.3.2\":\n case \"1.2.840.113549.1.1.11\":\n result = \"SHA-256\";\n break;\n case \"1.2.840.10045.4.3.3\":\n case \"1.2.840.113549.1.1.12\":\n result = \"SHA-384\";\n break;\n case \"1.2.840.10045.4.3.4\":\n case \"1.2.840.113549.1.1.13\":\n result = \"SHA-512\";\n break;\n case \"1.2.840.113549.1.1.10\":\n {\n try {\n const params = new RSASSAPSSParams({ schema: signatureAlgorithm.algorithmParams });\n if (params.hashAlgorithm) {\n const algorithm = this.getAlgorithmByOID(params.hashAlgorithm.algorithmId);\n if (\"name\" in algorithm) {\n result = algorithm.name;\n }\n else {\n return EMPTY_STRING;\n }\n }\n else\n result = \"SHA-1\";\n }\n catch {\n }\n }\n break;\n }\n return result;\n }\n async encryptEncryptedContentInfo(parameters) {\n ParameterError.assert(parameters, \"password\", \"contentEncryptionAlgorithm\", \"hmacHashAlgorithm\", \"iterationCount\", \"contentToEncrypt\", \"contentToEncrypt\", \"contentType\");\n const contentEncryptionOID = this.getOIDByAlgorithm(parameters.contentEncryptionAlgorithm, true, \"contentEncryptionAlgorithm\");\n const pbkdf2OID = this.getOIDByAlgorithm({\n name: \"PBKDF2\"\n }, true, \"PBKDF2\");\n const hmacOID = this.getOIDByAlgorithm({\n name: \"HMAC\",\n hash: {\n name: parameters.hmacHashAlgorithm\n }\n }, true, \"hmacHashAlgorithm\");\n const ivBuffer = new ArrayBuffer(16);\n const ivView = new Uint8Array(ivBuffer);\n this.getRandomValues(ivView);\n const saltBuffer = new ArrayBuffer(64);\n const saltView = new Uint8Array(saltBuffer);\n this.getRandomValues(saltView);\n const contentView = new Uint8Array(parameters.contentToEncrypt);\n const pbkdf2Params = new PBKDF2Params({\n salt: new asn1js.OctetString({ valueHex: saltBuffer }),\n iterationCount: parameters.iterationCount,\n prf: new AlgorithmIdentifier({\n algorithmId: hmacOID,\n algorithmParams: new asn1js.Null()\n })\n });\n const passwordView = new Uint8Array(parameters.password);\n const pbkdfKey = await this.importKey(\"raw\", passwordView, \"PBKDF2\", false, [\"deriveKey\"]);\n const derivedKey = await this.deriveKey({\n name: \"PBKDF2\",\n hash: {\n name: parameters.hmacHashAlgorithm\n },\n salt: saltView,\n iterations: parameters.iterationCount\n }, pbkdfKey, parameters.contentEncryptionAlgorithm, false, [\"encrypt\"]);\n const encryptedData = await this.encrypt({\n name: parameters.contentEncryptionAlgorithm.name,\n iv: ivView\n }, derivedKey, contentView);\n const pbes2Parameters = new PBES2Params({\n keyDerivationFunc: new AlgorithmIdentifier({\n algorithmId: pbkdf2OID,\n algorithmParams: pbkdf2Params.toSchema()\n }),\n encryptionScheme: new AlgorithmIdentifier({\n algorithmId: contentEncryptionOID,\n algorithmParams: new asn1js.OctetString({ valueHex: ivBuffer })\n })\n });\n return new EncryptedContentInfo({\n contentType: parameters.contentType,\n contentEncryptionAlgorithm: new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.5.13\",\n algorithmParams: pbes2Parameters.toSchema()\n }),\n encryptedContent: new asn1js.OctetString({ valueHex: encryptedData })\n });\n }\n async decryptEncryptedContentInfo(parameters) {\n ParameterError.assert(parameters, \"password\", \"encryptedContentInfo\");\n if (parameters.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId !== \"1.2.840.113549.1.5.13\")\n throw new Error(`Unknown \"contentEncryptionAlgorithm\": ${parameters.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId}`);\n let pbes2Parameters;\n try {\n pbes2Parameters = new PBES2Params({ schema: parameters.encryptedContentInfo.contentEncryptionAlgorithm.algorithmParams });\n }\n catch (ex) {\n throw new Error(\"Incorrectly encoded \\\"pbes2Parameters\\\"\");\n }\n let pbkdf2Params;\n try {\n pbkdf2Params = new PBKDF2Params({ schema: pbes2Parameters.keyDerivationFunc.algorithmParams });\n }\n catch (ex) {\n throw new Error(\"Incorrectly encoded \\\"pbkdf2Params\\\"\");\n }\n const contentEncryptionAlgorithm = this.getAlgorithmByOID(pbes2Parameters.encryptionScheme.algorithmId, true);\n const ivBuffer = pbes2Parameters.encryptionScheme.algorithmParams.valueBlock.valueHex;\n const ivView = new Uint8Array(ivBuffer);\n const saltBuffer = pbkdf2Params.salt.valueBlock.valueHex;\n const saltView = new Uint8Array(saltBuffer);\n const iterationCount = pbkdf2Params.iterationCount;\n let hmacHashAlgorithm = \"SHA-1\";\n if (pbkdf2Params.prf) {\n const algorithm = this.getAlgorithmByOID(pbkdf2Params.prf.algorithmId, true);\n hmacHashAlgorithm = algorithm.hash.name;\n }\n const pbkdfKey = await this.importKey(\"raw\", parameters.password, \"PBKDF2\", false, [\"deriveKey\"]);\n const result = await this.deriveKey({\n name: \"PBKDF2\",\n hash: {\n name: hmacHashAlgorithm\n },\n salt: saltView,\n iterations: iterationCount\n }, pbkdfKey, contentEncryptionAlgorithm, false, [\"decrypt\"]);\n const dataBuffer = parameters.encryptedContentInfo.getEncryptedContent();\n return this.decrypt({\n name: contentEncryptionAlgorithm.name,\n iv: ivView\n }, result, dataBuffer);\n }\n async stampDataWithPassword(parameters) {\n if ((parameters instanceof Object) === false)\n throw new Error(\"Parameters must have type \\\"Object\\\"\");\n ParameterError.assert(parameters, \"password\", \"hashAlgorithm\", \"iterationCount\", \"salt\", \"contentToStamp\");\n let length;\n switch (parameters.hashAlgorithm.toLowerCase()) {\n case \"sha-1\":\n length = 160;\n break;\n case \"sha-256\":\n length = 256;\n break;\n case \"sha-384\":\n length = 384;\n break;\n case \"sha-512\":\n length = 512;\n break;\n default:\n throw new Error(`Incorrect \"parameters.hashAlgorithm\" parameter: ${parameters.hashAlgorithm}`);\n }\n const hmacAlgorithm = {\n name: \"HMAC\",\n length,\n hash: {\n name: parameters.hashAlgorithm\n }\n };\n const pkcsKey = await makePKCS12B2Key(parameters.hashAlgorithm, length, parameters.password, parameters.salt, parameters.iterationCount);\n const hmacKey = await this.importKey(\"raw\", new Uint8Array(pkcsKey), hmacAlgorithm, false, [\"sign\"]);\n return this.sign(hmacAlgorithm, hmacKey, new Uint8Array(parameters.contentToStamp));\n }\n async verifyDataStampedWithPassword(parameters) {\n ParameterError.assert(parameters, \"password\", \"hashAlgorithm\", \"salt\", \"iterationCount\", \"contentToVerify\", \"signatureToVerify\");\n let length = 0;\n switch (parameters.hashAlgorithm.toLowerCase()) {\n case \"sha-1\":\n length = 160;\n break;\n case \"sha-256\":\n length = 256;\n break;\n case \"sha-384\":\n length = 384;\n break;\n case \"sha-512\":\n length = 512;\n break;\n default:\n throw new Error(`Incorrect \"parameters.hashAlgorithm\" parameter: ${parameters.hashAlgorithm}`);\n }\n const hmacAlgorithm = {\n name: \"HMAC\",\n length,\n hash: {\n name: parameters.hashAlgorithm\n }\n };\n const pkcsKey = await makePKCS12B2Key(parameters.hashAlgorithm, length, parameters.password, parameters.salt, parameters.iterationCount);\n const hmacKey = await this.importKey(\"raw\", new Uint8Array(pkcsKey), hmacAlgorithm, false, [\"verify\"]);\n return this.verify(hmacAlgorithm, hmacKey, new Uint8Array(parameters.signatureToVerify), new Uint8Array(parameters.contentToVerify));\n }\n async getSignatureParameters(privateKey, hashAlgorithm = \"SHA-1\") {\n this.getOIDByAlgorithm({ name: hashAlgorithm }, true, \"hashAlgorithm\");\n const signatureAlgorithm = new AlgorithmIdentifier();\n const parameters = this.getAlgorithmParameters(privateKey.algorithm.name, \"sign\");\n if (!Object.keys(parameters.algorithm).length) {\n throw new Error(\"Parameter 'algorithm' is empty\");\n }\n const algorithm = parameters.algorithm;\n if (\"hash\" in privateKey.algorithm && privateKey.algorithm.hash && privateKey.algorithm.hash.name) {\n algorithm.hash.name = privateKey.algorithm.hash.name;\n }\n else {\n algorithm.hash.name = hashAlgorithm;\n }\n switch (privateKey.algorithm.name.toUpperCase()) {\n case \"RSASSA-PKCS1-V1_5\":\n case \"ECDSA\":\n signatureAlgorithm.algorithmId = this.getOIDByAlgorithm(algorithm, true);\n break;\n case \"RSA-PSS\":\n {\n switch (algorithm.hash.name.toUpperCase()) {\n case \"SHA-256\":\n algorithm.saltLength = 32;\n break;\n case \"SHA-384\":\n algorithm.saltLength = 48;\n break;\n case \"SHA-512\":\n algorithm.saltLength = 64;\n break;\n }\n const paramsObject = {};\n if (algorithm.hash.name.toUpperCase() !== \"SHA-1\") {\n const hashAlgorithmOID = this.getOIDByAlgorithm({ name: algorithm.hash.name }, true, \"hashAlgorithm\");\n paramsObject.hashAlgorithm = new AlgorithmIdentifier({\n algorithmId: hashAlgorithmOID,\n algorithmParams: new asn1js.Null()\n });\n paramsObject.maskGenAlgorithm = new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.1.8\",\n algorithmParams: paramsObject.hashAlgorithm.toSchema()\n });\n }\n if (algorithm.saltLength !== 20)\n paramsObject.saltLength = algorithm.saltLength;\n const pssParameters = new RSASSAPSSParams(paramsObject);\n signatureAlgorithm.algorithmId = \"1.2.840.113549.1.1.10\";\n signatureAlgorithm.algorithmParams = pssParameters.toSchema();\n }\n break;\n default:\n throw new Error(`Unsupported signature algorithm: ${privateKey.algorithm.name}`);\n }\n return {\n signatureAlgorithm,\n parameters\n };\n }\n async signWithPrivateKey(data, privateKey, parameters) {\n const signature = await this.sign(parameters.algorithm, privateKey, data);\n if (parameters.algorithm.name === \"ECDSA\") {\n return createCMSECDSASignature(signature);\n }\n return signature;\n }\n fillPublicKeyParameters(publicKeyInfo, signatureAlgorithm) {\n const parameters = {};\n const shaAlgorithm = this.getHashAlgorithm(signatureAlgorithm);\n if (shaAlgorithm === EMPTY_STRING)\n throw new Error(`Unsupported signature algorithm: ${signatureAlgorithm.algorithmId}`);\n let algorithmId;\n if (signatureAlgorithm.algorithmId === \"1.2.840.113549.1.1.10\")\n algorithmId = signatureAlgorithm.algorithmId;\n else\n algorithmId = publicKeyInfo.algorithm.algorithmId;\n const algorithmObject = this.getAlgorithmByOID(algorithmId, true);\n parameters.algorithm = this.getAlgorithmParameters(algorithmObject.name, \"importKey\");\n if (\"hash\" in parameters.algorithm.algorithm)\n parameters.algorithm.algorithm.hash.name = shaAlgorithm;\n if (algorithmObject.name === \"ECDSA\") {\n const publicKeyAlgorithm = publicKeyInfo.algorithm;\n if (!publicKeyAlgorithm.algorithmParams) {\n throw new Error(\"Algorithm parameters for ECDSA public key are missed\");\n }\n const publicKeyAlgorithmParams = publicKeyAlgorithm.algorithmParams;\n if (\"idBlock\" in publicKeyAlgorithm.algorithmParams) {\n if (!((publicKeyAlgorithmParams.idBlock.tagClass === 1) && (publicKeyAlgorithmParams.idBlock.tagNumber === 6))) {\n throw new Error(\"Incorrect type for ECDSA public key parameters\");\n }\n }\n const curveObject = this.getAlgorithmByOID(publicKeyAlgorithmParams.valueBlock.toString(), true);\n parameters.algorithm.algorithm.namedCurve = curveObject.name;\n }\n return parameters;\n }\n async getPublicKey(publicKeyInfo, signatureAlgorithm, parameters) {\n if (!parameters) {\n parameters = this.fillPublicKeyParameters(publicKeyInfo, signatureAlgorithm);\n }\n const publicKeyInfoBuffer = publicKeyInfo.toSchema().toBER(false);\n return this.importKey(\"spki\", publicKeyInfoBuffer, parameters.algorithm.algorithm, true, parameters.algorithm.usages);\n }\n async verifyWithPublicKey(data, signature, publicKeyInfo, signatureAlgorithm, shaAlgorithm) {\n let publicKey;\n if (!shaAlgorithm) {\n shaAlgorithm = this.getHashAlgorithm(signatureAlgorithm);\n if (!shaAlgorithm)\n throw new Error(`Unsupported signature algorithm: ${signatureAlgorithm.algorithmId}`);\n publicKey = await this.getPublicKey(publicKeyInfo, signatureAlgorithm);\n }\n else {\n const parameters = {};\n let algorithmId;\n if (signatureAlgorithm.algorithmId === \"1.2.840.113549.1.1.10\")\n algorithmId = signatureAlgorithm.algorithmId;\n else\n algorithmId = publicKeyInfo.algorithm.algorithmId;\n const algorithmObject = this.getAlgorithmByOID(algorithmId, true);\n parameters.algorithm = this.getAlgorithmParameters(algorithmObject.name, \"importKey\");\n if (\"hash\" in parameters.algorithm.algorithm)\n parameters.algorithm.algorithm.hash.name = shaAlgorithm;\n if (algorithmObject.name === \"ECDSA\") {\n let algorithmParamsChecked = false;\n if ((\"algorithmParams\" in publicKeyInfo.algorithm) === true) {\n if (\"idBlock\" in publicKeyInfo.algorithm.algorithmParams) {\n if ((publicKeyInfo.algorithm.algorithmParams.idBlock.tagClass === 1) && (publicKeyInfo.algorithm.algorithmParams.idBlock.tagNumber === 6))\n algorithmParamsChecked = true;\n }\n }\n if (algorithmParamsChecked === false) {\n throw new Error(\"Incorrect type for ECDSA public key parameters\");\n }\n const curveObject = this.getAlgorithmByOID(publicKeyInfo.algorithm.algorithmParams.valueBlock.toString(), true);\n parameters.algorithm.algorithm.namedCurve = curveObject.name;\n }\n publicKey = await this.getPublicKey(publicKeyInfo, null, parameters);\n }\n const algorithm = this.getAlgorithmParameters(publicKey.algorithm.name, \"verify\");\n if (\"hash\" in algorithm.algorithm)\n algorithm.algorithm.hash.name = shaAlgorithm;\n let signatureValue = signature.valueBlock.valueHexView;\n if (publicKey.algorithm.name === \"ECDSA\") {\n const namedCurve = ECNamedCurves.find(publicKey.algorithm.namedCurve);\n if (!namedCurve) {\n throw new Error(\"Unsupported named curve in use\");\n }\n const asn1 = asn1js.fromBER(signatureValue);\n AsnError.assert(asn1, \"Signature value\");\n signatureValue = createECDSASignatureFromCMS(asn1.result, namedCurve.size);\n }\n if (publicKey.algorithm.name === \"RSA-PSS\") {\n const pssParameters = new RSASSAPSSParams({ schema: signatureAlgorithm.algorithmParams });\n if (\"saltLength\" in pssParameters)\n algorithm.algorithm.saltLength = pssParameters.saltLength;\n else\n algorithm.algorithm.saltLength = 20;\n let hashAlgo = \"SHA-1\";\n if (\"hashAlgorithm\" in pssParameters) {\n const hashAlgorithm = this.getAlgorithmByOID(pssParameters.hashAlgorithm.algorithmId, true);\n hashAlgo = hashAlgorithm.name;\n }\n algorithm.algorithm.hash.name = hashAlgo;\n }\n return this.verify(algorithm.algorithm, publicKey, signatureValue, data);\n }\n}\n\nlet engine = {\n name: \"none\",\n crypto: null,\n};\nfunction isCryptoEngine(engine) {\n return engine\n && typeof engine === \"object\"\n && \"crypto\" in engine\n ? true\n : false;\n}\nfunction setEngine(name, ...args) {\n let crypto = null;\n if (args.length < 2) {\n if (args.length) {\n crypto = args[0];\n }\n else {\n crypto = typeof self !== \"undefined\" && self.crypto ? new CryptoEngine({ name: \"browser\", crypto: self.crypto }) : null;\n }\n }\n else {\n const cryptoArg = args[0];\n const subtleArg = args[1];\n if (isCryptoEngine(subtleArg)) {\n crypto = subtleArg;\n }\n else if (isCryptoEngine(cryptoArg)) {\n crypto = cryptoArg;\n }\n else if (\"subtle\" in cryptoArg && \"getRandomValues\" in cryptoArg) {\n crypto = new CryptoEngine({\n crypto: cryptoArg,\n });\n }\n }\n if ((typeof process !== \"undefined\") && (\"pid\" in process) && (typeof global !== \"undefined\") && (typeof window === \"undefined\")) {\n if (typeof global[process.pid] === \"undefined\") {\n global[process.pid] = {};\n }\n else {\n if (typeof global[process.pid] !== \"object\") {\n throw new Error(`Name global.${process.pid} already exists and it is not an object`);\n }\n }\n if (typeof global[process.pid].pkijs === \"undefined\") {\n global[process.pid].pkijs = {};\n }\n else {\n if (typeof global[process.pid].pkijs !== \"object\") {\n throw new Error(`Name global.${process.pid}.pkijs already exists and it is not an object`);\n }\n }\n global[process.pid].pkijs.engine = {\n name: name,\n crypto,\n };\n }\n else {\n engine = {\n name: name,\n crypto,\n };\n }\n}\nfunction getEngine() {\n if ((typeof process !== \"undefined\") && (\"pid\" in process) && (typeof global !== \"undefined\") && (typeof window === \"undefined\")) {\n let _engine;\n try {\n _engine = global[process.pid].pkijs.engine;\n }\n catch (ex) {\n throw new Error(\"Please call 'setEngine' before call to 'getEngine'\");\n }\n return _engine;\n }\n return engine;\n}\nfunction getCrypto(safety = false) {\n const _engine = getEngine();\n if (!_engine.crypto && safety) {\n throw new Error(\"Unable to create WebCrypto object\");\n }\n return _engine.crypto;\n}\nfunction getRandomValues(view) {\n return getCrypto(true).getRandomValues(view);\n}\nfunction getOIDByAlgorithm(algorithm, safety, target) {\n return getCrypto(true).getOIDByAlgorithm(algorithm, safety, target);\n}\nfunction getAlgorithmParameters(algorithmName, operation) {\n return getCrypto(true).getAlgorithmParameters(algorithmName, operation);\n}\nfunction createCMSECDSASignature(signatureBuffer) {\n if ((signatureBuffer.byteLength % 2) !== 0)\n return EMPTY_BUFFER;\n const length = signatureBuffer.byteLength / 2;\n const rBuffer = new ArrayBuffer(length);\n const rView = new Uint8Array(rBuffer);\n rView.set(new Uint8Array(signatureBuffer, 0, length));\n const rInteger = new asn1js.Integer({ valueHex: rBuffer });\n const sBuffer = new ArrayBuffer(length);\n const sView = new Uint8Array(sBuffer);\n sView.set(new Uint8Array(signatureBuffer, length, length));\n const sInteger = new asn1js.Integer({ valueHex: sBuffer });\n return (new asn1js.Sequence({\n value: [\n rInteger.convertToDER(),\n sInteger.convertToDER()\n ]\n })).toBER(false);\n}\nfunction createECDSASignatureFromCMS(cmsSignature, pointSize) {\n if (!(cmsSignature instanceof asn1js.Sequence\n && cmsSignature.valueBlock.value.length === 2\n && cmsSignature.valueBlock.value[0] instanceof asn1js.Integer\n && cmsSignature.valueBlock.value[1] instanceof asn1js.Integer))\n return EMPTY_BUFFER;\n const rValueView = cmsSignature.valueBlock.value[0].convertFromDER().valueBlock.valueHexView;\n const sValueView = cmsSignature.valueBlock.value[1].convertFromDER().valueBlock.valueHexView;\n const res = new Uint8Array(pointSize * 2);\n res.set(rValueView, pointSize - rValueView.byteLength);\n res.set(sValueView, (2 * pointSize) - sValueView.byteLength);\n return res.buffer;\n}\nfunction getAlgorithmByOID(oid, safety = false, target) {\n return getCrypto(true).getAlgorithmByOID(oid, safety, target);\n}\nfunction getHashAlgorithm(signatureAlgorithm) {\n return getCrypto(true).getHashAlgorithm(signatureAlgorithm);\n}\nasync function kdfWithCounter(hashFunction, zBuffer, Counter, SharedInfo, crypto) {\n switch (hashFunction.toUpperCase()) {\n case \"SHA-1\":\n case \"SHA-256\":\n case \"SHA-384\":\n case \"SHA-512\":\n break;\n default:\n throw new ArgumentError(`Unknown hash function: ${hashFunction}`);\n }\n ArgumentError.assert(zBuffer, \"zBuffer\", \"ArrayBuffer\");\n if (zBuffer.byteLength === 0)\n throw new ArgumentError(\"'zBuffer' has zero length, error\");\n ArgumentError.assert(SharedInfo, \"SharedInfo\", \"ArrayBuffer\");\n if (Counter > 255)\n throw new ArgumentError(\"Please set 'Counter' argument to value less or equal to 255\");\n const counterBuffer = new ArrayBuffer(4);\n const counterView = new Uint8Array(counterBuffer);\n counterView[0] = 0x00;\n counterView[1] = 0x00;\n counterView[2] = 0x00;\n counterView[3] = Counter;\n let combinedBuffer = EMPTY_BUFFER;\n combinedBuffer = pvutils.utilConcatBuf(combinedBuffer, zBuffer);\n combinedBuffer = pvutils.utilConcatBuf(combinedBuffer, counterBuffer);\n combinedBuffer = pvutils.utilConcatBuf(combinedBuffer, SharedInfo);\n const result = await crypto.digest({ name: hashFunction }, combinedBuffer);\n return {\n counter: Counter,\n result\n };\n}\nasync function kdf(hashFunction, Zbuffer, keydatalen, SharedInfo, crypto = getCrypto(true)) {\n let hashLength = 0;\n let maxCounter = 1;\n switch (hashFunction.toUpperCase()) {\n case \"SHA-1\":\n hashLength = 160;\n break;\n case \"SHA-256\":\n hashLength = 256;\n break;\n case \"SHA-384\":\n hashLength = 384;\n break;\n case \"SHA-512\":\n hashLength = 512;\n break;\n default:\n throw new ArgumentError(`Unknown hash function: ${hashFunction}`);\n }\n ArgumentError.assert(Zbuffer, \"Zbuffer\", \"ArrayBuffer\");\n if (Zbuffer.byteLength === 0)\n throw new ArgumentError(\"'Zbuffer' has zero length, error\");\n ArgumentError.assert(SharedInfo, \"SharedInfo\", \"ArrayBuffer\");\n const quotient = keydatalen / hashLength;\n if (Math.floor(quotient) > 0) {\n maxCounter = Math.floor(quotient);\n if ((quotient - maxCounter) > 0)\n maxCounter++;\n }\n const incomingResult = [];\n for (let i = 1; i <= maxCounter; i++)\n incomingResult.push(await kdfWithCounter(hashFunction, Zbuffer, i, SharedInfo, crypto));\n let combinedBuffer = EMPTY_BUFFER;\n let currentCounter = 1;\n let found = true;\n while (found) {\n found = false;\n for (const result of incomingResult) {\n if (result.counter === currentCounter) {\n combinedBuffer = pvutils.utilConcatBuf(combinedBuffer, result.result);\n found = true;\n break;\n }\n }\n currentCounter++;\n }\n keydatalen >>= 3;\n if (combinedBuffer.byteLength > keydatalen) {\n const newBuffer = new ArrayBuffer(keydatalen);\n const newView = new Uint8Array(newBuffer);\n const combinedView = new Uint8Array(combinedBuffer);\n for (let i = 0; i < keydatalen; i++)\n newView[i] = combinedView[i];\n return newBuffer;\n }\n return combinedBuffer;\n}\n\nconst VERSION$i = \"version\";\nconst LOG_ID = \"logID\";\nconst EXTENSIONS$6 = \"extensions\";\nconst TIMESTAMP = \"timestamp\";\nconst HASH_ALGORITHM$3 = \"hashAlgorithm\";\nconst SIGNATURE_ALGORITHM$8 = \"signatureAlgorithm\";\nconst SIGNATURE$7 = \"signature\";\nconst NONE = \"none\";\nconst MD5 = \"md5\";\nconst SHA1 = \"sha1\";\nconst SHA224 = \"sha224\";\nconst SHA256 = \"sha256\";\nconst SHA384 = \"sha384\";\nconst SHA512 = \"sha512\";\nconst ANONYMOUS = \"anonymous\";\nconst RSA = \"rsa\";\nconst DSA = \"dsa\";\nconst ECDSA = \"ecdsa\";\nclass SignedCertificateTimestamp extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$i, SignedCertificateTimestamp.defaultValues(VERSION$i));\n this.logID = pvutils.getParametersValue(parameters, LOG_ID, SignedCertificateTimestamp.defaultValues(LOG_ID));\n this.timestamp = pvutils.getParametersValue(parameters, TIMESTAMP, SignedCertificateTimestamp.defaultValues(TIMESTAMP));\n this.extensions = pvutils.getParametersValue(parameters, EXTENSIONS$6, SignedCertificateTimestamp.defaultValues(EXTENSIONS$6));\n this.hashAlgorithm = pvutils.getParametersValue(parameters, HASH_ALGORITHM$3, SignedCertificateTimestamp.defaultValues(HASH_ALGORITHM$3));\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$8, SignedCertificateTimestamp.defaultValues(SIGNATURE_ALGORITHM$8));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE$7, SignedCertificateTimestamp.defaultValues(SIGNATURE$7));\n if (\"stream\" in parameters && parameters.stream) {\n this.fromStream(parameters.stream);\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$i:\n return 0;\n case LOG_ID:\n case EXTENSIONS$6:\n return EMPTY_BUFFER;\n case TIMESTAMP:\n return new Date(0);\n case HASH_ALGORITHM$3:\n case SIGNATURE_ALGORITHM$8:\n return EMPTY_STRING;\n case SIGNATURE$7:\n return new asn1js.Any();\n default:\n return super.defaultValues(memberName);\n }\n }\n fromSchema(schema) {\n if ((schema instanceof asn1js.RawData) === false)\n throw new Error(\"Object's schema was not verified against input data for SignedCertificateTimestamp\");\n const seqStream = new bs.SeqStream({\n stream: new bs.ByteStream({\n buffer: schema.data\n })\n });\n this.fromStream(seqStream);\n }\n fromStream(stream) {\n const blockLength = stream.getUint16();\n this.version = (stream.getBlock(1))[0];\n if (this.version === 0) {\n this.logID = (new Uint8Array(stream.getBlock(32))).buffer.slice(0);\n this.timestamp = new Date(pvutils.utilFromBase(new Uint8Array(stream.getBlock(8)), 8));\n const extensionsLength = stream.getUint16();\n this.extensions = (new Uint8Array(stream.getBlock(extensionsLength))).buffer.slice(0);\n switch ((stream.getBlock(1))[0]) {\n case 0:\n this.hashAlgorithm = NONE;\n break;\n case 1:\n this.hashAlgorithm = MD5;\n break;\n case 2:\n this.hashAlgorithm = SHA1;\n break;\n case 3:\n this.hashAlgorithm = SHA224;\n break;\n case 4:\n this.hashAlgorithm = SHA256;\n break;\n case 5:\n this.hashAlgorithm = SHA384;\n break;\n case 6:\n this.hashAlgorithm = SHA512;\n break;\n default:\n throw new Error(\"Object's stream was not correct for SignedCertificateTimestamp\");\n }\n switch ((stream.getBlock(1))[0]) {\n case 0:\n this.signatureAlgorithm = ANONYMOUS;\n break;\n case 1:\n this.signatureAlgorithm = RSA;\n break;\n case 2:\n this.signatureAlgorithm = DSA;\n break;\n case 3:\n this.signatureAlgorithm = ECDSA;\n break;\n default:\n throw new Error(\"Object's stream was not correct for SignedCertificateTimestamp\");\n }\n const signatureLength = stream.getUint16();\n const signatureData = new Uint8Array(stream.getBlock(signatureLength)).buffer.slice(0);\n const asn1 = asn1js.fromBER(signatureData);\n AsnError.assert(asn1, \"SignedCertificateTimestamp\");\n this.signature = asn1.result;\n if (blockLength !== (47 + extensionsLength + signatureLength)) {\n throw new Error(\"Object's stream was not correct for SignedCertificateTimestamp\");\n }\n }\n }\n toSchema() {\n const stream = this.toStream();\n return new asn1js.RawData({ data: stream.stream.buffer });\n }\n toStream() {\n const stream = new bs.SeqStream();\n stream.appendUint16(47 + this.extensions.byteLength + this.signature.valueBeforeDecodeView.byteLength);\n stream.appendChar(this.version);\n stream.appendView(new Uint8Array(this.logID));\n const timeBuffer = new ArrayBuffer(8);\n const timeView = new Uint8Array(timeBuffer);\n const baseArray = pvutils.utilToBase(this.timestamp.valueOf(), 8);\n timeView.set(new Uint8Array(baseArray), 8 - baseArray.byteLength);\n stream.appendView(timeView);\n stream.appendUint16(this.extensions.byteLength);\n if (this.extensions.byteLength)\n stream.appendView(new Uint8Array(this.extensions));\n let _hashAlgorithm;\n switch (this.hashAlgorithm.toLowerCase()) {\n case NONE:\n _hashAlgorithm = 0;\n break;\n case MD5:\n _hashAlgorithm = 1;\n break;\n case SHA1:\n _hashAlgorithm = 2;\n break;\n case SHA224:\n _hashAlgorithm = 3;\n break;\n case SHA256:\n _hashAlgorithm = 4;\n break;\n case SHA384:\n _hashAlgorithm = 5;\n break;\n case SHA512:\n _hashAlgorithm = 6;\n break;\n default:\n throw new Error(`Incorrect data for hashAlgorithm: ${this.hashAlgorithm}`);\n }\n stream.appendChar(_hashAlgorithm);\n let _signatureAlgorithm;\n switch (this.signatureAlgorithm.toLowerCase()) {\n case ANONYMOUS:\n _signatureAlgorithm = 0;\n break;\n case RSA:\n _signatureAlgorithm = 1;\n break;\n case DSA:\n _signatureAlgorithm = 2;\n break;\n case ECDSA:\n _signatureAlgorithm = 3;\n break;\n default:\n throw new Error(`Incorrect data for signatureAlgorithm: ${this.signatureAlgorithm}`);\n }\n stream.appendChar(_signatureAlgorithm);\n const _signature = this.signature.toBER(false);\n stream.appendUint16(_signature.byteLength);\n stream.appendView(new Uint8Array(_signature));\n return stream;\n }\n toJSON() {\n return {\n version: this.version,\n logID: pvutils.bufferToHexCodes(this.logID),\n timestamp: this.timestamp,\n extensions: pvutils.bufferToHexCodes(this.extensions),\n hashAlgorithm: this.hashAlgorithm,\n signatureAlgorithm: this.signatureAlgorithm,\n signature: this.signature.toJSON()\n };\n }\n async verify(logs, data, dataType = 0, crypto = getCrypto(true)) {\n const logId = pvutils.toBase64(pvutils.arrayBufferToString(this.logID));\n let publicKeyBase64 = null;\n const stream = new bs.SeqStream();\n for (const log of logs) {\n if (log.log_id === logId) {\n publicKeyBase64 = log.key;\n break;\n }\n }\n if (!publicKeyBase64) {\n throw new Error(`Public key not found for CT with logId: ${logId}`);\n }\n const pki = pvutils.stringToArrayBuffer(pvutils.fromBase64(publicKeyBase64));\n const publicKeyInfo = PublicKeyInfo.fromBER(pki);\n stream.appendChar(0x00);\n stream.appendChar(0x00);\n const timeBuffer = new ArrayBuffer(8);\n const timeView = new Uint8Array(timeBuffer);\n const baseArray = pvutils.utilToBase(this.timestamp.valueOf(), 8);\n timeView.set(new Uint8Array(baseArray), 8 - baseArray.byteLength);\n stream.appendView(timeView);\n stream.appendUint16(dataType);\n if (dataType === 0)\n stream.appendUint24(data.byteLength);\n stream.appendView(new Uint8Array(data));\n stream.appendUint16(this.extensions.byteLength);\n if (this.extensions.byteLength !== 0)\n stream.appendView(new Uint8Array(this.extensions));\n return crypto.verifyWithPublicKey(stream.buffer.slice(0, stream.length), new asn1js.OctetString({ valueHex: this.signature.toBER(false) }), publicKeyInfo, { algorithmId: EMPTY_STRING }, \"SHA-256\");\n }\n}\nSignedCertificateTimestamp.CLASS_NAME = \"SignedCertificateTimestamp\";\nasync function verifySCTsForCertificate(certificate, issuerCertificate, logs, index = (-1), crypto = getCrypto(true)) {\n let parsedValue = null;\n const stream = new bs.SeqStream();\n if (certificate.extensions) {\n for (let i = certificate.extensions.length - 1; i >= 0; i--) {\n switch (certificate.extensions[i].extnID) {\n case id_SignedCertificateTimestampList:\n {\n parsedValue = certificate.extensions[i].parsedValue;\n if (!parsedValue || parsedValue.timestamps.length === 0)\n throw new Error(\"Nothing to verify in the certificate\");\n certificate.extensions.splice(i, 1);\n }\n break;\n }\n }\n }\n if (parsedValue === null)\n throw new Error(\"No SignedCertificateTimestampList extension in the specified certificate\");\n const tbs = certificate.encodeTBS().toBER();\n const issuerId = await crypto.digest({ name: \"SHA-256\" }, new Uint8Array(issuerCertificate.subjectPublicKeyInfo.toSchema().toBER(false)));\n stream.appendView(new Uint8Array(issuerId));\n stream.appendUint24(tbs.byteLength);\n stream.appendView(new Uint8Array(tbs));\n const preCert = stream.stream.slice(0, stream.length);\n if (index === (-1)) {\n const verifyArray = [];\n for (const timestamp of parsedValue.timestamps) {\n const verifyResult = await timestamp.verify(logs, preCert.buffer, 1, crypto);\n verifyArray.push(verifyResult);\n }\n return verifyArray;\n }\n if (index >= parsedValue.timestamps.length)\n index = (parsedValue.timestamps.length - 1);\n return [await parsedValue.timestamps[index].verify(logs, preCert.buffer, 1, crypto)];\n}\n\nconst TIMESTAMPS = \"timestamps\";\nclass SignedCertificateTimestampList extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.timestamps = pvutils.getParametersValue(parameters, TIMESTAMPS, SignedCertificateTimestampList.defaultValues(TIMESTAMPS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TIMESTAMPS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TIMESTAMPS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n var _a;\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n (_a = names.optional) !== null && _a !== void 0 ? _a : (names.optional = false);\n return (new asn1js.OctetString({\n name: (names.blockName || \"SignedCertificateTimestampList\"),\n optional: names.optional\n }));\n }\n fromSchema(schema) {\n if ((schema instanceof asn1js.OctetString) === false) {\n throw new Error(\"Object's schema was not verified against input data for SignedCertificateTimestampList\");\n }\n const seqStream = new bs.SeqStream({\n stream: new bs.ByteStream({\n buffer: schema.valueBlock.valueHex\n })\n });\n const dataLength = seqStream.getUint16();\n if (dataLength !== seqStream.length) {\n throw new Error(\"Object's schema was not verified against input data for SignedCertificateTimestampList\");\n }\n while (seqStream.length) {\n this.timestamps.push(new SignedCertificateTimestamp({ stream: seqStream }));\n }\n }\n toSchema() {\n const stream = new bs.SeqStream();\n let overallLength = 0;\n const timestampsData = [];\n for (const timestamp of this.timestamps) {\n const timestampStream = timestamp.toStream();\n timestampsData.push(timestampStream);\n overallLength += timestampStream.stream.buffer.byteLength;\n }\n stream.appendUint16(overallLength);\n for (const timestamp of timestampsData) {\n stream.appendView(timestamp.stream.view);\n }\n return new asn1js.OctetString({ valueHex: stream.stream.buffer.slice(0) });\n }\n toJSON() {\n return {\n timestamps: Array.from(this.timestamps, o => o.toJSON())\n };\n }\n}\nSignedCertificateTimestampList.CLASS_NAME = \"SignedCertificateTimestampList\";\n\nconst ATTRIBUTES$4 = \"attributes\";\nconst CLEAR_PROPS$11 = [\n ATTRIBUTES$4\n];\nclass SubjectDirectoryAttributes extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.attributes = pvutils.getParametersValue(parameters, ATTRIBUTES$4, SubjectDirectoryAttributes.defaultValues(ATTRIBUTES$4));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ATTRIBUTES$4:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.attributes || EMPTY_STRING),\n value: Attribute.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$11);\n const asn1 = asn1js.compareSchema(schema, schema, SubjectDirectoryAttributes.schema({\n names: {\n attributes: ATTRIBUTES$4\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.attributes = Array.from(asn1.result.attributes, element => new Attribute({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.attributes, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n attributes: Array.from(this.attributes, o => o.toJSON())\n };\n }\n}\nSubjectDirectoryAttributes.CLASS_NAME = \"SubjectDirectoryAttributes\";\n\nclass ExtensionValueFactory {\n static getItems() {\n if (!this.types) {\n this.types = {};\n ExtensionValueFactory.register(id_SubjectAltName, \"SubjectAltName\", AltName);\n ExtensionValueFactory.register(id_IssuerAltName, \"IssuerAltName\", AltName);\n ExtensionValueFactory.register(id_AuthorityKeyIdentifier, \"AuthorityKeyIdentifier\", AuthorityKeyIdentifier);\n ExtensionValueFactory.register(id_BasicConstraints, \"BasicConstraints\", BasicConstraints);\n ExtensionValueFactory.register(id_MicrosoftCaVersion, \"MicrosoftCaVersion\", CAVersion);\n ExtensionValueFactory.register(id_CertificatePolicies, \"CertificatePolicies\", CertificatePolicies);\n ExtensionValueFactory.register(id_MicrosoftAppPolicies, \"CertificatePoliciesMicrosoft\", CertificatePolicies);\n ExtensionValueFactory.register(id_MicrosoftCertTemplateV2, \"MicrosoftCertTemplateV2\", CertificateTemplate);\n ExtensionValueFactory.register(id_CRLDistributionPoints, \"CRLDistributionPoints\", CRLDistributionPoints);\n ExtensionValueFactory.register(id_FreshestCRL, \"FreshestCRL\", CRLDistributionPoints);\n ExtensionValueFactory.register(id_ExtKeyUsage, \"ExtKeyUsage\", ExtKeyUsage);\n ExtensionValueFactory.register(id_CertificateIssuer, \"CertificateIssuer\", GeneralNames);\n ExtensionValueFactory.register(id_AuthorityInfoAccess, \"AuthorityInfoAccess\", InfoAccess);\n ExtensionValueFactory.register(id_SubjectInfoAccess, \"SubjectInfoAccess\", InfoAccess);\n ExtensionValueFactory.register(id_IssuingDistributionPoint, \"IssuingDistributionPoint\", IssuingDistributionPoint);\n ExtensionValueFactory.register(id_NameConstraints, \"NameConstraints\", NameConstraints);\n ExtensionValueFactory.register(id_PolicyConstraints, \"PolicyConstraints\", PolicyConstraints);\n ExtensionValueFactory.register(id_PolicyMappings, \"PolicyMappings\", PolicyMappings);\n ExtensionValueFactory.register(id_PrivateKeyUsagePeriod, \"PrivateKeyUsagePeriod\", PrivateKeyUsagePeriod);\n ExtensionValueFactory.register(id_QCStatements, \"QCStatements\", QCStatements);\n ExtensionValueFactory.register(id_SignedCertificateTimestampList, \"SignedCertificateTimestampList\", SignedCertificateTimestampList);\n ExtensionValueFactory.register(id_SubjectDirectoryAttributes, \"SubjectDirectoryAttributes\", SubjectDirectoryAttributes);\n }\n return this.types;\n }\n static fromBER(id, raw) {\n const asn1 = asn1js.fromBER(raw);\n if (asn1.offset === -1) {\n return null;\n }\n const item = this.find(id);\n if (item) {\n try {\n return new item.type({ schema: asn1.result });\n }\n catch (ex) {\n const res = new item.type();\n res.parsingError = `Incorrectly formatted value of extension ${item.name} (${id})`;\n return res;\n }\n }\n return asn1.result;\n }\n static find(id) {\n const types = this.getItems();\n return types[id] || null;\n }\n static register(id, name, type) {\n this.getItems()[id] = { name, type };\n }\n}\n\nconst EXTN_ID = \"extnID\";\nconst CRITICAL = \"critical\";\nconst EXTN_VALUE = \"extnValue\";\nconst PARSED_VALUE$5 = \"parsedValue\";\nconst CLEAR_PROPS$10 = [\n EXTN_ID,\n CRITICAL,\n EXTN_VALUE\n];\nclass Extension extends PkiObject {\n get parsedValue() {\n if (this._parsedValue === undefined) {\n const parsedValue = ExtensionValueFactory.fromBER(this.extnID, this.extnValue.valueBlock.valueHexView);\n this._parsedValue = parsedValue;\n }\n return this._parsedValue || undefined;\n }\n set parsedValue(value) {\n this._parsedValue = value;\n }\n constructor(parameters = {}) {\n super();\n this.extnID = pvutils.getParametersValue(parameters, EXTN_ID, Extension.defaultValues(EXTN_ID));\n this.critical = pvutils.getParametersValue(parameters, CRITICAL, Extension.defaultValues(CRITICAL));\n if (EXTN_VALUE in parameters) {\n this.extnValue = new asn1js.OctetString({ valueHex: parameters.extnValue });\n }\n else {\n this.extnValue = Extension.defaultValues(EXTN_VALUE);\n }\n if (PARSED_VALUE$5 in parameters) {\n this.parsedValue = pvutils.getParametersValue(parameters, PARSED_VALUE$5, Extension.defaultValues(PARSED_VALUE$5));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case EXTN_ID:\n return EMPTY_STRING;\n case CRITICAL:\n return false;\n case EXTN_VALUE:\n return new asn1js.OctetString();\n case PARSED_VALUE$5:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.extnID || EMPTY_STRING) }),\n new asn1js.Boolean({\n name: (names.critical || EMPTY_STRING),\n optional: true\n }),\n new asn1js.OctetString({ name: (names.extnValue || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$10);\n const asn1 = asn1js.compareSchema(schema, schema, Extension.schema({\n names: {\n extnID: EXTN_ID,\n critical: CRITICAL,\n extnValue: EXTN_VALUE\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.extnID = asn1.result.extnID.valueBlock.toString();\n if (CRITICAL in asn1.result) {\n this.critical = asn1.result.critical.valueBlock.value;\n }\n this.extnValue = asn1.result.extnValue;\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.extnID }));\n if (this.critical !== Extension.defaultValues(CRITICAL)) {\n outputArray.push(new asn1js.Boolean({ value: this.critical }));\n }\n outputArray.push(this.extnValue);\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const object = {\n extnID: this.extnID,\n extnValue: this.extnValue.toJSON(),\n };\n if (this.critical !== Extension.defaultValues(CRITICAL)) {\n object.critical = this.critical;\n }\n if (this.parsedValue && this.parsedValue.toJSON) {\n object.parsedValue = this.parsedValue.toJSON();\n }\n return object;\n }\n}\nExtension.CLASS_NAME = \"Extension\";\n\nconst EXTENSIONS$5 = \"extensions\";\nconst CLEAR_PROPS$$ = [\n EXTENSIONS$5,\n];\nclass Extensions extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.extensions = pvutils.getParametersValue(parameters, EXTENSIONS$5, Extensions.defaultValues(EXTENSIONS$5));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case EXTENSIONS$5:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}, optional = false) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n optional,\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.extensions || EMPTY_STRING),\n value: Extension.schema(names.extension || {})\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$$);\n const asn1 = asn1js.compareSchema(schema, schema, Extensions.schema({\n names: {\n extensions: EXTENSIONS$5\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.extensions = Array.from(asn1.result.extensions, element => new Extension({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.extensions, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n extensions: this.extensions.map(o => o.toJSON())\n };\n }\n}\nExtensions.CLASS_NAME = \"Extensions\";\n\nconst ISSUER$5 = \"issuer\";\nconst SERIAL_NUMBER$6 = \"serialNumber\";\nconst ISSUER_UID = \"issuerUID\";\nconst CLEAR_PROPS$_ = [\n ISSUER$5,\n SERIAL_NUMBER$6,\n ISSUER_UID,\n];\nclass IssuerSerial extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.issuer = pvutils.getParametersValue(parameters, ISSUER$5, IssuerSerial.defaultValues(ISSUER$5));\n this.serialNumber = pvutils.getParametersValue(parameters, SERIAL_NUMBER$6, IssuerSerial.defaultValues(SERIAL_NUMBER$6));\n if (ISSUER_UID in parameters) {\n this.issuerUID = pvutils.getParametersValue(parameters, ISSUER_UID, IssuerSerial.defaultValues(ISSUER_UID));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ISSUER$5:\n return new GeneralNames();\n case SERIAL_NUMBER$6:\n return new asn1js.Integer();\n case ISSUER_UID:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n GeneralNames.schema(names.issuer || {}),\n new asn1js.Integer({ name: (names.serialNumber || EMPTY_STRING) }),\n new asn1js.BitString({\n optional: true,\n name: (names.issuerUID || EMPTY_STRING)\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$_);\n const asn1 = asn1js.compareSchema(schema, schema, IssuerSerial.schema({\n names: {\n issuer: {\n names: {\n blockName: ISSUER$5\n }\n },\n serialNumber: SERIAL_NUMBER$6,\n issuerUID: ISSUER_UID\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.issuer = new GeneralNames({ schema: asn1.result.issuer });\n this.serialNumber = asn1.result.serialNumber;\n if (ISSUER_UID in asn1.result)\n this.issuerUID = asn1.result.issuerUID;\n }\n toSchema() {\n const result = new asn1js.Sequence({\n value: [\n this.issuer.toSchema(),\n this.serialNumber\n ]\n });\n if (this.issuerUID) {\n result.valueBlock.value.push(this.issuerUID);\n }\n return result;\n }\n toJSON() {\n const result = {\n issuer: this.issuer.toJSON(),\n serialNumber: this.serialNumber.toJSON()\n };\n if (this.issuerUID) {\n result.issuerUID = this.issuerUID.toJSON();\n }\n return result;\n }\n}\nIssuerSerial.CLASS_NAME = \"IssuerSerial\";\n\nconst VERSION$h = \"version\";\nconst BASE_CERTIFICATE_ID$2 = \"baseCertificateID\";\nconst SUBJECT_NAME = \"subjectName\";\nconst ISSUER$4 = \"issuer\";\nconst SIGNATURE$6 = \"signature\";\nconst SERIAL_NUMBER$5 = \"serialNumber\";\nconst ATTR_CERT_VALIDITY_PERIOD$1 = \"attrCertValidityPeriod\";\nconst ATTRIBUTES$3 = \"attributes\";\nconst ISSUER_UNIQUE_ID$2 = \"issuerUniqueID\";\nconst EXTENSIONS$4 = \"extensions\";\nconst CLEAR_PROPS$Z = [\n VERSION$h,\n BASE_CERTIFICATE_ID$2,\n SUBJECT_NAME,\n ISSUER$4,\n SIGNATURE$6,\n SERIAL_NUMBER$5,\n ATTR_CERT_VALIDITY_PERIOD$1,\n ATTRIBUTES$3,\n ISSUER_UNIQUE_ID$2,\n EXTENSIONS$4,\n];\nclass AttributeCertificateInfoV1 extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$h, AttributeCertificateInfoV1.defaultValues(VERSION$h));\n if (BASE_CERTIFICATE_ID$2 in parameters) {\n this.baseCertificateID = pvutils.getParametersValue(parameters, BASE_CERTIFICATE_ID$2, AttributeCertificateInfoV1.defaultValues(BASE_CERTIFICATE_ID$2));\n }\n if (SUBJECT_NAME in parameters) {\n this.subjectName = pvutils.getParametersValue(parameters, SUBJECT_NAME, AttributeCertificateInfoV1.defaultValues(SUBJECT_NAME));\n }\n this.issuer = pvutils.getParametersValue(parameters, ISSUER$4, AttributeCertificateInfoV1.defaultValues(ISSUER$4));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE$6, AttributeCertificateInfoV1.defaultValues(SIGNATURE$6));\n this.serialNumber = pvutils.getParametersValue(parameters, SERIAL_NUMBER$5, AttributeCertificateInfoV1.defaultValues(SERIAL_NUMBER$5));\n this.attrCertValidityPeriod = pvutils.getParametersValue(parameters, ATTR_CERT_VALIDITY_PERIOD$1, AttributeCertificateInfoV1.defaultValues(ATTR_CERT_VALIDITY_PERIOD$1));\n this.attributes = pvutils.getParametersValue(parameters, ATTRIBUTES$3, AttributeCertificateInfoV1.defaultValues(ATTRIBUTES$3));\n if (ISSUER_UNIQUE_ID$2 in parameters)\n this.issuerUniqueID = pvutils.getParametersValue(parameters, ISSUER_UNIQUE_ID$2, AttributeCertificateInfoV1.defaultValues(ISSUER_UNIQUE_ID$2));\n if (EXTENSIONS$4 in parameters) {\n this.extensions = pvutils.getParametersValue(parameters, EXTENSIONS$4, AttributeCertificateInfoV1.defaultValues(EXTENSIONS$4));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$h:\n return 0;\n case BASE_CERTIFICATE_ID$2:\n return new IssuerSerial();\n case SUBJECT_NAME:\n return new GeneralNames();\n case ISSUER$4:\n return new GeneralNames();\n case SIGNATURE$6:\n return new AlgorithmIdentifier();\n case SERIAL_NUMBER$5:\n return new asn1js.Integer();\n case ATTR_CERT_VALIDITY_PERIOD$1:\n return new AttCertValidityPeriod();\n case ATTRIBUTES$3:\n return [];\n case ISSUER_UNIQUE_ID$2:\n return new asn1js.BitString();\n case EXTENSIONS$4:\n return new Extensions();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n new asn1js.Choice({\n value: [\n new asn1js.Constructed({\n name: (names.baseCertificateID || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: IssuerSerial.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n name: (names.subjectName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: GeneralNames.schema().valueBlock.value\n }),\n ]\n }),\n GeneralNames.schema({\n names: {\n blockName: (names.issuer || EMPTY_STRING)\n }\n }),\n AlgorithmIdentifier.schema(names.signature || {}),\n new asn1js.Integer({ name: (names.serialNumber || EMPTY_STRING) }),\n AttCertValidityPeriod.schema(names.attrCertValidityPeriod || {}),\n new asn1js.Sequence({\n name: (names.attributes || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n value: Attribute.schema()\n })\n ]\n }),\n new asn1js.BitString({\n optional: true,\n name: (names.issuerUniqueID || EMPTY_STRING)\n }),\n Extensions.schema(names.extensions || {}, true)\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$Z);\n const asn1 = asn1js.compareSchema(schema, schema, AttributeCertificateInfoV1.schema({\n names: {\n version: VERSION$h,\n baseCertificateID: BASE_CERTIFICATE_ID$2,\n subjectName: SUBJECT_NAME,\n issuer: ISSUER$4,\n signature: {\n names: {\n blockName: SIGNATURE$6\n }\n },\n serialNumber: SERIAL_NUMBER$5,\n attrCertValidityPeriod: {\n names: {\n blockName: ATTR_CERT_VALIDITY_PERIOD$1\n }\n },\n attributes: ATTRIBUTES$3,\n issuerUniqueID: ISSUER_UNIQUE_ID$2,\n extensions: {\n names: {\n blockName: EXTENSIONS$4\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n if (BASE_CERTIFICATE_ID$2 in asn1.result) {\n this.baseCertificateID = new IssuerSerial({\n schema: new asn1js.Sequence({\n value: asn1.result.baseCertificateID.valueBlock.value\n })\n });\n }\n if (SUBJECT_NAME in asn1.result) {\n this.subjectName = new GeneralNames({\n schema: new asn1js.Sequence({\n value: asn1.result.subjectName.valueBlock.value\n })\n });\n }\n this.issuer = asn1.result.issuer;\n this.signature = new AlgorithmIdentifier({ schema: asn1.result.signature });\n this.serialNumber = asn1.result.serialNumber;\n this.attrCertValidityPeriod = new AttCertValidityPeriod({ schema: asn1.result.attrCertValidityPeriod });\n this.attributes = Array.from(asn1.result.attributes.valueBlock.value, element => new Attribute({ schema: element }));\n if (ISSUER_UNIQUE_ID$2 in asn1.result) {\n this.issuerUniqueID = asn1.result.issuerUniqueID;\n }\n if (EXTENSIONS$4 in asn1.result) {\n this.extensions = new Extensions({ schema: asn1.result.extensions });\n }\n }\n toSchema() {\n const result = new asn1js.Sequence({\n value: [new asn1js.Integer({ value: this.version })]\n });\n if (this.baseCertificateID) {\n result.valueBlock.value.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.baseCertificateID.toSchema().valueBlock.value\n }));\n }\n if (this.subjectName) {\n result.valueBlock.value.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: this.subjectName.toSchema().valueBlock.value\n }));\n }\n result.valueBlock.value.push(this.issuer.toSchema());\n result.valueBlock.value.push(this.signature.toSchema());\n result.valueBlock.value.push(this.serialNumber);\n result.valueBlock.value.push(this.attrCertValidityPeriod.toSchema());\n result.valueBlock.value.push(new asn1js.Sequence({\n value: Array.from(this.attributes, o => o.toSchema())\n }));\n if (this.issuerUniqueID) {\n result.valueBlock.value.push(this.issuerUniqueID);\n }\n if (this.extensions) {\n result.valueBlock.value.push(this.extensions.toSchema());\n }\n return result;\n }\n toJSON() {\n const result = {\n version: this.version\n };\n if (this.baseCertificateID) {\n result.baseCertificateID = this.baseCertificateID.toJSON();\n }\n if (this.subjectName) {\n result.subjectName = this.subjectName.toJSON();\n }\n result.issuer = this.issuer.toJSON();\n result.signature = this.signature.toJSON();\n result.serialNumber = this.serialNumber.toJSON();\n result.attrCertValidityPeriod = this.attrCertValidityPeriod.toJSON();\n result.attributes = Array.from(this.attributes, o => o.toJSON());\n if (this.issuerUniqueID) {\n result.issuerUniqueID = this.issuerUniqueID.toJSON();\n }\n if (this.extensions) {\n result.extensions = this.extensions.toJSON();\n }\n return result;\n }\n}\nAttributeCertificateInfoV1.CLASS_NAME = \"AttributeCertificateInfoV1\";\n\nconst ACINFO$1 = \"acinfo\";\nconst SIGNATURE_ALGORITHM$7 = \"signatureAlgorithm\";\nconst SIGNATURE_VALUE$4 = \"signatureValue\";\nconst CLEAR_PROPS$Y = [\n ACINFO$1,\n SIGNATURE_VALUE$4,\n SIGNATURE_ALGORITHM$7\n];\nclass AttributeCertificateV1 extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.acinfo = pvutils.getParametersValue(parameters, ACINFO$1, AttributeCertificateV1.defaultValues(ACINFO$1));\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$7, AttributeCertificateV1.defaultValues(SIGNATURE_ALGORITHM$7));\n this.signatureValue = pvutils.getParametersValue(parameters, SIGNATURE_VALUE$4, AttributeCertificateV1.defaultValues(SIGNATURE_VALUE$4));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ACINFO$1:\n return new AttributeCertificateInfoV1();\n case SIGNATURE_ALGORITHM$7:\n return new AlgorithmIdentifier();\n case SIGNATURE_VALUE$4:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AttributeCertificateInfoV1.schema(names.acinfo || {}),\n AlgorithmIdentifier.schema(names.signatureAlgorithm || {}),\n new asn1js.BitString({ name: (names.signatureValue || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$Y);\n const asn1 = asn1js.compareSchema(schema, schema, AttributeCertificateV1.schema({\n names: {\n acinfo: {\n names: {\n blockName: ACINFO$1\n }\n },\n signatureAlgorithm: {\n names: {\n blockName: SIGNATURE_ALGORITHM$7\n }\n },\n signatureValue: SIGNATURE_VALUE$4\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.acinfo = new AttributeCertificateInfoV1({ schema: asn1.result.acinfo });\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.signatureAlgorithm });\n this.signatureValue = asn1.result.signatureValue;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.acinfo.toSchema(),\n this.signatureAlgorithm.toSchema(),\n this.signatureValue\n ]\n }));\n }\n toJSON() {\n return {\n acinfo: this.acinfo.toJSON(),\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signatureValue: this.signatureValue.toJSON(),\n };\n }\n}\nAttributeCertificateV1.CLASS_NAME = \"AttributeCertificateV1\";\n\nconst DIGESTED_OBJECT_TYPE = \"digestedObjectType\";\nconst OTHER_OBJECT_TYPE_ID = \"otherObjectTypeID\";\nconst DIGEST_ALGORITHM$2 = \"digestAlgorithm\";\nconst OBJECT_DIGEST = \"objectDigest\";\nconst CLEAR_PROPS$X = [\n DIGESTED_OBJECT_TYPE,\n OTHER_OBJECT_TYPE_ID,\n DIGEST_ALGORITHM$2,\n OBJECT_DIGEST,\n];\nclass ObjectDigestInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.digestedObjectType = pvutils.getParametersValue(parameters, DIGESTED_OBJECT_TYPE, ObjectDigestInfo.defaultValues(DIGESTED_OBJECT_TYPE));\n if (OTHER_OBJECT_TYPE_ID in parameters) {\n this.otherObjectTypeID = pvutils.getParametersValue(parameters, OTHER_OBJECT_TYPE_ID, ObjectDigestInfo.defaultValues(OTHER_OBJECT_TYPE_ID));\n }\n this.digestAlgorithm = pvutils.getParametersValue(parameters, DIGEST_ALGORITHM$2, ObjectDigestInfo.defaultValues(DIGEST_ALGORITHM$2));\n this.objectDigest = pvutils.getParametersValue(parameters, OBJECT_DIGEST, ObjectDigestInfo.defaultValues(OBJECT_DIGEST));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case DIGESTED_OBJECT_TYPE:\n return new asn1js.Enumerated();\n case OTHER_OBJECT_TYPE_ID:\n return new asn1js.ObjectIdentifier();\n case DIGEST_ALGORITHM$2:\n return new AlgorithmIdentifier();\n case OBJECT_DIGEST:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Enumerated({ name: (names.digestedObjectType || EMPTY_STRING) }),\n new asn1js.ObjectIdentifier({\n optional: true,\n name: (names.otherObjectTypeID || EMPTY_STRING)\n }),\n AlgorithmIdentifier.schema(names.digestAlgorithm || {}),\n new asn1js.BitString({ name: (names.objectDigest || EMPTY_STRING) }),\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$X);\n const asn1 = asn1js.compareSchema(schema, schema, ObjectDigestInfo.schema({\n names: {\n digestedObjectType: DIGESTED_OBJECT_TYPE,\n otherObjectTypeID: OTHER_OBJECT_TYPE_ID,\n digestAlgorithm: {\n names: {\n blockName: DIGEST_ALGORITHM$2\n }\n },\n objectDigest: OBJECT_DIGEST\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.digestedObjectType = asn1.result.digestedObjectType;\n if (OTHER_OBJECT_TYPE_ID in asn1.result) {\n this.otherObjectTypeID = asn1.result.otherObjectTypeID;\n }\n this.digestAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.digestAlgorithm });\n this.objectDigest = asn1.result.objectDigest;\n }\n toSchema() {\n const result = new asn1js.Sequence({\n value: [this.digestedObjectType]\n });\n if (this.otherObjectTypeID) {\n result.valueBlock.value.push(this.otherObjectTypeID);\n }\n result.valueBlock.value.push(this.digestAlgorithm.toSchema());\n result.valueBlock.value.push(this.objectDigest);\n return result;\n }\n toJSON() {\n const result = {\n digestedObjectType: this.digestedObjectType.toJSON(),\n digestAlgorithm: this.digestAlgorithm.toJSON(),\n objectDigest: this.objectDigest.toJSON(),\n };\n if (this.otherObjectTypeID) {\n result.otherObjectTypeID = this.otherObjectTypeID.toJSON();\n }\n return result;\n }\n}\nObjectDigestInfo.CLASS_NAME = \"ObjectDigestInfo\";\n\nconst ISSUER_NAME = \"issuerName\";\nconst BASE_CERTIFICATE_ID$1 = \"baseCertificateID\";\nconst OBJECT_DIGEST_INFO$1 = \"objectDigestInfo\";\nconst CLEAR_PROPS$W = [\n ISSUER_NAME,\n BASE_CERTIFICATE_ID$1,\n OBJECT_DIGEST_INFO$1\n];\nclass V2Form extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (ISSUER_NAME in parameters) {\n this.issuerName = pvutils.getParametersValue(parameters, ISSUER_NAME, V2Form.defaultValues(ISSUER_NAME));\n }\n if (BASE_CERTIFICATE_ID$1 in parameters) {\n this.baseCertificateID = pvutils.getParametersValue(parameters, BASE_CERTIFICATE_ID$1, V2Form.defaultValues(BASE_CERTIFICATE_ID$1));\n }\n if (OBJECT_DIGEST_INFO$1 in parameters) {\n this.objectDigestInfo = pvutils.getParametersValue(parameters, OBJECT_DIGEST_INFO$1, V2Form.defaultValues(OBJECT_DIGEST_INFO$1));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ISSUER_NAME:\n return new GeneralNames();\n case BASE_CERTIFICATE_ID$1:\n return new IssuerSerial();\n case OBJECT_DIGEST_INFO$1:\n return new ObjectDigestInfo();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n GeneralNames.schema({\n names: {\n blockName: names.issuerName\n }\n }, true),\n new asn1js.Constructed({\n optional: true,\n name: (names.baseCertificateID || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: IssuerSerial.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n optional: true,\n name: (names.objectDigestInfo || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: ObjectDigestInfo.schema().valueBlock.value\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$W);\n const asn1 = asn1js.compareSchema(schema, schema, V2Form.schema({\n names: {\n issuerName: ISSUER_NAME,\n baseCertificateID: BASE_CERTIFICATE_ID$1,\n objectDigestInfo: OBJECT_DIGEST_INFO$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (ISSUER_NAME in asn1.result)\n this.issuerName = new GeneralNames({ schema: asn1.result.issuerName });\n if (BASE_CERTIFICATE_ID$1 in asn1.result) {\n this.baseCertificateID = new IssuerSerial({\n schema: new asn1js.Sequence({\n value: asn1.result.baseCertificateID.valueBlock.value\n })\n });\n }\n if (OBJECT_DIGEST_INFO$1 in asn1.result) {\n this.objectDigestInfo = new ObjectDigestInfo({\n schema: new asn1js.Sequence({\n value: asn1.result.objectDigestInfo.valueBlock.value\n })\n });\n }\n }\n toSchema() {\n const result = new asn1js.Sequence();\n if (this.issuerName)\n result.valueBlock.value.push(this.issuerName.toSchema());\n if (this.baseCertificateID) {\n result.valueBlock.value.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.baseCertificateID.toSchema().valueBlock.value\n }));\n }\n if (this.objectDigestInfo) {\n result.valueBlock.value.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: this.objectDigestInfo.toSchema().valueBlock.value\n }));\n }\n return result;\n }\n toJSON() {\n const result = {};\n if (this.issuerName) {\n result.issuerName = this.issuerName.toJSON();\n }\n if (this.baseCertificateID) {\n result.baseCertificateID = this.baseCertificateID.toJSON();\n }\n if (this.objectDigestInfo) {\n result.objectDigestInfo = this.objectDigestInfo.toJSON();\n }\n return result;\n }\n}\nV2Form.CLASS_NAME = \"V2Form\";\n\nconst BASE_CERTIFICATE_ID = \"baseCertificateID\";\nconst ENTITY_NAME = \"entityName\";\nconst OBJECT_DIGEST_INFO = \"objectDigestInfo\";\nconst CLEAR_PROPS$V = [\n BASE_CERTIFICATE_ID,\n ENTITY_NAME,\n OBJECT_DIGEST_INFO\n];\nclass Holder extends PkiObject {\n constructor(parameters = {}) {\n super();\n if (BASE_CERTIFICATE_ID in parameters) {\n this.baseCertificateID = pvutils.getParametersValue(parameters, BASE_CERTIFICATE_ID, Holder.defaultValues(BASE_CERTIFICATE_ID));\n }\n if (ENTITY_NAME in parameters) {\n this.entityName = pvutils.getParametersValue(parameters, ENTITY_NAME, Holder.defaultValues(ENTITY_NAME));\n }\n if (OBJECT_DIGEST_INFO in parameters) {\n this.objectDigestInfo = pvutils.getParametersValue(parameters, OBJECT_DIGEST_INFO, Holder.defaultValues(OBJECT_DIGEST_INFO));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case BASE_CERTIFICATE_ID:\n return new IssuerSerial();\n case ENTITY_NAME:\n return new GeneralNames();\n case OBJECT_DIGEST_INFO:\n return new ObjectDigestInfo();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n optional: true,\n name: (names.baseCertificateID || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: IssuerSerial.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n optional: true,\n name: (names.entityName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: GeneralNames.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n optional: true,\n name: (names.objectDigestInfo || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: ObjectDigestInfo.schema().valueBlock.value\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$V);\n const asn1 = asn1js.compareSchema(schema, schema, Holder.schema({\n names: {\n baseCertificateID: BASE_CERTIFICATE_ID,\n entityName: ENTITY_NAME,\n objectDigestInfo: OBJECT_DIGEST_INFO\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (BASE_CERTIFICATE_ID in asn1.result) {\n this.baseCertificateID = new IssuerSerial({\n schema: new asn1js.Sequence({\n value: asn1.result.baseCertificateID.valueBlock.value\n })\n });\n }\n if (ENTITY_NAME in asn1.result) {\n this.entityName = new GeneralNames({\n schema: new asn1js.Sequence({\n value: asn1.result.entityName.valueBlock.value\n })\n });\n }\n if (OBJECT_DIGEST_INFO in asn1.result) {\n this.objectDigestInfo = new ObjectDigestInfo({\n schema: new asn1js.Sequence({\n value: asn1.result.objectDigestInfo.valueBlock.value\n })\n });\n }\n }\n toSchema() {\n const result = new asn1js.Sequence();\n if (this.baseCertificateID) {\n result.valueBlock.value.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.baseCertificateID.toSchema().valueBlock.value\n }));\n }\n if (this.entityName) {\n result.valueBlock.value.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: this.entityName.toSchema().valueBlock.value\n }));\n }\n if (this.objectDigestInfo) {\n result.valueBlock.value.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: this.objectDigestInfo.toSchema().valueBlock.value\n }));\n }\n return result;\n }\n toJSON() {\n const result = {};\n if (this.baseCertificateID) {\n result.baseCertificateID = this.baseCertificateID.toJSON();\n }\n if (this.entityName) {\n result.entityName = this.entityName.toJSON();\n }\n if (this.objectDigestInfo) {\n result.objectDigestInfo = this.objectDigestInfo.toJSON();\n }\n return result;\n }\n}\nHolder.CLASS_NAME = \"Holder\";\n\nconst VERSION$g = \"version\";\nconst HOLDER = \"holder\";\nconst ISSUER$3 = \"issuer\";\nconst SIGNATURE$5 = \"signature\";\nconst SERIAL_NUMBER$4 = \"serialNumber\";\nconst ATTR_CERT_VALIDITY_PERIOD = \"attrCertValidityPeriod\";\nconst ATTRIBUTES$2 = \"attributes\";\nconst ISSUER_UNIQUE_ID$1 = \"issuerUniqueID\";\nconst EXTENSIONS$3 = \"extensions\";\nconst CLEAR_PROPS$U = [\n VERSION$g,\n HOLDER,\n ISSUER$3,\n SIGNATURE$5,\n SERIAL_NUMBER$4,\n ATTR_CERT_VALIDITY_PERIOD,\n ATTRIBUTES$2,\n ISSUER_UNIQUE_ID$1,\n EXTENSIONS$3\n];\nclass AttributeCertificateInfoV2 extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$g, AttributeCertificateInfoV2.defaultValues(VERSION$g));\n this.holder = pvutils.getParametersValue(parameters, HOLDER, AttributeCertificateInfoV2.defaultValues(HOLDER));\n this.issuer = pvutils.getParametersValue(parameters, ISSUER$3, AttributeCertificateInfoV2.defaultValues(ISSUER$3));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE$5, AttributeCertificateInfoV2.defaultValues(SIGNATURE$5));\n this.serialNumber = pvutils.getParametersValue(parameters, SERIAL_NUMBER$4, AttributeCertificateInfoV2.defaultValues(SERIAL_NUMBER$4));\n this.attrCertValidityPeriod = pvutils.getParametersValue(parameters, ATTR_CERT_VALIDITY_PERIOD, AttributeCertificateInfoV2.defaultValues(ATTR_CERT_VALIDITY_PERIOD));\n this.attributes = pvutils.getParametersValue(parameters, ATTRIBUTES$2, AttributeCertificateInfoV2.defaultValues(ATTRIBUTES$2));\n if (ISSUER_UNIQUE_ID$1 in parameters) {\n this.issuerUniqueID = pvutils.getParametersValue(parameters, ISSUER_UNIQUE_ID$1, AttributeCertificateInfoV2.defaultValues(ISSUER_UNIQUE_ID$1));\n }\n if (EXTENSIONS$3 in parameters) {\n this.extensions = pvutils.getParametersValue(parameters, EXTENSIONS$3, AttributeCertificateInfoV2.defaultValues(EXTENSIONS$3));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$g:\n return 1;\n case HOLDER:\n return new Holder();\n case ISSUER$3:\n return {};\n case SIGNATURE$5:\n return new AlgorithmIdentifier();\n case SERIAL_NUMBER$4:\n return new asn1js.Integer();\n case ATTR_CERT_VALIDITY_PERIOD:\n return new AttCertValidityPeriod();\n case ATTRIBUTES$2:\n return [];\n case ISSUER_UNIQUE_ID$1:\n return new asn1js.BitString();\n case EXTENSIONS$3:\n return new Extensions();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n Holder.schema(names.holder || {}),\n new asn1js.Choice({\n value: [\n GeneralNames.schema({\n names: {\n blockName: (names.issuer || EMPTY_STRING)\n }\n }),\n new asn1js.Constructed({\n name: (names.issuer || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: V2Form.schema().valueBlock.value\n })\n ]\n }),\n AlgorithmIdentifier.schema(names.signature || {}),\n new asn1js.Integer({ name: (names.serialNumber || EMPTY_STRING) }),\n AttCertValidityPeriod.schema(names.attrCertValidityPeriod || {}),\n new asn1js.Sequence({\n name: (names.attributes || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n value: Attribute.schema()\n })\n ]\n }),\n new asn1js.BitString({\n optional: true,\n name: (names.issuerUniqueID || EMPTY_STRING)\n }),\n Extensions.schema(names.extensions || {}, true)\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$U);\n const asn1 = asn1js.compareSchema(schema, schema, AttributeCertificateInfoV2.schema({\n names: {\n version: VERSION$g,\n holder: {\n names: {\n blockName: HOLDER\n }\n },\n issuer: ISSUER$3,\n signature: {\n names: {\n blockName: SIGNATURE$5\n }\n },\n serialNumber: SERIAL_NUMBER$4,\n attrCertValidityPeriod: {\n names: {\n blockName: ATTR_CERT_VALIDITY_PERIOD\n }\n },\n attributes: ATTRIBUTES$2,\n issuerUniqueID: ISSUER_UNIQUE_ID$1,\n extensions: {\n names: {\n blockName: EXTENSIONS$3\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.holder = new Holder({ schema: asn1.result.holder });\n switch (asn1.result.issuer.idBlock.tagClass) {\n case 3:\n this.issuer = new V2Form({\n schema: new asn1js.Sequence({\n value: asn1.result.issuer.valueBlock.value\n })\n });\n break;\n case 1:\n default:\n throw new Error(\"Incorrect value for 'issuer' in AttributeCertificateInfoV2\");\n }\n this.signature = new AlgorithmIdentifier({ schema: asn1.result.signature });\n this.serialNumber = asn1.result.serialNumber;\n this.attrCertValidityPeriod = new AttCertValidityPeriod({ schema: asn1.result.attrCertValidityPeriod });\n this.attributes = Array.from(asn1.result.attributes.valueBlock.value, element => new Attribute({ schema: element }));\n if (ISSUER_UNIQUE_ID$1 in asn1.result) {\n this.issuerUniqueID = asn1.result.issuerUniqueID;\n }\n if (EXTENSIONS$3 in asn1.result) {\n this.extensions = new Extensions({ schema: asn1.result.extensions });\n }\n }\n toSchema() {\n const result = new asn1js.Sequence({\n value: [\n new asn1js.Integer({ value: this.version }),\n this.holder.toSchema(),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.issuer.toSchema().valueBlock.value\n }),\n this.signature.toSchema(),\n this.serialNumber,\n this.attrCertValidityPeriod.toSchema(),\n new asn1js.Sequence({\n value: Array.from(this.attributes, o => o.toSchema())\n })\n ]\n });\n if (this.issuerUniqueID) {\n result.valueBlock.value.push(this.issuerUniqueID);\n }\n if (this.extensions) {\n result.valueBlock.value.push(this.extensions.toSchema());\n }\n return result;\n }\n toJSON() {\n const result = {\n version: this.version,\n holder: this.holder.toJSON(),\n issuer: this.issuer.toJSON(),\n signature: this.signature.toJSON(),\n serialNumber: this.serialNumber.toJSON(),\n attrCertValidityPeriod: this.attrCertValidityPeriod.toJSON(),\n attributes: Array.from(this.attributes, o => o.toJSON())\n };\n if (this.issuerUniqueID) {\n result.issuerUniqueID = this.issuerUniqueID.toJSON();\n }\n if (this.extensions) {\n result.extensions = this.extensions.toJSON();\n }\n return result;\n }\n}\nAttributeCertificateInfoV2.CLASS_NAME = \"AttributeCertificateInfoV2\";\n\nconst ACINFO = \"acinfo\";\nconst SIGNATURE_ALGORITHM$6 = \"signatureAlgorithm\";\nconst SIGNATURE_VALUE$3 = \"signatureValue\";\nconst CLEAR_PROPS$T = [\n ACINFO,\n SIGNATURE_ALGORITHM$6,\n SIGNATURE_VALUE$3,\n];\nclass AttributeCertificateV2 extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.acinfo = pvutils.getParametersValue(parameters, ACINFO, AttributeCertificateV2.defaultValues(ACINFO));\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$6, AttributeCertificateV2.defaultValues(SIGNATURE_ALGORITHM$6));\n this.signatureValue = pvutils.getParametersValue(parameters, SIGNATURE_VALUE$3, AttributeCertificateV2.defaultValues(SIGNATURE_VALUE$3));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ACINFO:\n return new AttributeCertificateInfoV2();\n case SIGNATURE_ALGORITHM$6:\n return new AlgorithmIdentifier();\n case SIGNATURE_VALUE$3:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AttributeCertificateInfoV2.schema(names.acinfo || {}),\n AlgorithmIdentifier.schema(names.signatureAlgorithm || {}),\n new asn1js.BitString({ name: (names.signatureValue || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$T);\n const asn1 = asn1js.compareSchema(schema, schema, AttributeCertificateV2.schema({\n names: {\n acinfo: {\n names: {\n blockName: ACINFO\n }\n },\n signatureAlgorithm: {\n names: {\n blockName: SIGNATURE_ALGORITHM$6\n }\n },\n signatureValue: SIGNATURE_VALUE$3\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.acinfo = new AttributeCertificateInfoV2({ schema: asn1.result.acinfo });\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.signatureAlgorithm });\n this.signatureValue = asn1.result.signatureValue;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.acinfo.toSchema(),\n this.signatureAlgorithm.toSchema(),\n this.signatureValue\n ]\n }));\n }\n toJSON() {\n return {\n acinfo: this.acinfo.toJSON(),\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signatureValue: this.signatureValue.toJSON(),\n };\n }\n}\nAttributeCertificateV2.CLASS_NAME = \"AttributeCertificateV2\";\n\nconst CONTENT_TYPE = \"contentType\";\nconst CONTENT = \"content\";\nconst CLEAR_PROPS$S = [CONTENT_TYPE, CONTENT];\nclass ContentInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.contentType = pvutils.getParametersValue(parameters, CONTENT_TYPE, ContentInfo.defaultValues(CONTENT_TYPE));\n this.content = pvutils.getParametersValue(parameters, CONTENT, ContentInfo.defaultValues(CONTENT));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CONTENT_TYPE:\n return EMPTY_STRING;\n case CONTENT:\n return new asn1js.Any();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case CONTENT_TYPE:\n return (typeof memberValue === \"string\" &&\n memberValue === this.defaultValues(CONTENT_TYPE));\n case CONTENT:\n return (memberValue instanceof asn1js.Any);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n if ((\"optional\" in names) === false) {\n names.optional = false;\n }\n return (new asn1js.Sequence({\n name: (names.blockName || \"ContentInfo\"),\n optional: names.optional,\n value: [\n new asn1js.ObjectIdentifier({ name: (names.contentType || CONTENT_TYPE) }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Any({ name: (names.content || CONTENT) })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$S);\n const asn1 = asn1js.compareSchema(schema, schema, ContentInfo.schema());\n AsnError.assertSchema(asn1, this.className);\n this.contentType = asn1.result.contentType.valueBlock.toString();\n this.content = asn1.result.content;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.contentType }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.content]\n })\n ]\n }));\n }\n toJSON() {\n const object = {\n contentType: this.contentType\n };\n if (!(this.content instanceof asn1js.Any)) {\n object.content = this.content.toJSON();\n }\n return object;\n }\n}\nContentInfo.CLASS_NAME = \"ContentInfo\";\nContentInfo.DATA = id_ContentType_Data;\nContentInfo.SIGNED_DATA = id_ContentType_SignedData;\nContentInfo.ENVELOPED_DATA = id_ContentType_EnvelopedData;\nContentInfo.ENCRYPTED_DATA = id_ContentType_EncryptedData;\n\nconst TYPE$1 = \"type\";\nconst VALUE$4 = \"value\";\nconst UTC_TIME_NAME = \"utcTimeName\";\nconst GENERAL_TIME_NAME = \"generalTimeName\";\nconst CLEAR_PROPS$R = [UTC_TIME_NAME, GENERAL_TIME_NAME];\nvar TimeType;\n(function (TimeType) {\n TimeType[TimeType[\"UTCTime\"] = 0] = \"UTCTime\";\n TimeType[TimeType[\"GeneralizedTime\"] = 1] = \"GeneralizedTime\";\n TimeType[TimeType[\"empty\"] = 2] = \"empty\";\n})(TimeType || (TimeType = {}));\nclass Time extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.type = pvutils.getParametersValue(parameters, TYPE$1, Time.defaultValues(TYPE$1));\n this.value = pvutils.getParametersValue(parameters, VALUE$4, Time.defaultValues(VALUE$4));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TYPE$1:\n return 0;\n case VALUE$4:\n return new Date(0, 0, 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}, optional = false) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Choice({\n optional,\n value: [\n new asn1js.UTCTime({ name: (names.utcTimeName || EMPTY_STRING) }),\n new asn1js.GeneralizedTime({ name: (names.generalTimeName || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$R);\n const asn1 = asn1js.compareSchema(schema, schema, Time.schema({\n names: {\n utcTimeName: UTC_TIME_NAME,\n generalTimeName: GENERAL_TIME_NAME\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (UTC_TIME_NAME in asn1.result) {\n this.type = 0;\n this.value = asn1.result.utcTimeName.toDate();\n }\n if (GENERAL_TIME_NAME in asn1.result) {\n this.type = 1;\n this.value = asn1.result.generalTimeName.toDate();\n }\n }\n toSchema() {\n if (this.type === 0) {\n return new asn1js.UTCTime({ valueDate: this.value });\n }\n else if (this.type === 1) {\n return new asn1js.GeneralizedTime({ valueDate: this.value });\n }\n return {};\n }\n toJSON() {\n return {\n type: this.type,\n value: this.value\n };\n }\n}\nTime.CLASS_NAME = \"Time\";\n\nconst TBS$4 = \"tbs\";\nconst VERSION$f = \"version\";\nconst SERIAL_NUMBER$3 = \"serialNumber\";\nconst SIGNATURE$4 = \"signature\";\nconst ISSUER$2 = \"issuer\";\nconst NOT_BEFORE = \"notBefore\";\nconst NOT_AFTER = \"notAfter\";\nconst SUBJECT$1 = \"subject\";\nconst SUBJECT_PUBLIC_KEY_INFO = \"subjectPublicKeyInfo\";\nconst ISSUER_UNIQUE_ID = \"issuerUniqueID\";\nconst SUBJECT_UNIQUE_ID = \"subjectUniqueID\";\nconst EXTENSIONS$2 = \"extensions\";\nconst SIGNATURE_ALGORITHM$5 = \"signatureAlgorithm\";\nconst SIGNATURE_VALUE$2 = \"signatureValue\";\nconst TBS_CERTIFICATE = \"tbsCertificate\";\nconst TBS_CERTIFICATE_VERSION = `${TBS_CERTIFICATE}.${VERSION$f}`;\nconst TBS_CERTIFICATE_SERIAL_NUMBER = `${TBS_CERTIFICATE}.${SERIAL_NUMBER$3}`;\nconst TBS_CERTIFICATE_SIGNATURE = `${TBS_CERTIFICATE}.${SIGNATURE$4}`;\nconst TBS_CERTIFICATE_ISSUER = `${TBS_CERTIFICATE}.${ISSUER$2}`;\nconst TBS_CERTIFICATE_NOT_BEFORE = `${TBS_CERTIFICATE}.${NOT_BEFORE}`;\nconst TBS_CERTIFICATE_NOT_AFTER = `${TBS_CERTIFICATE}.${NOT_AFTER}`;\nconst TBS_CERTIFICATE_SUBJECT = `${TBS_CERTIFICATE}.${SUBJECT$1}`;\nconst TBS_CERTIFICATE_SUBJECT_PUBLIC_KEY = `${TBS_CERTIFICATE}.${SUBJECT_PUBLIC_KEY_INFO}`;\nconst TBS_CERTIFICATE_ISSUER_UNIQUE_ID = `${TBS_CERTIFICATE}.${ISSUER_UNIQUE_ID}`;\nconst TBS_CERTIFICATE_SUBJECT_UNIQUE_ID = `${TBS_CERTIFICATE}.${SUBJECT_UNIQUE_ID}`;\nconst TBS_CERTIFICATE_EXTENSIONS = `${TBS_CERTIFICATE}.${EXTENSIONS$2}`;\nconst CLEAR_PROPS$Q = [\n TBS_CERTIFICATE,\n TBS_CERTIFICATE_VERSION,\n TBS_CERTIFICATE_SERIAL_NUMBER,\n TBS_CERTIFICATE_SIGNATURE,\n TBS_CERTIFICATE_ISSUER,\n TBS_CERTIFICATE_NOT_BEFORE,\n TBS_CERTIFICATE_NOT_AFTER,\n TBS_CERTIFICATE_SUBJECT,\n TBS_CERTIFICATE_SUBJECT_PUBLIC_KEY,\n TBS_CERTIFICATE_ISSUER_UNIQUE_ID,\n TBS_CERTIFICATE_SUBJECT_UNIQUE_ID,\n TBS_CERTIFICATE_EXTENSIONS,\n SIGNATURE_ALGORITHM$5,\n SIGNATURE_VALUE$2\n];\nfunction tbsCertificate(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || TBS_CERTIFICATE),\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Integer({ name: (names.tbsCertificateVersion || TBS_CERTIFICATE_VERSION) })\n ]\n }),\n new asn1js.Integer({ name: (names.tbsCertificateSerialNumber || TBS_CERTIFICATE_SERIAL_NUMBER) }),\n AlgorithmIdentifier.schema(names.signature || {\n names: {\n blockName: TBS_CERTIFICATE_SIGNATURE\n }\n }),\n RelativeDistinguishedNames.schema(names.issuer || {\n names: {\n blockName: TBS_CERTIFICATE_ISSUER\n }\n }),\n new asn1js.Sequence({\n name: (names.tbsCertificateValidity || \"tbsCertificate.validity\"),\n value: [\n Time.schema(names.notBefore || {\n names: {\n utcTimeName: TBS_CERTIFICATE_NOT_BEFORE,\n generalTimeName: TBS_CERTIFICATE_NOT_BEFORE\n }\n }),\n Time.schema(names.notAfter || {\n names: {\n utcTimeName: TBS_CERTIFICATE_NOT_AFTER,\n generalTimeName: TBS_CERTIFICATE_NOT_AFTER\n }\n })\n ]\n }),\n RelativeDistinguishedNames.schema(names.subject || {\n names: {\n blockName: TBS_CERTIFICATE_SUBJECT\n }\n }),\n PublicKeyInfo.schema(names.subjectPublicKeyInfo || {\n names: {\n blockName: TBS_CERTIFICATE_SUBJECT_PUBLIC_KEY\n }\n }),\n new asn1js.Primitive({\n name: (names.tbsCertificateIssuerUniqueID || TBS_CERTIFICATE_ISSUER_UNIQUE_ID),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n }\n }),\n new asn1js.Primitive({\n name: (names.tbsCertificateSubjectUniqueID || TBS_CERTIFICATE_SUBJECT_UNIQUE_ID),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n }\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n value: [Extensions.schema(names.extensions || {\n names: {\n blockName: TBS_CERTIFICATE_EXTENSIONS\n }\n })]\n })\n ]\n }));\n}\nclass Certificate extends PkiObject {\n get tbs() {\n return pvtsutils.BufferSourceConverter.toArrayBuffer(this.tbsView);\n }\n set tbs(value) {\n this.tbsView = new Uint8Array(value);\n }\n constructor(parameters = {}) {\n super();\n this.tbsView = new Uint8Array(pvutils.getParametersValue(parameters, TBS$4, Certificate.defaultValues(TBS$4)));\n this.version = pvutils.getParametersValue(parameters, VERSION$f, Certificate.defaultValues(VERSION$f));\n this.serialNumber = pvutils.getParametersValue(parameters, SERIAL_NUMBER$3, Certificate.defaultValues(SERIAL_NUMBER$3));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE$4, Certificate.defaultValues(SIGNATURE$4));\n this.issuer = pvutils.getParametersValue(parameters, ISSUER$2, Certificate.defaultValues(ISSUER$2));\n this.notBefore = pvutils.getParametersValue(parameters, NOT_BEFORE, Certificate.defaultValues(NOT_BEFORE));\n this.notAfter = pvutils.getParametersValue(parameters, NOT_AFTER, Certificate.defaultValues(NOT_AFTER));\n this.subject = pvutils.getParametersValue(parameters, SUBJECT$1, Certificate.defaultValues(SUBJECT$1));\n this.subjectPublicKeyInfo = pvutils.getParametersValue(parameters, SUBJECT_PUBLIC_KEY_INFO, Certificate.defaultValues(SUBJECT_PUBLIC_KEY_INFO));\n if (ISSUER_UNIQUE_ID in parameters) {\n this.issuerUniqueID = pvutils.getParametersValue(parameters, ISSUER_UNIQUE_ID, Certificate.defaultValues(ISSUER_UNIQUE_ID));\n }\n if (SUBJECT_UNIQUE_ID in parameters) {\n this.subjectUniqueID = pvutils.getParametersValue(parameters, SUBJECT_UNIQUE_ID, Certificate.defaultValues(SUBJECT_UNIQUE_ID));\n }\n if (EXTENSIONS$2 in parameters) {\n this.extensions = pvutils.getParametersValue(parameters, EXTENSIONS$2, Certificate.defaultValues(EXTENSIONS$2));\n }\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$5, Certificate.defaultValues(SIGNATURE_ALGORITHM$5));\n this.signatureValue = pvutils.getParametersValue(parameters, SIGNATURE_VALUE$2, Certificate.defaultValues(SIGNATURE_VALUE$2));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TBS$4:\n return EMPTY_BUFFER;\n case VERSION$f:\n return 0;\n case SERIAL_NUMBER$3:\n return new asn1js.Integer();\n case SIGNATURE$4:\n return new AlgorithmIdentifier();\n case ISSUER$2:\n return new RelativeDistinguishedNames();\n case NOT_BEFORE:\n return new Time();\n case NOT_AFTER:\n return new Time();\n case SUBJECT$1:\n return new RelativeDistinguishedNames();\n case SUBJECT_PUBLIC_KEY_INFO:\n return new PublicKeyInfo();\n case ISSUER_UNIQUE_ID:\n return EMPTY_BUFFER;\n case SUBJECT_UNIQUE_ID:\n return EMPTY_BUFFER;\n case EXTENSIONS$2:\n return [];\n case SIGNATURE_ALGORITHM$5:\n return new AlgorithmIdentifier();\n case SIGNATURE_VALUE$2:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n tbsCertificate(names.tbsCertificate),\n AlgorithmIdentifier.schema(names.signatureAlgorithm || {\n names: {\n blockName: SIGNATURE_ALGORITHM$5\n }\n }),\n new asn1js.BitString({ name: (names.signatureValue || SIGNATURE_VALUE$2) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$Q);\n const asn1 = asn1js.compareSchema(schema, schema, Certificate.schema({\n names: {\n tbsCertificate: {\n names: {\n extensions: {\n names: {\n extensions: TBS_CERTIFICATE_EXTENSIONS\n }\n }\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.tbsView = asn1.result.tbsCertificate.valueBeforeDecodeView;\n if (TBS_CERTIFICATE_VERSION in asn1.result)\n this.version = asn1.result[TBS_CERTIFICATE_VERSION].valueBlock.valueDec;\n this.serialNumber = asn1.result[TBS_CERTIFICATE_SERIAL_NUMBER];\n this.signature = new AlgorithmIdentifier({ schema: asn1.result[TBS_CERTIFICATE_SIGNATURE] });\n this.issuer = new RelativeDistinguishedNames({ schema: asn1.result[TBS_CERTIFICATE_ISSUER] });\n this.notBefore = new Time({ schema: asn1.result[TBS_CERTIFICATE_NOT_BEFORE] });\n this.notAfter = new Time({ schema: asn1.result[TBS_CERTIFICATE_NOT_AFTER] });\n this.subject = new RelativeDistinguishedNames({ schema: asn1.result[TBS_CERTIFICATE_SUBJECT] });\n this.subjectPublicKeyInfo = new PublicKeyInfo({ schema: asn1.result[TBS_CERTIFICATE_SUBJECT_PUBLIC_KEY] });\n if (TBS_CERTIFICATE_ISSUER_UNIQUE_ID in asn1.result)\n this.issuerUniqueID = asn1.result[TBS_CERTIFICATE_ISSUER_UNIQUE_ID].valueBlock.valueHex;\n if (TBS_CERTIFICATE_SUBJECT_UNIQUE_ID in asn1.result)\n this.subjectUniqueID = asn1.result[TBS_CERTIFICATE_SUBJECT_UNIQUE_ID].valueBlock.valueHex;\n if (TBS_CERTIFICATE_EXTENSIONS in asn1.result)\n this.extensions = Array.from(asn1.result[TBS_CERTIFICATE_EXTENSIONS], element => new Extension({ schema: element }));\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.signatureAlgorithm });\n this.signatureValue = asn1.result.signatureValue;\n }\n encodeTBS() {\n const outputArray = [];\n if ((VERSION$f in this) && (this.version !== Certificate.defaultValues(VERSION$f))) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Integer({ value: this.version })\n ]\n }));\n }\n outputArray.push(this.serialNumber);\n outputArray.push(this.signature.toSchema());\n outputArray.push(this.issuer.toSchema());\n outputArray.push(new asn1js.Sequence({\n value: [\n this.notBefore.toSchema(),\n this.notAfter.toSchema()\n ]\n }));\n outputArray.push(this.subject.toSchema());\n outputArray.push(this.subjectPublicKeyInfo.toSchema());\n if (this.issuerUniqueID) {\n outputArray.push(new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n valueHex: this.issuerUniqueID\n }));\n }\n if (this.subjectUniqueID) {\n outputArray.push(new asn1js.Primitive({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n valueHex: this.subjectUniqueID\n }));\n }\n if (this.extensions) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n value: [new asn1js.Sequence({\n value: Array.from(this.extensions, o => o.toSchema())\n })]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toSchema(encodeFlag = false) {\n let tbsSchema;\n if (encodeFlag === false) {\n if (!this.tbsView.byteLength) {\n return Certificate.schema().value[0];\n }\n const asn1 = asn1js.fromBER(this.tbsView);\n AsnError.assert(asn1, \"TBS Certificate\");\n tbsSchema = asn1.result;\n }\n else {\n tbsSchema = this.encodeTBS();\n }\n return (new asn1js.Sequence({\n value: [\n tbsSchema,\n this.signatureAlgorithm.toSchema(),\n this.signatureValue\n ]\n }));\n }\n toJSON() {\n const res = {\n tbs: pvtsutils.Convert.ToHex(this.tbsView),\n version: this.version,\n serialNumber: this.serialNumber.toJSON(),\n signature: this.signature.toJSON(),\n issuer: this.issuer.toJSON(),\n notBefore: this.notBefore.toJSON(),\n notAfter: this.notAfter.toJSON(),\n subject: this.subject.toJSON(),\n subjectPublicKeyInfo: this.subjectPublicKeyInfo.toJSON(),\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signatureValue: this.signatureValue.toJSON(),\n };\n if ((VERSION$f in this) && (this.version !== Certificate.defaultValues(VERSION$f))) {\n res.version = this.version;\n }\n if (this.issuerUniqueID) {\n res.issuerUniqueID = pvtsutils.Convert.ToHex(this.issuerUniqueID);\n }\n if (this.subjectUniqueID) {\n res.subjectUniqueID = pvtsutils.Convert.ToHex(this.subjectUniqueID);\n }\n if (this.extensions) {\n res.extensions = Array.from(this.extensions, o => o.toJSON());\n }\n return res;\n }\n async getPublicKey(parameters, crypto = getCrypto(true)) {\n return crypto.getPublicKey(this.subjectPublicKeyInfo, this.signatureAlgorithm, parameters);\n }\n async getKeyHash(hashAlgorithm = \"SHA-1\", crypto = getCrypto(true)) {\n return crypto.digest({ name: hashAlgorithm }, this.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView);\n }\n async sign(privateKey, hashAlgorithm = \"SHA-1\", crypto = getCrypto(true)) {\n if (!privateKey) {\n throw new Error(\"Need to provide a private key for signing\");\n }\n const signatureParameters = await crypto.getSignatureParameters(privateKey, hashAlgorithm);\n const parameters = signatureParameters.parameters;\n this.signature = signatureParameters.signatureAlgorithm;\n this.signatureAlgorithm = signatureParameters.signatureAlgorithm;\n this.tbsView = new Uint8Array(this.encodeTBS().toBER());\n const signature = await crypto.signWithPrivateKey(this.tbsView, privateKey, parameters);\n this.signatureValue = new asn1js.BitString({ valueHex: signature });\n }\n async verify(issuerCertificate, crypto = getCrypto(true)) {\n let subjectPublicKeyInfo;\n if (issuerCertificate) {\n subjectPublicKeyInfo = issuerCertificate.subjectPublicKeyInfo;\n }\n else if (this.issuer.isEqual(this.subject)) {\n subjectPublicKeyInfo = this.subjectPublicKeyInfo;\n }\n if (!(subjectPublicKeyInfo instanceof PublicKeyInfo)) {\n throw new Error(\"Please provide issuer certificate as a parameter\");\n }\n return crypto.verifyWithPublicKey(this.tbsView, this.signatureValue, subjectPublicKeyInfo, this.signatureAlgorithm);\n }\n}\nCertificate.CLASS_NAME = \"Certificate\";\nfunction checkCA(cert, signerCert = null) {\n if (signerCert && cert.issuer.isEqual(signerCert.issuer) && cert.serialNumber.isEqual(signerCert.serialNumber)) {\n return null;\n }\n let isCA = false;\n if (cert.extensions) {\n for (const extension of cert.extensions) {\n if (extension.extnID === id_BasicConstraints && extension.parsedValue instanceof BasicConstraints) {\n if (extension.parsedValue.cA) {\n isCA = true;\n break;\n }\n }\n }\n }\n if (isCA) {\n return cert;\n }\n return null;\n}\n\nconst CERT_ID$1 = \"certId\";\nconst CERT_VALUE = \"certValue\";\nconst PARSED_VALUE$4 = \"parsedValue\";\nconst CLEAR_PROPS$P = [\n CERT_ID$1,\n CERT_VALUE\n];\nclass CertBag extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.certId = pvutils.getParametersValue(parameters, CERT_ID$1, CertBag.defaultValues(CERT_ID$1));\n this.certValue = pvutils.getParametersValue(parameters, CERT_VALUE, CertBag.defaultValues(CERT_VALUE));\n if (PARSED_VALUE$4 in parameters) {\n this.parsedValue = pvutils.getParametersValue(parameters, PARSED_VALUE$4, CertBag.defaultValues(PARSED_VALUE$4));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CERT_ID$1:\n return EMPTY_STRING;\n case CERT_VALUE:\n return (new asn1js.Any());\n case PARSED_VALUE$4:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case CERT_ID$1:\n return (memberValue === EMPTY_STRING);\n case CERT_VALUE:\n return (memberValue instanceof asn1js.Any);\n case PARSED_VALUE$4:\n return ((memberValue instanceof Object) && (Object.keys(memberValue).length === 0));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.id || \"id\") }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Any({ name: (names.value || \"value\") })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$P);\n const asn1 = asn1js.compareSchema(schema, schema, CertBag.schema({\n names: {\n id: CERT_ID$1,\n value: CERT_VALUE\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.certId = asn1.result.certId.valueBlock.toString();\n this.certValue = asn1.result.certValue;\n const certValueHex = this.certValue.valueBlock.valueHexView;\n switch (this.certId) {\n case id_CertBag_X509Certificate:\n {\n try {\n this.parsedValue = Certificate.fromBER(certValueHex);\n }\n catch (ex) {\n AttributeCertificateV2.fromBER(certValueHex);\n }\n }\n break;\n case id_CertBag_AttributeCertificate:\n {\n this.parsedValue = AttributeCertificateV2.fromBER(certValueHex);\n }\n break;\n case id_CertBag_SDSICertificate:\n default:\n throw new Error(`Incorrect CERT_ID value in CertBag: ${this.certId}`);\n }\n }\n toSchema() {\n if (PARSED_VALUE$4 in this) {\n if (\"acinfo\" in this.parsedValue) {\n this.certId = id_CertBag_AttributeCertificate;\n }\n else {\n this.certId = id_CertBag_X509Certificate;\n }\n this.certValue = new asn1js.OctetString({ valueHex: this.parsedValue.toSchema().toBER(false) });\n }\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.certId }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [((\"toSchema\" in this.certValue) ? this.certValue.toSchema() : this.certValue)]\n })\n ]\n }));\n }\n toJSON() {\n return {\n certId: this.certId,\n certValue: this.certValue.toJSON()\n };\n }\n}\nCertBag.CLASS_NAME = \"CertBag\";\n\nconst USER_CERTIFICATE = \"userCertificate\";\nconst REVOCATION_DATE = \"revocationDate\";\nconst CRL_ENTRY_EXTENSIONS = \"crlEntryExtensions\";\nconst CLEAR_PROPS$O = [\n USER_CERTIFICATE,\n REVOCATION_DATE,\n CRL_ENTRY_EXTENSIONS\n];\nclass RevokedCertificate extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.userCertificate = pvutils.getParametersValue(parameters, USER_CERTIFICATE, RevokedCertificate.defaultValues(USER_CERTIFICATE));\n this.revocationDate = pvutils.getParametersValue(parameters, REVOCATION_DATE, RevokedCertificate.defaultValues(REVOCATION_DATE));\n if (CRL_ENTRY_EXTENSIONS in parameters) {\n this.crlEntryExtensions = pvutils.getParametersValue(parameters, CRL_ENTRY_EXTENSIONS, RevokedCertificate.defaultValues(CRL_ENTRY_EXTENSIONS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case USER_CERTIFICATE:\n return new asn1js.Integer();\n case REVOCATION_DATE:\n return new Time();\n case CRL_ENTRY_EXTENSIONS:\n return new Extensions();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.userCertificate || USER_CERTIFICATE) }),\n Time.schema({\n names: {\n utcTimeName: (names.revocationDate || REVOCATION_DATE),\n generalTimeName: (names.revocationDate || REVOCATION_DATE)\n }\n }),\n Extensions.schema({\n names: {\n blockName: (names.crlEntryExtensions || CRL_ENTRY_EXTENSIONS)\n }\n }, true)\n ]\n });\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$O);\n const asn1 = asn1js.compareSchema(schema, schema, RevokedCertificate.schema());\n AsnError.assertSchema(asn1, this.className);\n this.userCertificate = asn1.result.userCertificate;\n this.revocationDate = new Time({ schema: asn1.result.revocationDate });\n if (CRL_ENTRY_EXTENSIONS in asn1.result) {\n this.crlEntryExtensions = new Extensions({ schema: asn1.result.crlEntryExtensions });\n }\n }\n toSchema() {\n const outputArray = [\n this.userCertificate,\n this.revocationDate.toSchema()\n ];\n if (this.crlEntryExtensions) {\n outputArray.push(this.crlEntryExtensions.toSchema());\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n userCertificate: this.userCertificate.toJSON(),\n revocationDate: this.revocationDate.toJSON(),\n };\n if (this.crlEntryExtensions) {\n res.crlEntryExtensions = this.crlEntryExtensions.toJSON();\n }\n return res;\n }\n}\nRevokedCertificate.CLASS_NAME = \"RevokedCertificate\";\n\nconst TBS$3 = \"tbs\";\nconst VERSION$e = \"version\";\nconst SIGNATURE$3 = \"signature\";\nconst ISSUER$1 = \"issuer\";\nconst THIS_UPDATE$1 = \"thisUpdate\";\nconst NEXT_UPDATE$1 = \"nextUpdate\";\nconst REVOKED_CERTIFICATES = \"revokedCertificates\";\nconst CRL_EXTENSIONS = \"crlExtensions\";\nconst SIGNATURE_ALGORITHM$4 = \"signatureAlgorithm\";\nconst SIGNATURE_VALUE$1 = \"signatureValue\";\nconst TBS_CERT_LIST = \"tbsCertList\";\nconst TBS_CERT_LIST_VERSION = `${TBS_CERT_LIST}.version`;\nconst TBS_CERT_LIST_SIGNATURE = `${TBS_CERT_LIST}.signature`;\nconst TBS_CERT_LIST_ISSUER = `${TBS_CERT_LIST}.issuer`;\nconst TBS_CERT_LIST_THIS_UPDATE = `${TBS_CERT_LIST}.thisUpdate`;\nconst TBS_CERT_LIST_NEXT_UPDATE = `${TBS_CERT_LIST}.nextUpdate`;\nconst TBS_CERT_LIST_REVOKED_CERTIFICATES = `${TBS_CERT_LIST}.revokedCertificates`;\nconst TBS_CERT_LIST_EXTENSIONS = `${TBS_CERT_LIST}.extensions`;\nconst CLEAR_PROPS$N = [\n TBS_CERT_LIST,\n TBS_CERT_LIST_VERSION,\n TBS_CERT_LIST_SIGNATURE,\n TBS_CERT_LIST_ISSUER,\n TBS_CERT_LIST_THIS_UPDATE,\n TBS_CERT_LIST_NEXT_UPDATE,\n TBS_CERT_LIST_REVOKED_CERTIFICATES,\n TBS_CERT_LIST_EXTENSIONS,\n SIGNATURE_ALGORITHM$4,\n SIGNATURE_VALUE$1\n];\nfunction tbsCertList(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || TBS_CERT_LIST),\n value: [\n new asn1js.Integer({\n optional: true,\n name: (names.tbsCertListVersion || TBS_CERT_LIST_VERSION),\n value: 2\n }),\n AlgorithmIdentifier.schema(names.signature || {\n names: {\n blockName: TBS_CERT_LIST_SIGNATURE\n }\n }),\n RelativeDistinguishedNames.schema(names.issuer || {\n names: {\n blockName: TBS_CERT_LIST_ISSUER\n }\n }),\n Time.schema(names.tbsCertListThisUpdate || {\n names: {\n utcTimeName: TBS_CERT_LIST_THIS_UPDATE,\n generalTimeName: TBS_CERT_LIST_THIS_UPDATE\n }\n }),\n Time.schema(names.tbsCertListNextUpdate || {\n names: {\n utcTimeName: TBS_CERT_LIST_NEXT_UPDATE,\n generalTimeName: TBS_CERT_LIST_NEXT_UPDATE\n }\n }, true),\n new asn1js.Sequence({\n optional: true,\n value: [\n new asn1js.Repeated({\n name: (names.tbsCertListRevokedCertificates || TBS_CERT_LIST_REVOKED_CERTIFICATES),\n value: new asn1js.Sequence({\n value: [\n new asn1js.Integer(),\n Time.schema(),\n Extensions.schema({}, true)\n ]\n })\n })\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [Extensions.schema(names.crlExtensions || {\n names: {\n blockName: TBS_CERT_LIST_EXTENSIONS\n }\n })]\n })\n ]\n }));\n}\nconst WELL_KNOWN_EXTENSIONS = [\n id_AuthorityKeyIdentifier,\n id_IssuerAltName,\n id_CRLNumber,\n id_BaseCRLNumber,\n id_IssuingDistributionPoint,\n id_FreshestCRL,\n id_AuthorityInfoAccess,\n id_CRLReason,\n id_InvalidityDate,\n id_CertificateIssuer,\n];\nclass CertificateRevocationList extends PkiObject {\n get tbs() {\n return pvtsutils.BufferSourceConverter.toArrayBuffer(this.tbsView);\n }\n set tbs(value) {\n this.tbsView = new Uint8Array(value);\n }\n constructor(parameters = {}) {\n super();\n this.tbsView = new Uint8Array(pvutils.getParametersValue(parameters, TBS$3, CertificateRevocationList.defaultValues(TBS$3)));\n this.version = pvutils.getParametersValue(parameters, VERSION$e, CertificateRevocationList.defaultValues(VERSION$e));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE$3, CertificateRevocationList.defaultValues(SIGNATURE$3));\n this.issuer = pvutils.getParametersValue(parameters, ISSUER$1, CertificateRevocationList.defaultValues(ISSUER$1));\n this.thisUpdate = pvutils.getParametersValue(parameters, THIS_UPDATE$1, CertificateRevocationList.defaultValues(THIS_UPDATE$1));\n if (NEXT_UPDATE$1 in parameters) {\n this.nextUpdate = pvutils.getParametersValue(parameters, NEXT_UPDATE$1, CertificateRevocationList.defaultValues(NEXT_UPDATE$1));\n }\n if (REVOKED_CERTIFICATES in parameters) {\n this.revokedCertificates = pvutils.getParametersValue(parameters, REVOKED_CERTIFICATES, CertificateRevocationList.defaultValues(REVOKED_CERTIFICATES));\n }\n if (CRL_EXTENSIONS in parameters) {\n this.crlExtensions = pvutils.getParametersValue(parameters, CRL_EXTENSIONS, CertificateRevocationList.defaultValues(CRL_EXTENSIONS));\n }\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$4, CertificateRevocationList.defaultValues(SIGNATURE_ALGORITHM$4));\n this.signatureValue = pvutils.getParametersValue(parameters, SIGNATURE_VALUE$1, CertificateRevocationList.defaultValues(SIGNATURE_VALUE$1));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TBS$3:\n return EMPTY_BUFFER;\n case VERSION$e:\n return 0;\n case SIGNATURE$3:\n return new AlgorithmIdentifier();\n case ISSUER$1:\n return new RelativeDistinguishedNames();\n case THIS_UPDATE$1:\n return new Time();\n case NEXT_UPDATE$1:\n return new Time();\n case REVOKED_CERTIFICATES:\n return [];\n case CRL_EXTENSIONS:\n return new Extensions();\n case SIGNATURE_ALGORITHM$4:\n return new AlgorithmIdentifier();\n case SIGNATURE_VALUE$1:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || \"CertificateList\"),\n value: [\n tbsCertList(parameters),\n AlgorithmIdentifier.schema(names.signatureAlgorithm || {\n names: {\n blockName: SIGNATURE_ALGORITHM$4\n }\n }),\n new asn1js.BitString({ name: (names.signatureValue || SIGNATURE_VALUE$1) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$N);\n const asn1 = asn1js.compareSchema(schema, schema, CertificateRevocationList.schema());\n AsnError.assertSchema(asn1, this.className);\n this.tbsView = asn1.result.tbsCertList.valueBeforeDecodeView;\n if (TBS_CERT_LIST_VERSION in asn1.result) {\n this.version = asn1.result[TBS_CERT_LIST_VERSION].valueBlock.valueDec;\n }\n this.signature = new AlgorithmIdentifier({ schema: asn1.result[TBS_CERT_LIST_SIGNATURE] });\n this.issuer = new RelativeDistinguishedNames({ schema: asn1.result[TBS_CERT_LIST_ISSUER] });\n this.thisUpdate = new Time({ schema: asn1.result[TBS_CERT_LIST_THIS_UPDATE] });\n if (TBS_CERT_LIST_NEXT_UPDATE in asn1.result) {\n this.nextUpdate = new Time({ schema: asn1.result[TBS_CERT_LIST_NEXT_UPDATE] });\n }\n if (TBS_CERT_LIST_REVOKED_CERTIFICATES in asn1.result) {\n this.revokedCertificates = Array.from(asn1.result[TBS_CERT_LIST_REVOKED_CERTIFICATES], element => new RevokedCertificate({ schema: element }));\n }\n if (TBS_CERT_LIST_EXTENSIONS in asn1.result) {\n this.crlExtensions = new Extensions({ schema: asn1.result[TBS_CERT_LIST_EXTENSIONS] });\n }\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.signatureAlgorithm });\n this.signatureValue = asn1.result.signatureValue;\n }\n encodeTBS() {\n const outputArray = [];\n if (this.version !== CertificateRevocationList.defaultValues(VERSION$e)) {\n outputArray.push(new asn1js.Integer({ value: this.version }));\n }\n outputArray.push(this.signature.toSchema());\n outputArray.push(this.issuer.toSchema());\n outputArray.push(this.thisUpdate.toSchema());\n if (this.nextUpdate) {\n outputArray.push(this.nextUpdate.toSchema());\n }\n if (this.revokedCertificates) {\n outputArray.push(new asn1js.Sequence({\n value: Array.from(this.revokedCertificates, o => o.toSchema())\n }));\n }\n if (this.crlExtensions) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n this.crlExtensions.toSchema()\n ]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toSchema(encodeFlag = false) {\n let tbsSchema;\n if (!encodeFlag) {\n if (!this.tbsView.byteLength) {\n return CertificateRevocationList.schema();\n }\n const asn1 = asn1js.fromBER(this.tbsView);\n AsnError.assert(asn1, \"TBS Certificate Revocation List\");\n tbsSchema = asn1.result;\n }\n else {\n tbsSchema = this.encodeTBS();\n }\n return (new asn1js.Sequence({\n value: [\n tbsSchema,\n this.signatureAlgorithm.toSchema(),\n this.signatureValue\n ]\n }));\n }\n toJSON() {\n const res = {\n tbs: pvtsutils.Convert.ToHex(this.tbsView),\n version: this.version,\n signature: this.signature.toJSON(),\n issuer: this.issuer.toJSON(),\n thisUpdate: this.thisUpdate.toJSON(),\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signatureValue: this.signatureValue.toJSON()\n };\n if (this.version !== CertificateRevocationList.defaultValues(VERSION$e))\n res.version = this.version;\n if (this.nextUpdate) {\n res.nextUpdate = this.nextUpdate.toJSON();\n }\n if (this.revokedCertificates) {\n res.revokedCertificates = Array.from(this.revokedCertificates, o => o.toJSON());\n }\n if (this.crlExtensions) {\n res.crlExtensions = this.crlExtensions.toJSON();\n }\n return res;\n }\n isCertificateRevoked(certificate) {\n if (!this.issuer.isEqual(certificate.issuer)) {\n return false;\n }\n if (!this.revokedCertificates) {\n return false;\n }\n for (const revokedCertificate of this.revokedCertificates) {\n if (revokedCertificate.userCertificate.isEqual(certificate.serialNumber)) {\n return true;\n }\n }\n return false;\n }\n async sign(privateKey, hashAlgorithm = \"SHA-1\", crypto = getCrypto(true)) {\n if (!privateKey) {\n throw new Error(\"Need to provide a private key for signing\");\n }\n const signatureParameters = await crypto.getSignatureParameters(privateKey, hashAlgorithm);\n const { parameters } = signatureParameters;\n this.signature = signatureParameters.signatureAlgorithm;\n this.signatureAlgorithm = signatureParameters.signatureAlgorithm;\n this.tbsView = new Uint8Array(this.encodeTBS().toBER());\n const signature = await crypto.signWithPrivateKey(this.tbsView, privateKey, parameters);\n this.signatureValue = new asn1js.BitString({ valueHex: signature });\n }\n async verify(parameters = {}, crypto = getCrypto(true)) {\n let subjectPublicKeyInfo;\n if (parameters.issuerCertificate) {\n subjectPublicKeyInfo = parameters.issuerCertificate.subjectPublicKeyInfo;\n if (!this.issuer.isEqual(parameters.issuerCertificate.subject)) {\n return false;\n }\n }\n if (parameters.publicKeyInfo) {\n subjectPublicKeyInfo = parameters.publicKeyInfo;\n }\n if (!subjectPublicKeyInfo) {\n throw new Error(\"Issuer's certificate must be provided as an input parameter\");\n }\n if (this.crlExtensions) {\n for (const extension of this.crlExtensions.extensions) {\n if (extension.critical) {\n if (!WELL_KNOWN_EXTENSIONS.includes(extension.extnID))\n return false;\n }\n }\n }\n return crypto.verifyWithPublicKey(this.tbsView, this.signatureValue, subjectPublicKeyInfo, this.signatureAlgorithm);\n }\n}\nCertificateRevocationList.CLASS_NAME = \"CertificateRevocationList\";\n\nconst CRL_ID = \"crlId\";\nconst CRL_VALUE = \"crlValue\";\nconst PARSED_VALUE$3 = \"parsedValue\";\nconst CLEAR_PROPS$M = [\n CRL_ID,\n CRL_VALUE,\n];\nclass CRLBag extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.crlId = pvutils.getParametersValue(parameters, CRL_ID, CRLBag.defaultValues(CRL_ID));\n this.crlValue = pvutils.getParametersValue(parameters, CRL_VALUE, CRLBag.defaultValues(CRL_VALUE));\n if (PARSED_VALUE$3 in parameters) {\n this.parsedValue = pvutils.getParametersValue(parameters, PARSED_VALUE$3, CRLBag.defaultValues(PARSED_VALUE$3));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CRL_ID:\n return EMPTY_STRING;\n case CRL_VALUE:\n return (new asn1js.Any());\n case PARSED_VALUE$3:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case CRL_ID:\n return (memberValue === EMPTY_STRING);\n case CRL_VALUE:\n return (memberValue instanceof asn1js.Any);\n case PARSED_VALUE$3:\n return ((memberValue instanceof Object) && (Object.keys(memberValue).length === 0));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.id || \"id\") }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Any({ name: (names.value || \"value\") })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$M);\n const asn1 = asn1js.compareSchema(schema, schema, CRLBag.schema({\n names: {\n id: CRL_ID,\n value: CRL_VALUE\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.crlId = asn1.result.crlId.valueBlock.toString();\n this.crlValue = asn1.result.crlValue;\n switch (this.crlId) {\n case id_CRLBag_X509CRL:\n {\n this.parsedValue = CertificateRevocationList.fromBER(this.certValue.valueBlock.valueHex);\n }\n break;\n default:\n throw new Error(`Incorrect CRL_ID value in CRLBag: ${this.crlId}`);\n }\n }\n toSchema() {\n if (this.parsedValue) {\n this.crlId = id_CRLBag_X509CRL;\n this.crlValue = new asn1js.OctetString({ valueHex: this.parsedValue.toSchema().toBER(false) });\n }\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.crlId }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.crlValue.toSchema()]\n })\n ]\n }));\n }\n toJSON() {\n return {\n crlId: this.crlId,\n crlValue: this.crlValue.toJSON()\n };\n }\n}\nCRLBag.CLASS_NAME = \"CRLBag\";\n\nconst VERSION$d = \"version\";\nconst ENCRYPTED_CONTENT_INFO$1 = \"encryptedContentInfo\";\nconst UNPROTECTED_ATTRS$1 = \"unprotectedAttrs\";\nconst CLEAR_PROPS$L = [\n VERSION$d,\n ENCRYPTED_CONTENT_INFO$1,\n UNPROTECTED_ATTRS$1,\n];\nclass EncryptedData extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$d, EncryptedData.defaultValues(VERSION$d));\n this.encryptedContentInfo = pvutils.getParametersValue(parameters, ENCRYPTED_CONTENT_INFO$1, EncryptedData.defaultValues(ENCRYPTED_CONTENT_INFO$1));\n if (UNPROTECTED_ATTRS$1 in parameters) {\n this.unprotectedAttrs = pvutils.getParametersValue(parameters, UNPROTECTED_ATTRS$1, EncryptedData.defaultValues(UNPROTECTED_ATTRS$1));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$d:\n return 0;\n case ENCRYPTED_CONTENT_INFO$1:\n return new EncryptedContentInfo();\n case UNPROTECTED_ATTRS$1:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$d:\n return (memberValue === 0);\n case ENCRYPTED_CONTENT_INFO$1:\n return ((EncryptedContentInfo.compareWithDefault(\"contentType\", memberValue.contentType)) &&\n (EncryptedContentInfo.compareWithDefault(\"contentEncryptionAlgorithm\", memberValue.contentEncryptionAlgorithm)) &&\n (EncryptedContentInfo.compareWithDefault(\"encryptedContent\", memberValue.encryptedContent)));\n case UNPROTECTED_ATTRS$1:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n EncryptedContentInfo.schema(names.encryptedContentInfo || {}),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.Repeated({\n name: (names.unprotectedAttrs || EMPTY_STRING),\n value: Attribute.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$L);\n const asn1 = asn1js.compareSchema(schema, schema, EncryptedData.schema({\n names: {\n version: VERSION$d,\n encryptedContentInfo: {\n names: {\n blockName: ENCRYPTED_CONTENT_INFO$1\n }\n },\n unprotectedAttrs: UNPROTECTED_ATTRS$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.encryptedContentInfo = new EncryptedContentInfo({ schema: asn1.result.encryptedContentInfo });\n if (UNPROTECTED_ATTRS$1 in asn1.result)\n this.unprotectedAttrs = Array.from(asn1.result.unprotectedAttrs, element => new Attribute({ schema: element }));\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(this.encryptedContentInfo.toSchema());\n if (this.unprotectedAttrs) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: Array.from(this.unprotectedAttrs, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n version: this.version,\n encryptedContentInfo: this.encryptedContentInfo.toJSON()\n };\n if (this.unprotectedAttrs)\n res.unprotectedAttrs = Array.from(this.unprotectedAttrs, o => o.toJSON());\n return res;\n }\n async encrypt(parameters, crypto = getCrypto(true)) {\n ArgumentError.assert(parameters, \"parameters\", \"object\");\n const encryptParams = {\n ...parameters,\n contentType: \"1.2.840.113549.1.7.1\",\n };\n this.encryptedContentInfo = await crypto.encryptEncryptedContentInfo(encryptParams);\n }\n async decrypt(parameters, crypto = getCrypto(true)) {\n ArgumentError.assert(parameters, \"parameters\", \"object\");\n const decryptParams = {\n ...parameters,\n encryptedContentInfo: this.encryptedContentInfo,\n };\n return crypto.decryptEncryptedContentInfo(decryptParams);\n }\n}\nEncryptedData.CLASS_NAME = \"EncryptedData\";\n\nconst ENCRYPTION_ALGORITHM = \"encryptionAlgorithm\";\nconst ENCRYPTED_DATA = \"encryptedData\";\nconst PARSED_VALUE$2 = \"parsedValue\";\nconst CLEAR_PROPS$K = [\n ENCRYPTION_ALGORITHM,\n ENCRYPTED_DATA,\n];\nclass PKCS8ShroudedKeyBag extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.encryptionAlgorithm = pvutils.getParametersValue(parameters, ENCRYPTION_ALGORITHM, PKCS8ShroudedKeyBag.defaultValues(ENCRYPTION_ALGORITHM));\n this.encryptedData = pvutils.getParametersValue(parameters, ENCRYPTED_DATA, PKCS8ShroudedKeyBag.defaultValues(ENCRYPTED_DATA));\n if (PARSED_VALUE$2 in parameters) {\n this.parsedValue = pvutils.getParametersValue(parameters, PARSED_VALUE$2, PKCS8ShroudedKeyBag.defaultValues(PARSED_VALUE$2));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ENCRYPTION_ALGORITHM:\n return (new AlgorithmIdentifier());\n case ENCRYPTED_DATA:\n return (new asn1js.OctetString());\n case PARSED_VALUE$2:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case ENCRYPTION_ALGORITHM:\n return ((AlgorithmIdentifier.compareWithDefault(\"algorithmId\", memberValue.algorithmId)) &&\n ((\"algorithmParams\" in memberValue) === false));\n case ENCRYPTED_DATA:\n return (memberValue.isEqual(PKCS8ShroudedKeyBag.defaultValues(memberName)));\n case PARSED_VALUE$2:\n return ((memberValue instanceof Object) && (Object.keys(memberValue).length === 0));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.encryptionAlgorithm || {\n names: {\n blockName: ENCRYPTION_ALGORITHM\n }\n }),\n new asn1js.Choice({\n value: [\n new asn1js.OctetString({ name: (names.encryptedData || ENCRYPTED_DATA) }),\n new asn1js.OctetString({\n idBlock: {\n isConstructed: true\n },\n name: (names.encryptedData || ENCRYPTED_DATA)\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$K);\n const asn1 = asn1js.compareSchema(schema, schema, PKCS8ShroudedKeyBag.schema({\n names: {\n encryptionAlgorithm: {\n names: {\n blockName: ENCRYPTION_ALGORITHM\n }\n },\n encryptedData: ENCRYPTED_DATA\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.encryptionAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.encryptionAlgorithm });\n this.encryptedData = asn1.result.encryptedData;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.encryptionAlgorithm.toSchema(),\n this.encryptedData\n ]\n }));\n }\n toJSON() {\n return {\n encryptionAlgorithm: this.encryptionAlgorithm.toJSON(),\n encryptedData: this.encryptedData.toJSON(),\n };\n }\n async parseInternalValues(parameters, crypto = getCrypto(true)) {\n const cmsEncrypted = new EncryptedData({\n encryptedContentInfo: new EncryptedContentInfo({\n contentEncryptionAlgorithm: this.encryptionAlgorithm,\n encryptedContent: this.encryptedData\n })\n });\n const decryptedData = await cmsEncrypted.decrypt(parameters, crypto);\n this.parsedValue = PrivateKeyInfo.fromBER(decryptedData);\n }\n async makeInternalValues(parameters, crypto = getCrypto(true)) {\n if (!this.parsedValue) {\n throw new Error(\"Please initialize \\\"parsedValue\\\" first\");\n }\n const cmsEncrypted = new EncryptedData();\n const encryptParams = {\n ...parameters,\n contentToEncrypt: this.parsedValue.toSchema().toBER(false),\n };\n await cmsEncrypted.encrypt(encryptParams, crypto);\n if (!cmsEncrypted.encryptedContentInfo.encryptedContent) {\n throw new Error(\"The filed `encryptedContent` in EncryptedContentInfo is empty\");\n }\n this.encryptionAlgorithm = cmsEncrypted.encryptedContentInfo.contentEncryptionAlgorithm;\n this.encryptedData = cmsEncrypted.encryptedContentInfo.encryptedContent;\n }\n}\nPKCS8ShroudedKeyBag.CLASS_NAME = \"PKCS8ShroudedKeyBag\";\n\nconst SECRET_TYPE_ID = \"secretTypeId\";\nconst SECRET_VALUE = \"secretValue\";\nconst CLEAR_PROPS$J = [\n SECRET_TYPE_ID,\n SECRET_VALUE,\n];\nclass SecretBag extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.secretTypeId = pvutils.getParametersValue(parameters, SECRET_TYPE_ID, SecretBag.defaultValues(SECRET_TYPE_ID));\n this.secretValue = pvutils.getParametersValue(parameters, SECRET_VALUE, SecretBag.defaultValues(SECRET_VALUE));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case SECRET_TYPE_ID:\n return EMPTY_STRING;\n case SECRET_VALUE:\n return (new asn1js.Any());\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case SECRET_TYPE_ID:\n return (memberValue === EMPTY_STRING);\n case SECRET_VALUE:\n return (memberValue instanceof asn1js.Any);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.id || \"id\") }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Any({ name: (names.value || \"value\") })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$J);\n const asn1 = asn1js.compareSchema(schema, schema, SecretBag.schema({\n names: {\n id: SECRET_TYPE_ID,\n value: SECRET_VALUE\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.secretTypeId = asn1.result.secretTypeId.valueBlock.toString();\n this.secretValue = asn1.result.secretValue;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.secretTypeId }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.secretValue.toSchema()]\n })\n ]\n }));\n }\n toJSON() {\n return {\n secretTypeId: this.secretTypeId,\n secretValue: this.secretValue.toJSON()\n };\n }\n}\nSecretBag.CLASS_NAME = \"SecretBag\";\n\nclass SafeBagValueFactory {\n static getItems() {\n if (!this.items) {\n this.items = {};\n SafeBagValueFactory.register(\"1.2.840.113549.1.12.10.1.1\", PrivateKeyInfo);\n SafeBagValueFactory.register(\"1.2.840.113549.1.12.10.1.2\", PKCS8ShroudedKeyBag);\n SafeBagValueFactory.register(\"1.2.840.113549.1.12.10.1.3\", CertBag);\n SafeBagValueFactory.register(\"1.2.840.113549.1.12.10.1.4\", CRLBag);\n SafeBagValueFactory.register(\"1.2.840.113549.1.12.10.1.5\", SecretBag);\n SafeBagValueFactory.register(\"1.2.840.113549.1.12.10.1.6\", SafeContents);\n }\n return this.items;\n }\n static register(id, type) {\n this.getItems()[id] = type;\n }\n static find(id) {\n return this.getItems()[id] || null;\n }\n}\n\nconst BAG_ID = \"bagId\";\nconst BAG_VALUE = \"bagValue\";\nconst BAG_ATTRIBUTES = \"bagAttributes\";\nconst CLEAR_PROPS$I = [\n BAG_ID,\n BAG_VALUE,\n BAG_ATTRIBUTES\n];\nclass SafeBag extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.bagId = pvutils.getParametersValue(parameters, BAG_ID, SafeBag.defaultValues(BAG_ID));\n this.bagValue = pvutils.getParametersValue(parameters, BAG_VALUE, SafeBag.defaultValues(BAG_VALUE));\n if (BAG_ATTRIBUTES in parameters) {\n this.bagAttributes = pvutils.getParametersValue(parameters, BAG_ATTRIBUTES, SafeBag.defaultValues(BAG_ATTRIBUTES));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case BAG_ID:\n return EMPTY_STRING;\n case BAG_VALUE:\n return (new asn1js.Any());\n case BAG_ATTRIBUTES:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case BAG_ID:\n return (memberValue === EMPTY_STRING);\n case BAG_VALUE:\n return (memberValue instanceof asn1js.Any);\n case BAG_ATTRIBUTES:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.bagId || BAG_ID) }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Any({ name: (names.bagValue || BAG_VALUE) })]\n }),\n new asn1js.Set({\n optional: true,\n value: [\n new asn1js.Repeated({\n name: (names.bagAttributes || BAG_ATTRIBUTES),\n value: Attribute.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$I);\n const asn1 = asn1js.compareSchema(schema, schema, SafeBag.schema({\n names: {\n bagId: BAG_ID,\n bagValue: BAG_VALUE,\n bagAttributes: BAG_ATTRIBUTES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.bagId = asn1.result.bagId.valueBlock.toString();\n const bagType = SafeBagValueFactory.find(this.bagId);\n if (!bagType) {\n throw new Error(`Invalid BAG_ID for SafeBag: ${this.bagId}`);\n }\n this.bagValue = new bagType({ schema: asn1.result.bagValue });\n if (BAG_ATTRIBUTES in asn1.result) {\n this.bagAttributes = Array.from(asn1.result.bagAttributes, element => new Attribute({ schema: element }));\n }\n }\n toSchema() {\n const outputArray = [\n new asn1js.ObjectIdentifier({ value: this.bagId }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.bagValue.toSchema()]\n })\n ];\n if (this.bagAttributes) {\n outputArray.push(new asn1js.Set({\n value: Array.from(this.bagAttributes, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const output = {\n bagId: this.bagId,\n bagValue: this.bagValue.toJSON()\n };\n if (this.bagAttributes) {\n output.bagAttributes = Array.from(this.bagAttributes, o => o.toJSON());\n }\n return output;\n }\n}\nSafeBag.CLASS_NAME = \"SafeBag\";\n\nconst SAFE_BUGS = \"safeBags\";\nclass SafeContents extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.safeBags = pvutils.getParametersValue(parameters, SAFE_BUGS, SafeContents.defaultValues(SAFE_BUGS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case SAFE_BUGS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case SAFE_BUGS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.safeBags || EMPTY_STRING),\n value: SafeBag.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n SAFE_BUGS\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, SafeContents.schema({\n names: {\n safeBags: SAFE_BUGS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.safeBags = Array.from(asn1.result.safeBags, element => new SafeBag({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.safeBags, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n safeBags: Array.from(this.safeBags, o => o.toJSON())\n };\n }\n}\nSafeContents.CLASS_NAME = \"SafeContents\";\n\nconst OTHER_CERT_FORMAT = \"otherCertFormat\";\nconst OTHER_CERT = \"otherCert\";\nconst CLEAR_PROPS$H = [\n OTHER_CERT_FORMAT,\n OTHER_CERT\n];\nclass OtherCertificateFormat extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.otherCertFormat = pvutils.getParametersValue(parameters, OTHER_CERT_FORMAT, OtherCertificateFormat.defaultValues(OTHER_CERT_FORMAT));\n this.otherCert = pvutils.getParametersValue(parameters, OTHER_CERT, OtherCertificateFormat.defaultValues(OTHER_CERT));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case OTHER_CERT_FORMAT:\n return EMPTY_STRING;\n case OTHER_CERT:\n return new asn1js.Any();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.otherCertFormat || OTHER_CERT_FORMAT) }),\n new asn1js.Any({ name: (names.otherCert || OTHER_CERT) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$H);\n const asn1 = asn1js.compareSchema(schema, schema, OtherCertificateFormat.schema());\n AsnError.assertSchema(asn1, this.className);\n this.otherCertFormat = asn1.result.otherCertFormat.valueBlock.toString();\n this.otherCert = asn1.result.otherCert;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.otherCertFormat }),\n this.otherCert\n ]\n }));\n }\n toJSON() {\n const res = {\n otherCertFormat: this.otherCertFormat\n };\n if (!(this.otherCert instanceof asn1js.Any)) {\n res.otherCert = this.otherCert.toJSON();\n }\n return res;\n }\n}\n\nconst CERTIFICATES$1 = \"certificates\";\nconst CLEAR_PROPS$G = [\n CERTIFICATES$1,\n];\nclass CertificateSet extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.certificates = pvutils.getParametersValue(parameters, CERTIFICATES$1, CertificateSet.defaultValues(CERTIFICATES$1));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CERTIFICATES$1:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Set({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.certificates || CERTIFICATES$1),\n value: new asn1js.Choice({\n value: [\n Certificate.schema(),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Any()\n ]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.Sequence\n ]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: AttributeCertificateV2.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n value: OtherCertificateFormat.schema().valueBlock.value\n })\n ]\n })\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$G);\n const asn1 = asn1js.compareSchema(schema, schema, CertificateSet.schema());\n AsnError.assertSchema(asn1, this.className);\n this.certificates = Array.from(asn1.result.certificates || [], (element) => {\n const initialTagNumber = element.idBlock.tagNumber;\n if (element.idBlock.tagClass === 1)\n return new Certificate({ schema: element });\n const elementSequence = new asn1js.Sequence({\n value: element.valueBlock.value\n });\n switch (initialTagNumber) {\n case 1:\n if (elementSequence.valueBlock.value[0].valueBlock.value[0].valueBlock.valueDec === 1) {\n return new AttributeCertificateV2({ schema: elementSequence });\n }\n else {\n return new AttributeCertificateV1({ schema: elementSequence });\n }\n case 2:\n return new AttributeCertificateV2({ schema: elementSequence });\n case 3:\n return new OtherCertificateFormat({ schema: elementSequence });\n }\n return element;\n });\n }\n toSchema() {\n return (new asn1js.Set({\n value: Array.from(this.certificates, element => {\n switch (true) {\n case (element instanceof Certificate):\n return element.toSchema();\n case (element instanceof AttributeCertificateV1):\n return new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: element.toSchema().valueBlock.value\n });\n case (element instanceof AttributeCertificateV2):\n return new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: element.toSchema().valueBlock.value\n });\n case (element instanceof OtherCertificateFormat):\n return new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n value: element.toSchema().valueBlock.value\n });\n }\n return element.toSchema();\n })\n }));\n }\n toJSON() {\n return {\n certificates: Array.from(this.certificates, o => o.toJSON())\n };\n }\n}\nCertificateSet.CLASS_NAME = \"CertificateSet\";\n\nconst OTHER_REV_INFO_FORMAT = \"otherRevInfoFormat\";\nconst OTHER_REV_INFO = \"otherRevInfo\";\nconst CLEAR_PROPS$F = [\n OTHER_REV_INFO_FORMAT,\n OTHER_REV_INFO\n];\nclass OtherRevocationInfoFormat extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.otherRevInfoFormat = pvutils.getParametersValue(parameters, OTHER_REV_INFO_FORMAT, OtherRevocationInfoFormat.defaultValues(OTHER_REV_INFO_FORMAT));\n this.otherRevInfo = pvutils.getParametersValue(parameters, OTHER_REV_INFO, OtherRevocationInfoFormat.defaultValues(OTHER_REV_INFO));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case OTHER_REV_INFO_FORMAT:\n return EMPTY_STRING;\n case OTHER_REV_INFO:\n return new asn1js.Any();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.otherRevInfoFormat || OTHER_REV_INFO_FORMAT) }),\n new asn1js.Any({ name: (names.otherRevInfo || OTHER_REV_INFO) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$F);\n const asn1 = asn1js.compareSchema(schema, schema, OtherRevocationInfoFormat.schema());\n AsnError.assertSchema(asn1, this.className);\n this.otherRevInfoFormat = asn1.result.otherRevInfoFormat.valueBlock.toString();\n this.otherRevInfo = asn1.result.otherRevInfo;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.otherRevInfoFormat }),\n this.otherRevInfo\n ]\n }));\n }\n toJSON() {\n const res = {\n otherRevInfoFormat: this.otherRevInfoFormat\n };\n if (!(this.otherRevInfo instanceof asn1js.Any)) {\n res.otherRevInfo = this.otherRevInfo.toJSON();\n }\n return res;\n }\n}\nOtherRevocationInfoFormat.CLASS_NAME = \"OtherRevocationInfoFormat\";\n\nconst CRLS$3 = \"crls\";\nconst OTHER_REVOCATION_INFOS = \"otherRevocationInfos\";\nconst CLEAR_PROPS$E = [\n CRLS$3\n];\nclass RevocationInfoChoices extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.crls = pvutils.getParametersValue(parameters, CRLS$3, RevocationInfoChoices.defaultValues(CRLS$3));\n this.otherRevocationInfos = pvutils.getParametersValue(parameters, OTHER_REVOCATION_INFOS, RevocationInfoChoices.defaultValues(OTHER_REVOCATION_INFOS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CRLS$3:\n return [];\n case OTHER_REVOCATION_INFOS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Set({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.crls || EMPTY_STRING),\n value: new asn1js.Choice({\n value: [\n CertificateRevocationList.schema(),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.ObjectIdentifier(),\n new asn1js.Any()\n ]\n })\n ]\n })\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$E);\n const asn1 = asn1js.compareSchema(schema, schema, RevocationInfoChoices.schema({\n names: {\n crls: CRLS$3\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (asn1.result.crls) {\n for (const element of asn1.result.crls) {\n if (element.idBlock.tagClass === 1)\n this.crls.push(new CertificateRevocationList({ schema: element }));\n else\n this.otherRevocationInfos.push(new OtherRevocationInfoFormat({ schema: element }));\n }\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(...Array.from(this.crls, o => o.toSchema()));\n outputArray.push(...Array.from(this.otherRevocationInfos, element => {\n const schema = element.toSchema();\n schema.idBlock.tagClass = 3;\n schema.idBlock.tagNumber = 1;\n return schema;\n }));\n return (new asn1js.Set({\n value: outputArray\n }));\n }\n toJSON() {\n return {\n crls: Array.from(this.crls, o => o.toJSON()),\n otherRevocationInfos: Array.from(this.otherRevocationInfos, o => o.toJSON())\n };\n }\n}\nRevocationInfoChoices.CLASS_NAME = \"RevocationInfoChoices\";\n\nconst CERTS$3 = \"certs\";\nconst CRLS$2 = \"crls\";\nconst CLEAR_PROPS$D = [\n CERTS$3,\n CRLS$2,\n];\nclass OriginatorInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.crls = pvutils.getParametersValue(parameters, CRLS$2, OriginatorInfo.defaultValues(CRLS$2));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CERTS$3:\n return new CertificateSet();\n case CRLS$2:\n return new RevocationInfoChoices();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case CERTS$3:\n return (memberValue.certificates.length === 0);\n case CRLS$2:\n return ((memberValue.crls.length === 0) && (memberValue.otherRevocationInfos.length === 0));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n name: (names.certs || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: CertificateSet.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n name: (names.crls || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: RevocationInfoChoices.schema().valueBlock.value\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$D);\n const asn1 = asn1js.compareSchema(schema, schema, OriginatorInfo.schema({\n names: {\n certs: CERTS$3,\n crls: CRLS$2\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (CERTS$3 in asn1.result) {\n this.certs = new CertificateSet({\n schema: new asn1js.Set({\n value: asn1.result.certs.valueBlock.value\n })\n });\n }\n if (CRLS$2 in asn1.result) {\n this.crls = new RevocationInfoChoices({\n schema: new asn1js.Set({\n value: asn1.result.crls.valueBlock.value\n })\n });\n }\n }\n toSchema() {\n const sequenceValue = [];\n if (this.certs) {\n sequenceValue.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.certs.toSchema().valueBlock.value\n }));\n }\n if (this.crls) {\n sequenceValue.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: this.crls.toSchema().valueBlock.value\n }));\n }\n return (new asn1js.Sequence({\n value: sequenceValue\n }));\n }\n toJSON() {\n const res = {};\n if (this.certs) {\n res.certs = this.certs.toJSON();\n }\n if (this.crls) {\n res.crls = this.crls.toJSON();\n }\n return res;\n }\n}\nOriginatorInfo.CLASS_NAME = \"OriginatorInfo\";\n\nconst ISSUER = \"issuer\";\nconst SERIAL_NUMBER$2 = \"serialNumber\";\nconst CLEAR_PROPS$C = [\n ISSUER,\n SERIAL_NUMBER$2,\n];\nclass IssuerAndSerialNumber extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.issuer = pvutils.getParametersValue(parameters, ISSUER, IssuerAndSerialNumber.defaultValues(ISSUER));\n this.serialNumber = pvutils.getParametersValue(parameters, SERIAL_NUMBER$2, IssuerAndSerialNumber.defaultValues(SERIAL_NUMBER$2));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ISSUER:\n return new RelativeDistinguishedNames();\n case SERIAL_NUMBER$2:\n return new asn1js.Integer();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n RelativeDistinguishedNames.schema(names.issuer || {}),\n new asn1js.Integer({ name: (names.serialNumber || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$C);\n const asn1 = asn1js.compareSchema(schema, schema, IssuerAndSerialNumber.schema({\n names: {\n issuer: {\n names: {\n blockName: ISSUER\n }\n },\n serialNumber: SERIAL_NUMBER$2\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.issuer = new RelativeDistinguishedNames({ schema: asn1.result.issuer });\n this.serialNumber = asn1.result.serialNumber;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.issuer.toSchema(),\n this.serialNumber\n ]\n }));\n }\n toJSON() {\n return {\n issuer: this.issuer.toJSON(),\n serialNumber: this.serialNumber.toJSON(),\n };\n }\n}\nIssuerAndSerialNumber.CLASS_NAME = \"IssuerAndSerialNumber\";\n\nconst VARIANT$3 = \"variant\";\nconst VALUE$3 = \"value\";\nconst CLEAR_PROPS$B = [\n \"blockName\"\n];\nclass RecipientIdentifier extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.variant = pvutils.getParametersValue(parameters, VARIANT$3, RecipientIdentifier.defaultValues(VARIANT$3));\n if (VALUE$3 in parameters) {\n this.value = pvutils.getParametersValue(parameters, VALUE$3, RecipientIdentifier.defaultValues(VALUE$3));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VARIANT$3:\n return (-1);\n case VALUE$3:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VARIANT$3:\n return (memberValue === (-1));\n case VALUE$3:\n return (Object.keys(memberValue).length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Choice({\n value: [\n IssuerAndSerialNumber.schema({\n names: {\n blockName: (names.blockName || EMPTY_STRING)\n }\n }),\n new asn1js.Primitive({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$B);\n const asn1 = asn1js.compareSchema(schema, schema, RecipientIdentifier.schema({\n names: {\n blockName: \"blockName\"\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (asn1.result.blockName.idBlock.tagClass === 1) {\n this.variant = 1;\n this.value = new IssuerAndSerialNumber({ schema: asn1.result.blockName });\n }\n else {\n this.variant = 2;\n this.value = new asn1js.OctetString({ valueHex: asn1.result.blockName.valueBlock.valueHex });\n }\n }\n toSchema() {\n switch (this.variant) {\n case 1:\n if (!(this.value instanceof IssuerAndSerialNumber)) {\n throw new Error(\"Incorrect type of RecipientIdentifier.value. It should be IssuerAndSerialNumber.\");\n }\n return this.value.toSchema();\n case 2:\n if (!(this.value instanceof asn1js.OctetString)) {\n throw new Error(\"Incorrect type of RecipientIdentifier.value. It should be ASN.1 OctetString.\");\n }\n return new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n valueHex: this.value.valueBlock.valueHexView\n });\n default:\n return new asn1js.Any();\n }\n }\n toJSON() {\n const res = {\n variant: this.variant\n };\n if ((this.variant === 1 || this.variant === 2) && this.value) {\n res.value = this.value.toJSON();\n }\n return res;\n }\n}\nRecipientIdentifier.CLASS_NAME = \"RecipientIdentifier\";\n\nconst VERSION$c = \"version\";\nconst RID$1 = \"rid\";\nconst KEY_ENCRYPTION_ALGORITHM$3 = \"keyEncryptionAlgorithm\";\nconst ENCRYPTED_KEY$3 = \"encryptedKey\";\nconst RECIPIENT_CERTIFICATE$1 = \"recipientCertificate\";\nconst CLEAR_PROPS$A = [\n VERSION$c,\n RID$1,\n KEY_ENCRYPTION_ALGORITHM$3,\n ENCRYPTED_KEY$3,\n];\nclass KeyTransRecipientInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$c, KeyTransRecipientInfo.defaultValues(VERSION$c));\n this.rid = pvutils.getParametersValue(parameters, RID$1, KeyTransRecipientInfo.defaultValues(RID$1));\n this.keyEncryptionAlgorithm = pvutils.getParametersValue(parameters, KEY_ENCRYPTION_ALGORITHM$3, KeyTransRecipientInfo.defaultValues(KEY_ENCRYPTION_ALGORITHM$3));\n this.encryptedKey = pvutils.getParametersValue(parameters, ENCRYPTED_KEY$3, KeyTransRecipientInfo.defaultValues(ENCRYPTED_KEY$3));\n this.recipientCertificate = pvutils.getParametersValue(parameters, RECIPIENT_CERTIFICATE$1, KeyTransRecipientInfo.defaultValues(RECIPIENT_CERTIFICATE$1));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$c:\n return (-1);\n case RID$1:\n return {};\n case KEY_ENCRYPTION_ALGORITHM$3:\n return new AlgorithmIdentifier();\n case ENCRYPTED_KEY$3:\n return new asn1js.OctetString();\n case RECIPIENT_CERTIFICATE$1:\n return new Certificate();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$c:\n return (memberValue === KeyTransRecipientInfo.defaultValues(VERSION$c));\n case RID$1:\n return (Object.keys(memberValue).length === 0);\n case KEY_ENCRYPTION_ALGORITHM$3:\n case ENCRYPTED_KEY$3:\n return memberValue.isEqual(KeyTransRecipientInfo.defaultValues(memberName));\n case RECIPIENT_CERTIFICATE$1:\n return false;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n RecipientIdentifier.schema(names.rid || {}),\n AlgorithmIdentifier.schema(names.keyEncryptionAlgorithm || {}),\n new asn1js.OctetString({ name: (names.encryptedKey || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$A);\n const asn1 = asn1js.compareSchema(schema, schema, KeyTransRecipientInfo.schema({\n names: {\n version: VERSION$c,\n rid: {\n names: {\n blockName: RID$1\n }\n },\n keyEncryptionAlgorithm: {\n names: {\n blockName: KEY_ENCRYPTION_ALGORITHM$3\n }\n },\n encryptedKey: ENCRYPTED_KEY$3\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n if (asn1.result.rid.idBlock.tagClass === 3) {\n this.rid = new asn1js.OctetString({ valueHex: asn1.result.rid.valueBlock.valueHex });\n }\n else {\n this.rid = new IssuerAndSerialNumber({ schema: asn1.result.rid });\n }\n this.keyEncryptionAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.keyEncryptionAlgorithm });\n this.encryptedKey = asn1.result.encryptedKey;\n }\n toSchema() {\n const outputArray = [];\n if (this.rid instanceof IssuerAndSerialNumber) {\n this.version = 0;\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(this.rid.toSchema());\n }\n else {\n this.version = 2;\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n valueHex: this.rid.valueBlock.valueHexView\n }));\n }\n outputArray.push(this.keyEncryptionAlgorithm.toSchema());\n outputArray.push(this.encryptedKey);\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n return {\n version: this.version,\n rid: this.rid.toJSON(),\n keyEncryptionAlgorithm: this.keyEncryptionAlgorithm.toJSON(),\n encryptedKey: this.encryptedKey.toJSON(),\n };\n }\n}\nKeyTransRecipientInfo.CLASS_NAME = \"KeyTransRecipientInfo\";\n\nconst ALGORITHM = \"algorithm\";\nconst PUBLIC_KEY = \"publicKey\";\nconst CLEAR_PROPS$z = [\n ALGORITHM,\n PUBLIC_KEY\n];\nclass OriginatorPublicKey extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.algorithm = pvutils.getParametersValue(parameters, ALGORITHM, OriginatorPublicKey.defaultValues(ALGORITHM));\n this.publicKey = pvutils.getParametersValue(parameters, PUBLIC_KEY, OriginatorPublicKey.defaultValues(PUBLIC_KEY));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ALGORITHM:\n return new AlgorithmIdentifier();\n case PUBLIC_KEY:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case ALGORITHM:\n case PUBLIC_KEY:\n return (memberValue.isEqual(OriginatorPublicKey.defaultValues(memberName)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.algorithm || {}),\n new asn1js.BitString({ name: (names.publicKey || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$z);\n const asn1 = asn1js.compareSchema(schema, schema, OriginatorPublicKey.schema({\n names: {\n algorithm: {\n names: {\n blockName: ALGORITHM\n }\n },\n publicKey: PUBLIC_KEY\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.algorithm = new AlgorithmIdentifier({ schema: asn1.result.algorithm });\n this.publicKey = asn1.result.publicKey;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.algorithm.toSchema(),\n this.publicKey\n ]\n }));\n }\n toJSON() {\n return {\n algorithm: this.algorithm.toJSON(),\n publicKey: this.publicKey.toJSON(),\n };\n }\n}\nOriginatorPublicKey.CLASS_NAME = \"OriginatorPublicKey\";\n\nconst VARIANT$2 = \"variant\";\nconst VALUE$2 = \"value\";\nconst CLEAR_PROPS$y = [\n \"blockName\",\n];\nclass OriginatorIdentifierOrKey extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.variant = pvutils.getParametersValue(parameters, VARIANT$2, OriginatorIdentifierOrKey.defaultValues(VARIANT$2));\n if (VALUE$2 in parameters) {\n this.value = pvutils.getParametersValue(parameters, VALUE$2, OriginatorIdentifierOrKey.defaultValues(VALUE$2));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VARIANT$2:\n return (-1);\n case VALUE$2:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VARIANT$2:\n return (memberValue === (-1));\n case VALUE$2:\n return (Object.keys(memberValue).length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Choice({\n value: [\n IssuerAndSerialNumber.schema({\n names: {\n blockName: (names.blockName || EMPTY_STRING)\n }\n }),\n new asn1js.Primitive({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n name: (names.blockName || EMPTY_STRING)\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n name: (names.blockName || EMPTY_STRING),\n value: OriginatorPublicKey.schema().valueBlock.value\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$y);\n const asn1 = asn1js.compareSchema(schema, schema, OriginatorIdentifierOrKey.schema({\n names: {\n blockName: \"blockName\"\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (asn1.result.blockName.idBlock.tagClass === 1) {\n this.variant = 1;\n this.value = new IssuerAndSerialNumber({ schema: asn1.result.blockName });\n }\n else {\n if (asn1.result.blockName.idBlock.tagNumber === 0) {\n asn1.result.blockName.idBlock.tagClass = 1;\n asn1.result.blockName.idBlock.tagNumber = 4;\n this.variant = 2;\n this.value = asn1.result.blockName;\n }\n else {\n this.variant = 3;\n this.value = new OriginatorPublicKey({\n schema: new asn1js.Sequence({\n value: asn1.result.blockName.valueBlock.value\n })\n });\n }\n }\n }\n toSchema() {\n switch (this.variant) {\n case 1:\n return this.value.toSchema();\n case 2:\n this.value.idBlock.tagClass = 3;\n this.value.idBlock.tagNumber = 0;\n return this.value;\n case 3:\n {\n const _schema = this.value.toSchema();\n _schema.idBlock.tagClass = 3;\n _schema.idBlock.tagNumber = 1;\n return _schema;\n }\n default:\n return new asn1js.Any();\n }\n }\n toJSON() {\n const res = {\n variant: this.variant\n };\n if ((this.variant === 1) || (this.variant === 2) || (this.variant === 3)) {\n res.value = this.value.toJSON();\n }\n return res;\n }\n}\nOriginatorIdentifierOrKey.CLASS_NAME = \"OriginatorIdentifierOrKey\";\n\nconst KEY_ATTR_ID = \"keyAttrId\";\nconst KEY_ATTR = \"keyAttr\";\nconst CLEAR_PROPS$x = [\n KEY_ATTR_ID,\n KEY_ATTR,\n];\nclass OtherKeyAttribute extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.keyAttrId = pvutils.getParametersValue(parameters, KEY_ATTR_ID, OtherKeyAttribute.defaultValues(KEY_ATTR_ID));\n if (KEY_ATTR in parameters) {\n this.keyAttr = pvutils.getParametersValue(parameters, KEY_ATTR, OtherKeyAttribute.defaultValues(KEY_ATTR));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case KEY_ATTR_ID:\n return EMPTY_STRING;\n case KEY_ATTR:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case KEY_ATTR_ID:\n return (typeof memberValue === \"string\" && memberValue === EMPTY_STRING);\n case KEY_ATTR:\n return (Object.keys(memberValue).length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n optional: (names.optional || true),\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.keyAttrId || EMPTY_STRING) }),\n new asn1js.Any({\n optional: true,\n name: (names.keyAttr || EMPTY_STRING)\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$x);\n const asn1 = asn1js.compareSchema(schema, schema, OtherKeyAttribute.schema({\n names: {\n keyAttrId: KEY_ATTR_ID,\n keyAttr: KEY_ATTR\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.keyAttrId = asn1.result.keyAttrId.valueBlock.toString();\n if (KEY_ATTR in asn1.result) {\n this.keyAttr = asn1.result.keyAttr;\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.keyAttrId }));\n if (KEY_ATTR in this) {\n outputArray.push(this.keyAttr);\n }\n return (new asn1js.Sequence({\n value: outputArray,\n }));\n }\n toJSON() {\n const res = {\n keyAttrId: this.keyAttrId\n };\n if (KEY_ATTR in this) {\n res.keyAttr = this.keyAttr.toJSON();\n }\n return res;\n }\n}\nOtherKeyAttribute.CLASS_NAME = \"OtherKeyAttribute\";\n\nconst SUBJECT_KEY_IDENTIFIER = \"subjectKeyIdentifier\";\nconst DATE$1 = \"date\";\nconst OTHER$1 = \"other\";\nconst CLEAR_PROPS$w = [\n SUBJECT_KEY_IDENTIFIER,\n DATE$1,\n OTHER$1,\n];\nclass RecipientKeyIdentifier extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.subjectKeyIdentifier = pvutils.getParametersValue(parameters, SUBJECT_KEY_IDENTIFIER, RecipientKeyIdentifier.defaultValues(SUBJECT_KEY_IDENTIFIER));\n if (DATE$1 in parameters) {\n this.date = pvutils.getParametersValue(parameters, DATE$1, RecipientKeyIdentifier.defaultValues(DATE$1));\n }\n if (OTHER$1 in parameters) {\n this.other = pvutils.getParametersValue(parameters, OTHER$1, RecipientKeyIdentifier.defaultValues(OTHER$1));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case SUBJECT_KEY_IDENTIFIER:\n return new asn1js.OctetString();\n case DATE$1:\n return new asn1js.GeneralizedTime();\n case OTHER$1:\n return new OtherKeyAttribute();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case SUBJECT_KEY_IDENTIFIER:\n return (memberValue.isEqual(RecipientKeyIdentifier.defaultValues(SUBJECT_KEY_IDENTIFIER)));\n case DATE$1:\n return ((memberValue.year === 0) &&\n (memberValue.month === 0) &&\n (memberValue.day === 0) &&\n (memberValue.hour === 0) &&\n (memberValue.minute === 0) &&\n (memberValue.second === 0) &&\n (memberValue.millisecond === 0));\n case OTHER$1:\n return ((memberValue.keyAttrId === EMPTY_STRING) && ((\"keyAttr\" in memberValue) === false));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.OctetString({ name: (names.subjectKeyIdentifier || EMPTY_STRING) }),\n new asn1js.GeneralizedTime({\n optional: true,\n name: (names.date || EMPTY_STRING)\n }),\n OtherKeyAttribute.schema(names.other || {})\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$w);\n const asn1 = asn1js.compareSchema(schema, schema, RecipientKeyIdentifier.schema({\n names: {\n subjectKeyIdentifier: SUBJECT_KEY_IDENTIFIER,\n date: DATE$1,\n other: {\n names: {\n blockName: OTHER$1\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.subjectKeyIdentifier = asn1.result.subjectKeyIdentifier;\n if (DATE$1 in asn1.result)\n this.date = asn1.result.date;\n if (OTHER$1 in asn1.result)\n this.other = new OtherKeyAttribute({ schema: asn1.result.other });\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.subjectKeyIdentifier);\n if (this.date) {\n outputArray.push(this.date);\n }\n if (this.other) {\n outputArray.push(this.other.toSchema());\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n subjectKeyIdentifier: this.subjectKeyIdentifier.toJSON()\n };\n if (this.date) {\n res.date = this.date.toJSON();\n }\n if (this.other) {\n res.other = this.other.toJSON();\n }\n return res;\n }\n}\nRecipientKeyIdentifier.CLASS_NAME = \"RecipientKeyIdentifier\";\n\nconst VARIANT$1 = \"variant\";\nconst VALUE$1 = \"value\";\nconst CLEAR_PROPS$v = [\n \"blockName\",\n];\nclass KeyAgreeRecipientIdentifier extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.variant = pvutils.getParametersValue(parameters, VARIANT$1, KeyAgreeRecipientIdentifier.defaultValues(VARIANT$1));\n this.value = pvutils.getParametersValue(parameters, VALUE$1, KeyAgreeRecipientIdentifier.defaultValues(VALUE$1));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VARIANT$1:\n return (-1);\n case VALUE$1:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VARIANT$1:\n return (memberValue === (-1));\n case VALUE$1:\n return (Object.keys(memberValue).length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Choice({\n value: [\n IssuerAndSerialNumber.schema(names.issuerAndSerialNumber || {\n names: {\n blockName: (names.blockName || EMPTY_STRING)\n }\n }),\n new asn1js.Constructed({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: RecipientKeyIdentifier.schema(names.rKeyId || {\n names: {\n blockName: (names.blockName || EMPTY_STRING)\n }\n }).valueBlock.value\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$v);\n const asn1 = asn1js.compareSchema(schema, schema, KeyAgreeRecipientIdentifier.schema({\n names: {\n blockName: \"blockName\"\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (asn1.result.blockName.idBlock.tagClass === 1) {\n this.variant = 1;\n this.value = new IssuerAndSerialNumber({ schema: asn1.result.blockName });\n }\n else {\n this.variant = 2;\n this.value = new RecipientKeyIdentifier({\n schema: new asn1js.Sequence({\n value: asn1.result.blockName.valueBlock.value\n })\n });\n }\n }\n toSchema() {\n switch (this.variant) {\n case 1:\n return this.value.toSchema();\n case 2:\n return new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.value.toSchema().valueBlock.value\n });\n default:\n return new asn1js.Any();\n }\n }\n toJSON() {\n const res = {\n variant: this.variant,\n };\n if ((this.variant === 1) || (this.variant === 2)) {\n res.value = this.value.toJSON();\n }\n return res;\n }\n}\nKeyAgreeRecipientIdentifier.CLASS_NAME = \"KeyAgreeRecipientIdentifier\";\n\nconst RID = \"rid\";\nconst ENCRYPTED_KEY$2 = \"encryptedKey\";\nconst CLEAR_PROPS$u = [\n RID,\n ENCRYPTED_KEY$2,\n];\nclass RecipientEncryptedKey extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.rid = pvutils.getParametersValue(parameters, RID, RecipientEncryptedKey.defaultValues(RID));\n this.encryptedKey = pvutils.getParametersValue(parameters, ENCRYPTED_KEY$2, RecipientEncryptedKey.defaultValues(ENCRYPTED_KEY$2));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case RID:\n return new KeyAgreeRecipientIdentifier();\n case ENCRYPTED_KEY$2:\n return new asn1js.OctetString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case RID:\n return ((memberValue.variant === (-1)) && ((\"value\" in memberValue) === false));\n case ENCRYPTED_KEY$2:\n return (memberValue.isEqual(RecipientEncryptedKey.defaultValues(ENCRYPTED_KEY$2)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n KeyAgreeRecipientIdentifier.schema(names.rid || {}),\n new asn1js.OctetString({ name: (names.encryptedKey || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$u);\n const asn1 = asn1js.compareSchema(schema, schema, RecipientEncryptedKey.schema({\n names: {\n rid: {\n names: {\n blockName: RID\n }\n },\n encryptedKey: ENCRYPTED_KEY$2\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.rid = new KeyAgreeRecipientIdentifier({ schema: asn1.result.rid });\n this.encryptedKey = asn1.result.encryptedKey;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.rid.toSchema(),\n this.encryptedKey\n ]\n }));\n }\n toJSON() {\n return {\n rid: this.rid.toJSON(),\n encryptedKey: this.encryptedKey.toJSON(),\n };\n }\n}\nRecipientEncryptedKey.CLASS_NAME = \"RecipientEncryptedKey\";\n\nconst ENCRYPTED_KEYS = \"encryptedKeys\";\nconst RECIPIENT_ENCRYPTED_KEYS = \"RecipientEncryptedKeys\";\nconst CLEAR_PROPS$t = [\n RECIPIENT_ENCRYPTED_KEYS,\n];\nclass RecipientEncryptedKeys extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.encryptedKeys = pvutils.getParametersValue(parameters, ENCRYPTED_KEYS, RecipientEncryptedKeys.defaultValues(ENCRYPTED_KEYS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ENCRYPTED_KEYS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case ENCRYPTED_KEYS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.RecipientEncryptedKeys || EMPTY_STRING),\n value: RecipientEncryptedKey.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$t);\n const asn1 = asn1js.compareSchema(schema, schema, RecipientEncryptedKeys.schema({\n names: {\n RecipientEncryptedKeys: RECIPIENT_ENCRYPTED_KEYS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.encryptedKeys = Array.from(asn1.result.RecipientEncryptedKeys, element => new RecipientEncryptedKey({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.encryptedKeys, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n encryptedKeys: Array.from(this.encryptedKeys, o => o.toJSON())\n };\n }\n}\nRecipientEncryptedKeys.CLASS_NAME = \"RecipientEncryptedKeys\";\n\nconst VERSION$b = \"version\";\nconst ORIGINATOR = \"originator\";\nconst UKM = \"ukm\";\nconst KEY_ENCRYPTION_ALGORITHM$2 = \"keyEncryptionAlgorithm\";\nconst RECIPIENT_ENCRYPTED_KEY = \"recipientEncryptedKeys\";\nconst RECIPIENT_CERTIFICATE = \"recipientCertificate\";\nconst RECIPIENT_PUBLIC_KEY = \"recipientPublicKey\";\nconst CLEAR_PROPS$s = [\n VERSION$b,\n ORIGINATOR,\n UKM,\n KEY_ENCRYPTION_ALGORITHM$2,\n RECIPIENT_ENCRYPTED_KEY,\n];\nclass KeyAgreeRecipientInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$b, KeyAgreeRecipientInfo.defaultValues(VERSION$b));\n this.originator = pvutils.getParametersValue(parameters, ORIGINATOR, KeyAgreeRecipientInfo.defaultValues(ORIGINATOR));\n if (UKM in parameters) {\n this.ukm = pvutils.getParametersValue(parameters, UKM, KeyAgreeRecipientInfo.defaultValues(UKM));\n }\n this.keyEncryptionAlgorithm = pvutils.getParametersValue(parameters, KEY_ENCRYPTION_ALGORITHM$2, KeyAgreeRecipientInfo.defaultValues(KEY_ENCRYPTION_ALGORITHM$2));\n this.recipientEncryptedKeys = pvutils.getParametersValue(parameters, RECIPIENT_ENCRYPTED_KEY, KeyAgreeRecipientInfo.defaultValues(RECIPIENT_ENCRYPTED_KEY));\n this.recipientCertificate = pvutils.getParametersValue(parameters, RECIPIENT_CERTIFICATE, KeyAgreeRecipientInfo.defaultValues(RECIPIENT_CERTIFICATE));\n this.recipientPublicKey = pvutils.getParametersValue(parameters, RECIPIENT_PUBLIC_KEY, KeyAgreeRecipientInfo.defaultValues(RECIPIENT_PUBLIC_KEY));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$b:\n return 0;\n case ORIGINATOR:\n return new OriginatorIdentifierOrKey();\n case UKM:\n return new asn1js.OctetString();\n case KEY_ENCRYPTION_ALGORITHM$2:\n return new AlgorithmIdentifier();\n case RECIPIENT_ENCRYPTED_KEY:\n return new RecipientEncryptedKeys();\n case RECIPIENT_CERTIFICATE:\n return new Certificate();\n case RECIPIENT_PUBLIC_KEY:\n return null;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$b:\n return (memberValue === 0);\n case ORIGINATOR:\n return ((memberValue.variant === (-1)) && ((\"value\" in memberValue) === false));\n case UKM:\n return (memberValue.isEqual(KeyAgreeRecipientInfo.defaultValues(UKM)));\n case KEY_ENCRYPTION_ALGORITHM$2:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case RECIPIENT_ENCRYPTED_KEY:\n return (memberValue.encryptedKeys.length === 0);\n case RECIPIENT_CERTIFICATE:\n return false;\n case RECIPIENT_PUBLIC_KEY:\n return false;\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: names.blockName || EMPTY_STRING,\n value: [\n new asn1js.Integer({ name: names.version || EMPTY_STRING }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n OriginatorIdentifierOrKey.schema(names.originator || {})\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [new asn1js.OctetString({ name: names.ukm || EMPTY_STRING })]\n }),\n AlgorithmIdentifier.schema(names.keyEncryptionAlgorithm || {}),\n RecipientEncryptedKeys.schema(names.recipientEncryptedKeys || {})\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$s);\n const asn1 = asn1js.compareSchema(schema, schema, KeyAgreeRecipientInfo.schema({\n names: {\n version: VERSION$b,\n originator: {\n names: {\n blockName: ORIGINATOR\n }\n },\n ukm: UKM,\n keyEncryptionAlgorithm: {\n names: {\n blockName: KEY_ENCRYPTION_ALGORITHM$2\n }\n },\n recipientEncryptedKeys: {\n names: {\n blockName: RECIPIENT_ENCRYPTED_KEY\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.originator = new OriginatorIdentifierOrKey({ schema: asn1.result.originator });\n if (UKM in asn1.result)\n this.ukm = asn1.result.ukm;\n this.keyEncryptionAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.keyEncryptionAlgorithm });\n this.recipientEncryptedKeys = new RecipientEncryptedKeys({ schema: asn1.result.recipientEncryptedKeys });\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.originator.toSchema()]\n }));\n if (this.ukm) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [this.ukm]\n }));\n }\n outputArray.push(this.keyEncryptionAlgorithm.toSchema());\n outputArray.push(this.recipientEncryptedKeys.toSchema());\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n version: this.version,\n originator: this.originator.toJSON(),\n keyEncryptionAlgorithm: this.keyEncryptionAlgorithm.toJSON(),\n recipientEncryptedKeys: this.recipientEncryptedKeys.toJSON(),\n };\n if (this.ukm) {\n res.ukm = this.ukm.toJSON();\n }\n return res;\n }\n}\nKeyAgreeRecipientInfo.CLASS_NAME = \"KeyAgreeRecipientInfo\";\n\nconst KEY_IDENTIFIER = \"keyIdentifier\";\nconst DATE = \"date\";\nconst OTHER = \"other\";\nconst CLEAR_PROPS$r = [\n KEY_IDENTIFIER,\n DATE,\n OTHER,\n];\nclass KEKIdentifier extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.keyIdentifier = pvutils.getParametersValue(parameters, KEY_IDENTIFIER, KEKIdentifier.defaultValues(KEY_IDENTIFIER));\n if (DATE in parameters) {\n this.date = pvutils.getParametersValue(parameters, DATE, KEKIdentifier.defaultValues(DATE));\n }\n if (OTHER in parameters) {\n this.other = pvutils.getParametersValue(parameters, OTHER, KEKIdentifier.defaultValues(OTHER));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case KEY_IDENTIFIER:\n return new asn1js.OctetString();\n case DATE:\n return new asn1js.GeneralizedTime();\n case OTHER:\n return new OtherKeyAttribute();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case KEY_IDENTIFIER:\n return (memberValue.isEqual(KEKIdentifier.defaultValues(KEY_IDENTIFIER)));\n case DATE:\n return ((memberValue.year === 0) &&\n (memberValue.month === 0) &&\n (memberValue.day === 0) &&\n (memberValue.hour === 0) &&\n (memberValue.minute === 0) &&\n (memberValue.second === 0) &&\n (memberValue.millisecond === 0));\n case OTHER:\n return ((memberValue.compareWithDefault(\"keyAttrId\", memberValue.keyAttrId)) &&\n ((\"keyAttr\" in memberValue) === false));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.OctetString({ name: (names.keyIdentifier || EMPTY_STRING) }),\n new asn1js.GeneralizedTime({\n optional: true,\n name: (names.date || EMPTY_STRING)\n }),\n OtherKeyAttribute.schema(names.other || {})\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$r);\n const asn1 = asn1js.compareSchema(schema, schema, KEKIdentifier.schema({\n names: {\n keyIdentifier: KEY_IDENTIFIER,\n date: DATE,\n other: {\n names: {\n blockName: OTHER\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.keyIdentifier = asn1.result.keyIdentifier;\n if (DATE in asn1.result)\n this.date = asn1.result.date;\n if (OTHER in asn1.result)\n this.other = new OtherKeyAttribute({ schema: asn1.result.other });\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.keyIdentifier);\n if (this.date) {\n outputArray.push(this.date);\n }\n if (this.other) {\n outputArray.push(this.other.toSchema());\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n keyIdentifier: this.keyIdentifier.toJSON()\n };\n if (this.date) {\n res.date = this.date;\n }\n if (this.other) {\n res.other = this.other.toJSON();\n }\n return res;\n }\n}\nKEKIdentifier.CLASS_NAME = \"KEKIdentifier\";\n\nconst VERSION$a = \"version\";\nconst KEK_ID = \"kekid\";\nconst KEY_ENCRYPTION_ALGORITHM$1 = \"keyEncryptionAlgorithm\";\nconst ENCRYPTED_KEY$1 = \"encryptedKey\";\nconst PER_DEFINED_KEK = \"preDefinedKEK\";\nconst CLEAR_PROPS$q = [\n VERSION$a,\n KEK_ID,\n KEY_ENCRYPTION_ALGORITHM$1,\n ENCRYPTED_KEY$1,\n];\nclass KEKRecipientInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$a, KEKRecipientInfo.defaultValues(VERSION$a));\n this.kekid = pvutils.getParametersValue(parameters, KEK_ID, KEKRecipientInfo.defaultValues(KEK_ID));\n this.keyEncryptionAlgorithm = pvutils.getParametersValue(parameters, KEY_ENCRYPTION_ALGORITHM$1, KEKRecipientInfo.defaultValues(KEY_ENCRYPTION_ALGORITHM$1));\n this.encryptedKey = pvutils.getParametersValue(parameters, ENCRYPTED_KEY$1, KEKRecipientInfo.defaultValues(ENCRYPTED_KEY$1));\n this.preDefinedKEK = pvutils.getParametersValue(parameters, PER_DEFINED_KEK, KEKRecipientInfo.defaultValues(PER_DEFINED_KEK));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$a:\n return 0;\n case KEK_ID:\n return new KEKIdentifier();\n case KEY_ENCRYPTION_ALGORITHM$1:\n return new AlgorithmIdentifier();\n case ENCRYPTED_KEY$1:\n return new asn1js.OctetString();\n case PER_DEFINED_KEK:\n return EMPTY_BUFFER;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case \"KEKRecipientInfo\":\n return (memberValue === KEKRecipientInfo.defaultValues(VERSION$a));\n case KEK_ID:\n return ((memberValue.compareWithDefault(\"keyIdentifier\", memberValue.keyIdentifier)) &&\n ((\"date\" in memberValue) === false) &&\n ((\"other\" in memberValue) === false));\n case KEY_ENCRYPTION_ALGORITHM$1:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case ENCRYPTED_KEY$1:\n return (memberValue.isEqual(KEKRecipientInfo.defaultValues(ENCRYPTED_KEY$1)));\n case PER_DEFINED_KEK:\n return (memberValue.byteLength === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n KEKIdentifier.schema(names.kekid || {}),\n AlgorithmIdentifier.schema(names.keyEncryptionAlgorithm || {}),\n new asn1js.OctetString({ name: (names.encryptedKey || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$q);\n const asn1 = asn1js.compareSchema(schema, schema, KEKRecipientInfo.schema({\n names: {\n version: VERSION$a,\n kekid: {\n names: {\n blockName: KEK_ID\n }\n },\n keyEncryptionAlgorithm: {\n names: {\n blockName: KEY_ENCRYPTION_ALGORITHM$1\n }\n },\n encryptedKey: ENCRYPTED_KEY$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.kekid = new KEKIdentifier({ schema: asn1.result.kekid });\n this.keyEncryptionAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.keyEncryptionAlgorithm });\n this.encryptedKey = asn1.result.encryptedKey;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.Integer({ value: this.version }),\n this.kekid.toSchema(),\n this.keyEncryptionAlgorithm.toSchema(),\n this.encryptedKey\n ]\n }));\n }\n toJSON() {\n return {\n version: this.version,\n kekid: this.kekid.toJSON(),\n keyEncryptionAlgorithm: this.keyEncryptionAlgorithm.toJSON(),\n encryptedKey: this.encryptedKey.toJSON(),\n };\n }\n}\nKEKRecipientInfo.CLASS_NAME = \"KEKRecipientInfo\";\n\nconst VERSION$9 = \"version\";\nconst KEY_DERIVATION_ALGORITHM = \"keyDerivationAlgorithm\";\nconst KEY_ENCRYPTION_ALGORITHM = \"keyEncryptionAlgorithm\";\nconst ENCRYPTED_KEY = \"encryptedKey\";\nconst PASSWORD = \"password\";\nconst CLEAR_PROPS$p = [\n VERSION$9,\n KEY_DERIVATION_ALGORITHM,\n KEY_ENCRYPTION_ALGORITHM,\n ENCRYPTED_KEY\n];\nclass PasswordRecipientinfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$9, PasswordRecipientinfo.defaultValues(VERSION$9));\n if (KEY_DERIVATION_ALGORITHM in parameters) {\n this.keyDerivationAlgorithm = pvutils.getParametersValue(parameters, KEY_DERIVATION_ALGORITHM, PasswordRecipientinfo.defaultValues(KEY_DERIVATION_ALGORITHM));\n }\n this.keyEncryptionAlgorithm = pvutils.getParametersValue(parameters, KEY_ENCRYPTION_ALGORITHM, PasswordRecipientinfo.defaultValues(KEY_ENCRYPTION_ALGORITHM));\n this.encryptedKey = pvutils.getParametersValue(parameters, ENCRYPTED_KEY, PasswordRecipientinfo.defaultValues(ENCRYPTED_KEY));\n this.password = pvutils.getParametersValue(parameters, PASSWORD, PasswordRecipientinfo.defaultValues(PASSWORD));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$9:\n return (-1);\n case KEY_DERIVATION_ALGORITHM:\n return new AlgorithmIdentifier();\n case KEY_ENCRYPTION_ALGORITHM:\n return new AlgorithmIdentifier();\n case ENCRYPTED_KEY:\n return new asn1js.OctetString();\n case PASSWORD:\n return EMPTY_BUFFER;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$9:\n return (memberValue === (-1));\n case KEY_DERIVATION_ALGORITHM:\n case KEY_ENCRYPTION_ALGORITHM:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case ENCRYPTED_KEY:\n return (memberValue.isEqual(PasswordRecipientinfo.defaultValues(ENCRYPTED_KEY)));\n case PASSWORD:\n return (memberValue.byteLength === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n new asn1js.Constructed({\n name: (names.keyDerivationAlgorithm || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: AlgorithmIdentifier.schema().valueBlock.value\n }),\n AlgorithmIdentifier.schema(names.keyEncryptionAlgorithm || {}),\n new asn1js.OctetString({ name: (names.encryptedKey || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$p);\n const asn1 = asn1js.compareSchema(schema, schema, PasswordRecipientinfo.schema({\n names: {\n version: VERSION$9,\n keyDerivationAlgorithm: KEY_DERIVATION_ALGORITHM,\n keyEncryptionAlgorithm: {\n names: {\n blockName: KEY_ENCRYPTION_ALGORITHM\n }\n },\n encryptedKey: ENCRYPTED_KEY\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n if (KEY_DERIVATION_ALGORITHM in asn1.result) {\n this.keyDerivationAlgorithm = new AlgorithmIdentifier({\n schema: new asn1js.Sequence({\n value: asn1.result.keyDerivationAlgorithm.valueBlock.value\n })\n });\n }\n this.keyEncryptionAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.keyEncryptionAlgorithm });\n this.encryptedKey = asn1.result.encryptedKey;\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n if (this.keyDerivationAlgorithm) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.keyDerivationAlgorithm.toSchema().valueBlock.value\n }));\n }\n outputArray.push(this.keyEncryptionAlgorithm.toSchema());\n outputArray.push(this.encryptedKey);\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n version: this.version,\n keyEncryptionAlgorithm: this.keyEncryptionAlgorithm.toJSON(),\n encryptedKey: this.encryptedKey.toJSON(),\n };\n if (this.keyDerivationAlgorithm) {\n res.keyDerivationAlgorithm = this.keyDerivationAlgorithm.toJSON();\n }\n return res;\n }\n}\nPasswordRecipientinfo.CLASS_NAME = \"PasswordRecipientInfo\";\n\nconst ORI_TYPE = \"oriType\";\nconst ORI_VALUE = \"oriValue\";\nconst CLEAR_PROPS$o = [\n ORI_TYPE,\n ORI_VALUE\n];\nclass OtherRecipientInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.oriType = pvutils.getParametersValue(parameters, ORI_TYPE, OtherRecipientInfo.defaultValues(ORI_TYPE));\n this.oriValue = pvutils.getParametersValue(parameters, ORI_VALUE, OtherRecipientInfo.defaultValues(ORI_VALUE));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case ORI_TYPE:\n return EMPTY_STRING;\n case ORI_VALUE:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case ORI_TYPE:\n return (memberValue === EMPTY_STRING);\n case ORI_VALUE:\n return (Object.keys(memberValue).length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.oriType || EMPTY_STRING) }),\n new asn1js.Any({ name: (names.oriValue || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$o);\n const asn1 = asn1js.compareSchema(schema, schema, OtherRecipientInfo.schema({\n names: {\n oriType: ORI_TYPE,\n oriValue: ORI_VALUE\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.oriType = asn1.result.oriType.valueBlock.toString();\n this.oriValue = asn1.result.oriValue;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.oriType }),\n this.oriValue\n ]\n }));\n }\n toJSON() {\n const res = {\n oriType: this.oriType\n };\n if (!OtherRecipientInfo.compareWithDefault(ORI_VALUE, this.oriValue)) {\n res.oriValue = this.oriValue.toJSON();\n }\n return res;\n }\n}\nOtherRecipientInfo.CLASS_NAME = \"OtherRecipientInfo\";\n\nconst VARIANT = \"variant\";\nconst VALUE = \"value\";\nconst CLEAR_PROPS$n = [\n \"blockName\"\n];\nclass RecipientInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.variant = pvutils.getParametersValue(parameters, VARIANT, RecipientInfo.defaultValues(VARIANT));\n if (VALUE in parameters) {\n this.value = pvutils.getParametersValue(parameters, VALUE, RecipientInfo.defaultValues(VALUE));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VARIANT:\n return (-1);\n case VALUE:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VARIANT:\n return (memberValue === RecipientInfo.defaultValues(memberName));\n case VALUE:\n return (Object.keys(memberValue).length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Choice({\n value: [\n KeyTransRecipientInfo.schema({\n names: {\n blockName: (names.blockName || EMPTY_STRING)\n }\n }),\n new asn1js.Constructed({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: KeyAgreeRecipientInfo.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: KEKRecipientInfo.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 3\n },\n value: PasswordRecipientinfo.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n name: (names.blockName || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 4\n },\n value: OtherRecipientInfo.schema().valueBlock.value\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$n);\n const asn1 = asn1js.compareSchema(schema, schema, RecipientInfo.schema({\n names: {\n blockName: \"blockName\"\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (asn1.result.blockName.idBlock.tagClass === 1) {\n this.variant = 1;\n this.value = new KeyTransRecipientInfo({ schema: asn1.result.blockName });\n }\n else {\n const blockSequence = new asn1js.Sequence({\n value: asn1.result.blockName.valueBlock.value\n });\n switch (asn1.result.blockName.idBlock.tagNumber) {\n case 1:\n this.variant = 2;\n this.value = new KeyAgreeRecipientInfo({ schema: blockSequence });\n break;\n case 2:\n this.variant = 3;\n this.value = new KEKRecipientInfo({ schema: blockSequence });\n break;\n case 3:\n this.variant = 4;\n this.value = new PasswordRecipientinfo({ schema: blockSequence });\n break;\n case 4:\n this.variant = 5;\n this.value = new OtherRecipientInfo({ schema: blockSequence });\n break;\n default:\n throw new Error(\"Incorrect structure of RecipientInfo block\");\n }\n }\n }\n toSchema() {\n ParameterError.assertEmpty(this.value, \"value\", \"RecipientInfo\");\n const _schema = this.value.toSchema();\n switch (this.variant) {\n case 1:\n return _schema;\n case 2:\n case 3:\n case 4:\n _schema.idBlock.tagClass = 3;\n _schema.idBlock.tagNumber = (this.variant - 1);\n return _schema;\n default:\n return new asn1js.Any();\n }\n }\n toJSON() {\n const res = {\n variant: this.variant\n };\n if (this.value && (this.variant >= 1) && (this.variant <= 4)) {\n res.value = this.value.toJSON();\n }\n return res;\n }\n}\nRecipientInfo.CLASS_NAME = \"RecipientInfo\";\n\nconst HASH_ALGORITHM$2 = \"hashAlgorithm\";\nconst MASK_GEN_ALGORITHM = \"maskGenAlgorithm\";\nconst P_SOURCE_ALGORITHM = \"pSourceAlgorithm\";\nconst CLEAR_PROPS$m = [\n HASH_ALGORITHM$2,\n MASK_GEN_ALGORITHM,\n P_SOURCE_ALGORITHM\n];\nclass RSAESOAEPParams extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.hashAlgorithm = pvutils.getParametersValue(parameters, HASH_ALGORITHM$2, RSAESOAEPParams.defaultValues(HASH_ALGORITHM$2));\n this.maskGenAlgorithm = pvutils.getParametersValue(parameters, MASK_GEN_ALGORITHM, RSAESOAEPParams.defaultValues(MASK_GEN_ALGORITHM));\n this.pSourceAlgorithm = pvutils.getParametersValue(parameters, P_SOURCE_ALGORITHM, RSAESOAEPParams.defaultValues(P_SOURCE_ALGORITHM));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case HASH_ALGORITHM$2:\n return new AlgorithmIdentifier({\n algorithmId: \"1.3.14.3.2.26\",\n algorithmParams: new asn1js.Null()\n });\n case MASK_GEN_ALGORITHM:\n return new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.1.8\",\n algorithmParams: (new AlgorithmIdentifier({\n algorithmId: \"1.3.14.3.2.26\",\n algorithmParams: new asn1js.Null()\n })).toSchema()\n });\n case P_SOURCE_ALGORITHM:\n return new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.1.9\",\n algorithmParams: new asn1js.OctetString({ valueHex: (new Uint8Array([0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09])).buffer })\n });\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n optional: true,\n value: [AlgorithmIdentifier.schema(names.hashAlgorithm || {})]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n optional: true,\n value: [AlgorithmIdentifier.schema(names.maskGenAlgorithm || {})]\n }),\n new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n optional: true,\n value: [AlgorithmIdentifier.schema(names.pSourceAlgorithm || {})]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$m);\n const asn1 = asn1js.compareSchema(schema, schema, RSAESOAEPParams.schema({\n names: {\n hashAlgorithm: {\n names: {\n blockName: HASH_ALGORITHM$2\n }\n },\n maskGenAlgorithm: {\n names: {\n blockName: MASK_GEN_ALGORITHM\n }\n },\n pSourceAlgorithm: {\n names: {\n blockName: P_SOURCE_ALGORITHM\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n if (HASH_ALGORITHM$2 in asn1.result)\n this.hashAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.hashAlgorithm });\n if (MASK_GEN_ALGORITHM in asn1.result)\n this.maskGenAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.maskGenAlgorithm });\n if (P_SOURCE_ALGORITHM in asn1.result)\n this.pSourceAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.pSourceAlgorithm });\n }\n toSchema() {\n const outputArray = [];\n if (!this.hashAlgorithm.isEqual(RSAESOAEPParams.defaultValues(HASH_ALGORITHM$2))) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.hashAlgorithm.toSchema()]\n }));\n }\n if (!this.maskGenAlgorithm.isEqual(RSAESOAEPParams.defaultValues(MASK_GEN_ALGORITHM))) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [this.maskGenAlgorithm.toSchema()]\n }));\n }\n if (!this.pSourceAlgorithm.isEqual(RSAESOAEPParams.defaultValues(P_SOURCE_ALGORITHM))) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [this.pSourceAlgorithm.toSchema()]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {};\n if (!this.hashAlgorithm.isEqual(RSAESOAEPParams.defaultValues(HASH_ALGORITHM$2))) {\n res.hashAlgorithm = this.hashAlgorithm.toJSON();\n }\n if (!this.maskGenAlgorithm.isEqual(RSAESOAEPParams.defaultValues(MASK_GEN_ALGORITHM))) {\n res.maskGenAlgorithm = this.maskGenAlgorithm.toJSON();\n }\n if (!this.pSourceAlgorithm.isEqual(RSAESOAEPParams.defaultValues(P_SOURCE_ALGORITHM))) {\n res.pSourceAlgorithm = this.pSourceAlgorithm.toJSON();\n }\n return res;\n }\n}\nRSAESOAEPParams.CLASS_NAME = \"RSAESOAEPParams\";\n\nconst KEY_INFO = \"keyInfo\";\nconst ENTITY_U_INFO = \"entityUInfo\";\nconst SUPP_PUB_INFO = \"suppPubInfo\";\nconst CLEAR_PROPS$l = [\n KEY_INFO,\n ENTITY_U_INFO,\n SUPP_PUB_INFO\n];\nclass ECCCMSSharedInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.keyInfo = pvutils.getParametersValue(parameters, KEY_INFO, ECCCMSSharedInfo.defaultValues(KEY_INFO));\n if (ENTITY_U_INFO in parameters) {\n this.entityUInfo = pvutils.getParametersValue(parameters, ENTITY_U_INFO, ECCCMSSharedInfo.defaultValues(ENTITY_U_INFO));\n }\n this.suppPubInfo = pvutils.getParametersValue(parameters, SUPP_PUB_INFO, ECCCMSSharedInfo.defaultValues(SUPP_PUB_INFO));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case KEY_INFO:\n return new AlgorithmIdentifier();\n case ENTITY_U_INFO:\n return new asn1js.OctetString();\n case SUPP_PUB_INFO:\n return new asn1js.OctetString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case KEY_INFO:\n case ENTITY_U_INFO:\n case SUPP_PUB_INFO:\n return (memberValue.isEqual(ECCCMSSharedInfo.defaultValues(memberName)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.keyInfo || {}),\n new asn1js.Constructed({\n name: (names.entityUInfo || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n optional: true,\n value: [new asn1js.OctetString()]\n }),\n new asn1js.Constructed({\n name: (names.suppPubInfo || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [new asn1js.OctetString()]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$l);\n const asn1 = asn1js.compareSchema(schema, schema, ECCCMSSharedInfo.schema({\n names: {\n keyInfo: {\n names: {\n blockName: KEY_INFO\n }\n },\n entityUInfo: ENTITY_U_INFO,\n suppPubInfo: SUPP_PUB_INFO\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.keyInfo = new AlgorithmIdentifier({ schema: asn1.result.keyInfo });\n if (ENTITY_U_INFO in asn1.result)\n this.entityUInfo = asn1.result.entityUInfo.valueBlock.value[0];\n this.suppPubInfo = asn1.result.suppPubInfo.valueBlock.value[0];\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.keyInfo.toSchema());\n if (this.entityUInfo) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.entityUInfo]\n }));\n }\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [this.suppPubInfo]\n }));\n return new asn1js.Sequence({\n value: outputArray\n });\n }\n toJSON() {\n const res = {\n keyInfo: this.keyInfo.toJSON(),\n suppPubInfo: this.suppPubInfo.toJSON(),\n };\n if (this.entityUInfo) {\n res.entityUInfo = this.entityUInfo.toJSON();\n }\n return res;\n }\n}\nECCCMSSharedInfo.CLASS_NAME = \"ECCCMSSharedInfo\";\n\nconst VERSION$8 = \"version\";\nconst ORIGINATOR_INFO = \"originatorInfo\";\nconst RECIPIENT_INFOS = \"recipientInfos\";\nconst ENCRYPTED_CONTENT_INFO = \"encryptedContentInfo\";\nconst UNPROTECTED_ATTRS = \"unprotectedAttrs\";\nconst CLEAR_PROPS$k = [\n VERSION$8,\n ORIGINATOR_INFO,\n RECIPIENT_INFOS,\n ENCRYPTED_CONTENT_INFO,\n UNPROTECTED_ATTRS\n];\nconst defaultEncryptionParams = {\n kdfAlgorithm: \"SHA-512\",\n kekEncryptionLength: 256\n};\nconst curveLengthByName = {\n \"P-256\": 256,\n \"P-384\": 384,\n \"P-521\": 528\n};\nclass EnvelopedData extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$8, EnvelopedData.defaultValues(VERSION$8));\n if (ORIGINATOR_INFO in parameters) {\n this.originatorInfo = pvutils.getParametersValue(parameters, ORIGINATOR_INFO, EnvelopedData.defaultValues(ORIGINATOR_INFO));\n }\n this.recipientInfos = pvutils.getParametersValue(parameters, RECIPIENT_INFOS, EnvelopedData.defaultValues(RECIPIENT_INFOS));\n this.encryptedContentInfo = pvutils.getParametersValue(parameters, ENCRYPTED_CONTENT_INFO, EnvelopedData.defaultValues(ENCRYPTED_CONTENT_INFO));\n if (UNPROTECTED_ATTRS in parameters) {\n this.unprotectedAttrs = pvutils.getParametersValue(parameters, UNPROTECTED_ATTRS, EnvelopedData.defaultValues(UNPROTECTED_ATTRS));\n }\n this.policy = {\n disableSplit: !!parameters.disableSplit,\n };\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$8:\n return 0;\n case ORIGINATOR_INFO:\n return new OriginatorInfo();\n case RECIPIENT_INFOS:\n return [];\n case ENCRYPTED_CONTENT_INFO:\n return new EncryptedContentInfo();\n case UNPROTECTED_ATTRS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$8:\n return (memberValue === EnvelopedData.defaultValues(memberName));\n case ORIGINATOR_INFO:\n return ((memberValue.certs.certificates.length === 0) && (memberValue.crls.crls.length === 0));\n case RECIPIENT_INFOS:\n case UNPROTECTED_ATTRS:\n return (memberValue.length === 0);\n case ENCRYPTED_CONTENT_INFO:\n return ((EncryptedContentInfo.compareWithDefault(\"contentType\", memberValue.contentType)) &&\n (EncryptedContentInfo.compareWithDefault(\"contentEncryptionAlgorithm\", memberValue.contentEncryptionAlgorithm) &&\n (EncryptedContentInfo.compareWithDefault(\"encryptedContent\", memberValue.encryptedContent))));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || EMPTY_STRING) }),\n new asn1js.Constructed({\n name: (names.originatorInfo || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: OriginatorInfo.schema().valueBlock.value\n }),\n new asn1js.Set({\n value: [\n new asn1js.Repeated({\n name: (names.recipientInfos || EMPTY_STRING),\n value: RecipientInfo.schema()\n })\n ]\n }),\n EncryptedContentInfo.schema(names.encryptedContentInfo || {}),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.Repeated({\n name: (names.unprotectedAttrs || EMPTY_STRING),\n value: Attribute.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$k);\n const asn1 = asn1js.compareSchema(schema, schema, EnvelopedData.schema({\n names: {\n version: VERSION$8,\n originatorInfo: ORIGINATOR_INFO,\n recipientInfos: RECIPIENT_INFOS,\n encryptedContentInfo: {\n names: {\n blockName: ENCRYPTED_CONTENT_INFO\n }\n },\n unprotectedAttrs: UNPROTECTED_ATTRS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n if (ORIGINATOR_INFO in asn1.result) {\n this.originatorInfo = new OriginatorInfo({\n schema: new asn1js.Sequence({\n value: asn1.result.originatorInfo.valueBlock.value\n })\n });\n }\n this.recipientInfos = Array.from(asn1.result.recipientInfos, o => new RecipientInfo({ schema: o }));\n this.encryptedContentInfo = new EncryptedContentInfo({ schema: asn1.result.encryptedContentInfo });\n if (UNPROTECTED_ATTRS in asn1.result)\n this.unprotectedAttrs = Array.from(asn1.result.unprotectedAttrs, o => new Attribute({ schema: o }));\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n if (this.originatorInfo) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: this.originatorInfo.toSchema().valueBlock.value\n }));\n }\n outputArray.push(new asn1js.Set({\n value: Array.from(this.recipientInfos, o => o.toSchema())\n }));\n outputArray.push(this.encryptedContentInfo.toSchema());\n if (this.unprotectedAttrs) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: Array.from(this.unprotectedAttrs, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n version: this.version,\n recipientInfos: Array.from(this.recipientInfos, o => o.toJSON()),\n encryptedContentInfo: this.encryptedContentInfo.toJSON(),\n };\n if (this.originatorInfo)\n res.originatorInfo = this.originatorInfo.toJSON();\n if (this.unprotectedAttrs)\n res.unprotectedAttrs = Array.from(this.unprotectedAttrs, o => o.toJSON());\n return res;\n }\n addRecipientByCertificate(certificate, parameters, variant, crypto = getCrypto(true)) {\n const encryptionParameters = Object.assign({ useOAEP: true, oaepHashAlgorithm: \"SHA-512\" }, defaultEncryptionParams, parameters || {});\n if (certificate.subjectPublicKeyInfo.algorithm.algorithmId.indexOf(\"1.2.840.113549\") !== (-1))\n variant = 1;\n else {\n if (certificate.subjectPublicKeyInfo.algorithm.algorithmId.indexOf(\"1.2.840.10045\") !== (-1))\n variant = 2;\n else\n throw new Error(`Unknown type of certificate's public key: ${certificate.subjectPublicKeyInfo.algorithm.algorithmId}`);\n }\n switch (variant) {\n case 1:\n {\n let algorithmId;\n let algorithmParams;\n if (encryptionParameters.useOAEP === true) {\n algorithmId = crypto.getOIDByAlgorithm({\n name: \"RSA-OAEP\"\n }, true, \"keyEncryptionAlgorithm\");\n const hashOID = crypto.getOIDByAlgorithm({\n name: encryptionParameters.oaepHashAlgorithm\n }, true, \"RSAES-OAEP-params\");\n const hashAlgorithm = new AlgorithmIdentifier({\n algorithmId: hashOID,\n algorithmParams: new asn1js.Null()\n });\n const rsaOAEPParams = new RSAESOAEPParams({\n hashAlgorithm,\n maskGenAlgorithm: new AlgorithmIdentifier({\n algorithmId: \"1.2.840.113549.1.1.8\",\n algorithmParams: hashAlgorithm.toSchema()\n })\n });\n algorithmParams = rsaOAEPParams.toSchema();\n }\n else {\n algorithmId = crypto.getOIDByAlgorithm({\n name: \"RSAES-PKCS1-v1_5\"\n });\n if (algorithmId === EMPTY_STRING)\n throw new Error(\"Can not find OID for RSAES-PKCS1-v1_5\");\n algorithmParams = new asn1js.Null();\n }\n const keyInfo = new KeyTransRecipientInfo({\n version: 0,\n rid: new IssuerAndSerialNumber({\n issuer: certificate.issuer,\n serialNumber: certificate.serialNumber\n }),\n keyEncryptionAlgorithm: new AlgorithmIdentifier({\n algorithmId,\n algorithmParams\n }),\n recipientCertificate: certificate,\n });\n this.recipientInfos.push(new RecipientInfo({\n variant: 1,\n value: keyInfo\n }));\n }\n break;\n case 2:\n {\n const recipientIdentifier = new KeyAgreeRecipientIdentifier({\n variant: 1,\n value: new IssuerAndSerialNumber({\n issuer: certificate.issuer,\n serialNumber: certificate.serialNumber\n })\n });\n this._addKeyAgreeRecipientInfo(recipientIdentifier, encryptionParameters, { recipientCertificate: certificate }, crypto);\n }\n break;\n default:\n throw new Error(`Unknown \"variant\" value: ${variant}`);\n }\n return true;\n }\n addRecipientByPreDefinedData(preDefinedData, parameters = {}, variant, crypto = getCrypto(true)) {\n ArgumentError.assert(preDefinedData, \"preDefinedData\", \"ArrayBuffer\");\n if (!preDefinedData.byteLength) {\n throw new Error(\"Pre-defined data could have zero length\");\n }\n if (!parameters.keyIdentifier) {\n const keyIdentifierBuffer = new ArrayBuffer(16);\n const keyIdentifierView = new Uint8Array(keyIdentifierBuffer);\n crypto.getRandomValues(keyIdentifierView);\n parameters.keyIdentifier = keyIdentifierBuffer;\n }\n if (!parameters.hmacHashAlgorithm)\n parameters.hmacHashAlgorithm = \"SHA-512\";\n if (parameters.iterationCount === undefined) {\n parameters.iterationCount = 2048;\n }\n if (!parameters.keyEncryptionAlgorithm) {\n parameters.keyEncryptionAlgorithm = {\n name: \"AES-KW\",\n length: 256\n };\n }\n if (!parameters.keyEncryptionAlgorithmParams)\n parameters.keyEncryptionAlgorithmParams = new asn1js.Null();\n switch (variant) {\n case 1:\n {\n const kekOID = crypto.getOIDByAlgorithm(parameters.keyEncryptionAlgorithm, true, \"keyEncryptionAlgorithm\");\n const keyInfo = new KEKRecipientInfo({\n version: 4,\n kekid: new KEKIdentifier({\n keyIdentifier: new asn1js.OctetString({ valueHex: parameters.keyIdentifier })\n }),\n keyEncryptionAlgorithm: new AlgorithmIdentifier({\n algorithmId: kekOID,\n algorithmParams: parameters.keyEncryptionAlgorithmParams\n }),\n preDefinedKEK: preDefinedData\n });\n this.recipientInfos.push(new RecipientInfo({\n variant: 3,\n value: keyInfo\n }));\n }\n break;\n case 2:\n {\n const pbkdf2OID = crypto.getOIDByAlgorithm({ name: \"PBKDF2\" }, true, \"keyDerivationAlgorithm\");\n const saltBuffer = new ArrayBuffer(64);\n const saltView = new Uint8Array(saltBuffer);\n crypto.getRandomValues(saltView);\n const hmacOID = crypto.getOIDByAlgorithm({\n name: \"HMAC\",\n hash: {\n name: parameters.hmacHashAlgorithm\n }\n }, true, \"hmacHashAlgorithm\");\n const pbkdf2Params = new PBKDF2Params({\n salt: new asn1js.OctetString({ valueHex: saltBuffer }),\n iterationCount: parameters.iterationCount,\n prf: new AlgorithmIdentifier({\n algorithmId: hmacOID,\n algorithmParams: new asn1js.Null()\n })\n });\n const kekOID = crypto.getOIDByAlgorithm(parameters.keyEncryptionAlgorithm, true, \"keyEncryptionAlgorithm\");\n const keyInfo = new PasswordRecipientinfo({\n version: 0,\n keyDerivationAlgorithm: new AlgorithmIdentifier({\n algorithmId: pbkdf2OID,\n algorithmParams: pbkdf2Params.toSchema()\n }),\n keyEncryptionAlgorithm: new AlgorithmIdentifier({\n algorithmId: kekOID,\n algorithmParams: parameters.keyEncryptionAlgorithmParams\n }),\n password: preDefinedData\n });\n this.recipientInfos.push(new RecipientInfo({\n variant: 4,\n value: keyInfo\n }));\n }\n break;\n default:\n throw new Error(`Unknown value for \"variant\": ${variant}`);\n }\n }\n addRecipientByKeyIdentifier(key, keyId, parameters, crypto = getCrypto(true)) {\n const encryptionParameters = Object.assign({}, defaultEncryptionParams, parameters || {});\n const recipientIdentifier = new KeyAgreeRecipientIdentifier({\n variant: 2,\n value: new RecipientKeyIdentifier({\n subjectKeyIdentifier: new asn1js.OctetString({ valueHex: keyId }),\n })\n });\n this._addKeyAgreeRecipientInfo(recipientIdentifier, encryptionParameters, { recipientPublicKey: key }, crypto);\n }\n _addKeyAgreeRecipientInfo(recipientIdentifier, encryptionParameters, extraRecipientInfoParams, crypto = getCrypto(true)) {\n const encryptedKey = new RecipientEncryptedKey({\n rid: recipientIdentifier\n });\n const aesKWoid = crypto.getOIDByAlgorithm({\n name: \"AES-KW\",\n length: encryptionParameters.kekEncryptionLength\n }, true, \"keyEncryptionAlgorithm\");\n const aesKW = new AlgorithmIdentifier({\n algorithmId: aesKWoid,\n });\n const ecdhOID = crypto.getOIDByAlgorithm({\n name: \"ECDH\",\n kdf: encryptionParameters.kdfAlgorithm\n }, true, \"KeyAgreeRecipientInfo\");\n const ukmBuffer = new ArrayBuffer(64);\n const ukmView = new Uint8Array(ukmBuffer);\n crypto.getRandomValues(ukmView);\n const recipientInfoParams = {\n version: 3,\n ukm: new asn1js.OctetString({ valueHex: ukmBuffer }),\n keyEncryptionAlgorithm: new AlgorithmIdentifier({\n algorithmId: ecdhOID,\n algorithmParams: aesKW.toSchema()\n }),\n recipientEncryptedKeys: new RecipientEncryptedKeys({\n encryptedKeys: [encryptedKey]\n })\n };\n const keyInfo = new KeyAgreeRecipientInfo(Object.assign(recipientInfoParams, extraRecipientInfoParams));\n this.recipientInfos.push(new RecipientInfo({\n variant: 2,\n value: keyInfo\n }));\n }\n async encrypt(contentEncryptionAlgorithm, contentToEncrypt, crypto = getCrypto(true)) {\n const ivBuffer = new ArrayBuffer(16);\n const ivView = new Uint8Array(ivBuffer);\n crypto.getRandomValues(ivView);\n const contentView = new Uint8Array(contentToEncrypt);\n const contentEncryptionOID = crypto.getOIDByAlgorithm(contentEncryptionAlgorithm, true, \"contentEncryptionAlgorithm\");\n const sessionKey = await crypto.generateKey(contentEncryptionAlgorithm, true, [\"encrypt\"]);\n const encryptedContent = await crypto.encrypt({\n name: contentEncryptionAlgorithm.name,\n iv: ivView\n }, sessionKey, contentView);\n const exportedSessionKey = await crypto.exportKey(\"raw\", sessionKey);\n this.version = 2;\n this.encryptedContentInfo = new EncryptedContentInfo({\n disableSplit: this.policy.disableSplit,\n contentType: \"1.2.840.113549.1.7.1\",\n contentEncryptionAlgorithm: new AlgorithmIdentifier({\n algorithmId: contentEncryptionOID,\n algorithmParams: new asn1js.OctetString({ valueHex: ivBuffer })\n }),\n encryptedContent: new asn1js.OctetString({ valueHex: encryptedContent })\n });\n const SubKeyAgreeRecipientInfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n let recipientCurve;\n let recipientPublicKey;\n if (recipientInfo.recipientPublicKey) {\n recipientCurve = recipientInfo.recipientPublicKey.algorithm.namedCurve;\n recipientPublicKey = recipientInfo.recipientPublicKey;\n }\n else if (recipientInfo.recipientCertificate) {\n const curveObject = recipientInfo.recipientCertificate.subjectPublicKeyInfo.algorithm.algorithmParams;\n if (curveObject.constructor.blockName() !== asn1js.ObjectIdentifier.blockName())\n throw new Error(`Incorrect \"recipientCertificate\" for index ${index}`);\n const curveOID = curveObject.valueBlock.toString();\n switch (curveOID) {\n case \"1.2.840.10045.3.1.7\":\n recipientCurve = \"P-256\";\n break;\n case \"1.3.132.0.34\":\n recipientCurve = \"P-384\";\n break;\n case \"1.3.132.0.35\":\n recipientCurve = \"P-521\";\n break;\n default:\n throw new Error(`Incorrect curve OID for index ${index}`);\n }\n recipientPublicKey = await recipientInfo.recipientCertificate.getPublicKey({\n algorithm: {\n algorithm: {\n name: \"ECDH\",\n namedCurve: recipientCurve\n },\n usages: []\n }\n }, crypto);\n }\n else {\n throw new Error(\"Unsupported RecipientInfo\");\n }\n const recipientCurveLength = curveLengthByName[recipientCurve];\n const ecdhKeys = await crypto.generateKey({ name: \"ECDH\", namedCurve: recipientCurve }, true, [\"deriveBits\"]);\n const exportedECDHPublicKey = await crypto.exportKey(\"spki\", ecdhKeys.publicKey);\n const derivedBits = await crypto.deriveBits({\n name: \"ECDH\",\n public: recipientPublicKey\n }, ecdhKeys.privateKey, recipientCurveLength);\n const aesKWAlgorithm = new AlgorithmIdentifier({ schema: recipientInfo.keyEncryptionAlgorithm.algorithmParams });\n const kwAlgorithm = crypto.getAlgorithmByOID(aesKWAlgorithm.algorithmId, true, \"aesKWAlgorithm\");\n let kwLength = kwAlgorithm.length;\n const kwLengthBuffer = new ArrayBuffer(4);\n const kwLengthView = new Uint8Array(kwLengthBuffer);\n for (let j = 3; j >= 0; j--) {\n kwLengthView[j] = kwLength;\n kwLength >>= 8;\n }\n const eccInfo = new ECCCMSSharedInfo({\n keyInfo: new AlgorithmIdentifier({\n algorithmId: aesKWAlgorithm.algorithmId\n }),\n entityUInfo: recipientInfo.ukm,\n suppPubInfo: new asn1js.OctetString({ valueHex: kwLengthBuffer })\n });\n const encodedInfo = eccInfo.toSchema().toBER(false);\n const ecdhAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"ecdhAlgorithm\");\n const derivedKeyRaw = await kdf(ecdhAlgorithm.kdf, derivedBits, kwAlgorithm.length, encodedInfo, crypto);\n const awsKW = await crypto.importKey(\"raw\", derivedKeyRaw, { name: \"AES-KW\" }, true, [\"wrapKey\"]);\n const wrappedKey = await crypto.wrapKey(\"raw\", sessionKey, awsKW, { name: \"AES-KW\" });\n const originator = new OriginatorIdentifierOrKey();\n originator.variant = 3;\n originator.value = OriginatorPublicKey.fromBER(exportedECDHPublicKey);\n recipientInfo.originator = originator;\n recipientInfo.recipientEncryptedKeys.encryptedKeys[0].encryptedKey = new asn1js.OctetString({ valueHex: wrappedKey });\n return { ecdhPrivateKey: ecdhKeys.privateKey };\n };\n const SubKeyTransRecipientInfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n const algorithmParameters = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"keyEncryptionAlgorithm\");\n if (algorithmParameters.name === \"RSA-OAEP\") {\n const schema = recipientInfo.keyEncryptionAlgorithm.algorithmParams;\n const rsaOAEPParams = new RSAESOAEPParams({ schema });\n algorithmParameters.hash = crypto.getAlgorithmByOID(rsaOAEPParams.hashAlgorithm.algorithmId);\n if ((\"name\" in algorithmParameters.hash) === false)\n throw new Error(`Incorrect OID for hash algorithm: ${rsaOAEPParams.hashAlgorithm.algorithmId}`);\n }\n try {\n const publicKey = await recipientInfo.recipientCertificate.getPublicKey({\n algorithm: {\n algorithm: algorithmParameters,\n usages: [\"encrypt\", \"wrapKey\"]\n }\n }, crypto);\n const encryptedKey = await crypto.encrypt(publicKey.algorithm, publicKey, exportedSessionKey);\n recipientInfo.encryptedKey = new asn1js.OctetString({ valueHex: encryptedKey });\n }\n catch {\n }\n };\n const SubKEKRecipientInfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n const kekAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"kekAlgorithm\");\n const kekKey = await crypto.importKey(\"raw\", new Uint8Array(recipientInfo.preDefinedKEK), kekAlgorithm, true, [\"wrapKey\"]);\n const wrappedKey = await crypto.wrapKey(\"raw\", sessionKey, kekKey, kekAlgorithm);\n recipientInfo.encryptedKey = new asn1js.OctetString({ valueHex: wrappedKey });\n };\n const SubPasswordRecipientinfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n let pbkdf2Params;\n if (!recipientInfo.keyDerivationAlgorithm)\n throw new Error(\"Please append encoded \\\"keyDerivationAlgorithm\\\"\");\n if (!recipientInfo.keyDerivationAlgorithm.algorithmParams)\n throw new Error(\"Incorrectly encoded \\\"keyDerivationAlgorithm\\\"\");\n try {\n pbkdf2Params = new PBKDF2Params({ schema: recipientInfo.keyDerivationAlgorithm.algorithmParams });\n }\n catch (ex) {\n throw new Error(\"Incorrectly encoded \\\"keyDerivationAlgorithm\\\"\");\n }\n const passwordView = new Uint8Array(recipientInfo.password);\n const derivationKey = await crypto.importKey(\"raw\", passwordView, \"PBKDF2\", false, [\"deriveKey\"]);\n const kekAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"kekAlgorithm\");\n let hmacHashAlgorithm = \"SHA-1\";\n if (pbkdf2Params.prf) {\n const prfAlgorithm = crypto.getAlgorithmByOID(pbkdf2Params.prf.algorithmId, true, \"prfAlgorithm\");\n hmacHashAlgorithm = prfAlgorithm.hash.name;\n }\n const saltView = new Uint8Array(pbkdf2Params.salt.valueBlock.valueHex);\n const iterations = pbkdf2Params.iterationCount;\n const derivedKey = await crypto.deriveKey({\n name: \"PBKDF2\",\n hash: {\n name: hmacHashAlgorithm\n },\n salt: saltView,\n iterations\n }, derivationKey, kekAlgorithm, true, [\"wrapKey\"]);\n const wrappedKey = await crypto.wrapKey(\"raw\", sessionKey, derivedKey, kekAlgorithm);\n recipientInfo.encryptedKey = new asn1js.OctetString({ valueHex: wrappedKey });\n };\n const res = [];\n for (let i = 0; i < this.recipientInfos.length; i++) {\n switch (this.recipientInfos[i].variant) {\n case 1:\n res.push(await SubKeyTransRecipientInfo(i));\n break;\n case 2:\n res.push(await SubKeyAgreeRecipientInfo(i));\n break;\n case 3:\n res.push(await SubKEKRecipientInfo(i));\n break;\n case 4:\n res.push(await SubPasswordRecipientinfo(i));\n break;\n default:\n throw new Error(`Unknown recipient type in array with index ${i}`);\n }\n }\n return res;\n }\n async decrypt(recipientIndex, parameters, crypto = getCrypto(true)) {\n const decryptionParameters = parameters || {};\n if ((recipientIndex + 1) > this.recipientInfos.length) {\n throw new Error(`Maximum value for \"index\" is: ${this.recipientInfos.length - 1}`);\n }\n const SubKeyAgreeRecipientInfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n let curveOID;\n let recipientCurve;\n let recipientCurveLength;\n const originator = recipientInfo.originator;\n if (decryptionParameters.recipientCertificate) {\n const curveObject = decryptionParameters.recipientCertificate.subjectPublicKeyInfo.algorithm.algorithmParams;\n if (curveObject.constructor.blockName() !== asn1js.ObjectIdentifier.blockName()) {\n throw new Error(`Incorrect \"recipientCertificate\" for index ${index}`);\n }\n curveOID = curveObject.valueBlock.toString();\n }\n else if (originator.value.algorithm.algorithmParams) {\n const curveObject = originator.value.algorithm.algorithmParams;\n if (curveObject.constructor.blockName() !== asn1js.ObjectIdentifier.blockName()) {\n throw new Error(`Incorrect originator for index ${index}`);\n }\n curveOID = curveObject.valueBlock.toString();\n }\n else {\n throw new Error(\"Parameter \\\"recipientCertificate\\\" is mandatory for \\\"KeyAgreeRecipientInfo\\\" if algorithm params are missing from originator\");\n }\n if (!decryptionParameters.recipientPrivateKey)\n throw new Error(\"Parameter \\\"recipientPrivateKey\\\" is mandatory for \\\"KeyAgreeRecipientInfo\\\"\");\n switch (curveOID) {\n case \"1.2.840.10045.3.1.7\":\n recipientCurve = \"P-256\";\n recipientCurveLength = 256;\n break;\n case \"1.3.132.0.34\":\n recipientCurve = \"P-384\";\n recipientCurveLength = 384;\n break;\n case \"1.3.132.0.35\":\n recipientCurve = \"P-521\";\n recipientCurveLength = 528;\n break;\n default:\n throw new Error(`Incorrect curve OID for index ${index}`);\n }\n let ecdhPrivateKey;\n let keyCrypto = crypto;\n if (BufferSourceConverter.isBufferSource(decryptionParameters.recipientPrivateKey)) {\n ecdhPrivateKey = await crypto.importKey(\"pkcs8\", decryptionParameters.recipientPrivateKey, {\n name: \"ECDH\",\n namedCurve: recipientCurve\n }, true, [\"deriveBits\"]);\n }\n else {\n ecdhPrivateKey = decryptionParameters.recipientPrivateKey;\n if (\"crypto\" in decryptionParameters && decryptionParameters.crypto) {\n keyCrypto = decryptionParameters.crypto.subtle;\n }\n }\n if ((\"algorithmParams\" in originator.value.algorithm) === false)\n originator.value.algorithm.algorithmParams = new asn1js.ObjectIdentifier({ value: curveOID });\n const buffer = originator.value.toSchema().toBER(false);\n const ecdhPublicKey = await crypto.importKey(\"spki\", buffer, {\n name: \"ECDH\",\n namedCurve: recipientCurve\n }, true, []);\n const sharedSecret = await keyCrypto.deriveBits({\n name: \"ECDH\",\n public: ecdhPublicKey\n }, ecdhPrivateKey, recipientCurveLength);\n async function applyKDF(includeAlgorithmParams) {\n includeAlgorithmParams = includeAlgorithmParams || false;\n const aesKWAlgorithm = new AlgorithmIdentifier({ schema: recipientInfo.keyEncryptionAlgorithm.algorithmParams });\n const kwAlgorithm = crypto.getAlgorithmByOID(aesKWAlgorithm.algorithmId, true, \"kwAlgorithm\");\n let kwLength = kwAlgorithm.length;\n const kwLengthBuffer = new ArrayBuffer(4);\n const kwLengthView = new Uint8Array(kwLengthBuffer);\n for (let j = 3; j >= 0; j--) {\n kwLengthView[j] = kwLength;\n kwLength >>= 8;\n }\n const keyInfoAlgorithm = {\n algorithmId: aesKWAlgorithm.algorithmId\n };\n if (includeAlgorithmParams) {\n keyInfoAlgorithm.algorithmParams = new asn1js.Null();\n }\n const eccInfo = new ECCCMSSharedInfo({\n keyInfo: new AlgorithmIdentifier(keyInfoAlgorithm),\n entityUInfo: recipientInfo.ukm,\n suppPubInfo: new asn1js.OctetString({ valueHex: kwLengthBuffer })\n });\n const encodedInfo = eccInfo.toSchema().toBER(false);\n const ecdhAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"ecdhAlgorithm\");\n if (!ecdhAlgorithm.name) {\n throw new Error(`Incorrect OID for key encryption algorithm: ${recipientInfo.keyEncryptionAlgorithm.algorithmId}`);\n }\n return kdf(ecdhAlgorithm.kdf, sharedSecret, kwAlgorithm.length, encodedInfo, crypto);\n }\n const kdfResult = await applyKDF();\n const importAesKwKey = async (kdfResult) => {\n return crypto.importKey(\"raw\", kdfResult, { name: \"AES-KW\" }, true, [\"unwrapKey\"]);\n };\n const aesKwKey = await importAesKwKey(kdfResult);\n const unwrapSessionKey = async (aesKwKey) => {\n const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId;\n const contentEncryptionAlgorithm = crypto.getAlgorithmByOID(algorithmId, true, \"contentEncryptionAlgorithm\");\n return crypto.unwrapKey(\"raw\", recipientInfo.recipientEncryptedKeys.encryptedKeys[0].encryptedKey.valueBlock.valueHexView, aesKwKey, { name: \"AES-KW\" }, contentEncryptionAlgorithm, true, [\"decrypt\"]);\n };\n try {\n return await unwrapSessionKey(aesKwKey);\n }\n catch {\n const kdfResult = await applyKDF(true);\n const aesKwKey = await importAesKwKey(kdfResult);\n return unwrapSessionKey(aesKwKey);\n }\n };\n const SubKeyTransRecipientInfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n if (!decryptionParameters.recipientPrivateKey) {\n throw new Error(\"Parameter \\\"recipientPrivateKey\\\" is mandatory for \\\"KeyTransRecipientInfo\\\"\");\n }\n const algorithmParameters = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"keyEncryptionAlgorithm\");\n if (algorithmParameters.name === \"RSA-OAEP\") {\n const schema = recipientInfo.keyEncryptionAlgorithm.algorithmParams;\n const rsaOAEPParams = new RSAESOAEPParams({ schema });\n algorithmParameters.hash = crypto.getAlgorithmByOID(rsaOAEPParams.hashAlgorithm.algorithmId);\n if ((\"name\" in algorithmParameters.hash) === false)\n throw new Error(`Incorrect OID for hash algorithm: ${rsaOAEPParams.hashAlgorithm.algorithmId}`);\n }\n let privateKey;\n let keyCrypto = crypto;\n if (BufferSourceConverter.isBufferSource(decryptionParameters.recipientPrivateKey)) {\n privateKey = await crypto.importKey(\"pkcs8\", decryptionParameters.recipientPrivateKey, algorithmParameters, true, [\"decrypt\"]);\n }\n else {\n privateKey = decryptionParameters.recipientPrivateKey;\n if (\"crypto\" in decryptionParameters && decryptionParameters.crypto) {\n keyCrypto = decryptionParameters.crypto.subtle;\n }\n }\n const sessionKey = await keyCrypto.decrypt(privateKey.algorithm, privateKey, recipientInfo.encryptedKey.valueBlock.valueHexView);\n const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId;\n const contentEncryptionAlgorithm = crypto.getAlgorithmByOID(algorithmId, true, \"contentEncryptionAlgorithm\");\n if ((\"name\" in contentEncryptionAlgorithm) === false)\n throw new Error(`Incorrect \"contentEncryptionAlgorithm\": ${algorithmId}`);\n return crypto.importKey(\"raw\", sessionKey, contentEncryptionAlgorithm, true, [\"decrypt\"]);\n };\n const SubKEKRecipientInfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n if (!decryptionParameters.preDefinedData)\n throw new Error(\"Parameter \\\"preDefinedData\\\" is mandatory for \\\"KEKRecipientInfo\\\"\");\n const kekAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"kekAlgorithm\");\n const importedKey = await crypto.importKey(\"raw\", decryptionParameters.preDefinedData, kekAlgorithm, true, [\"unwrapKey\"]);\n const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId;\n const contentEncryptionAlgorithm = crypto.getAlgorithmByOID(algorithmId, true, \"contentEncryptionAlgorithm\");\n if (!contentEncryptionAlgorithm.name) {\n throw new Error(`Incorrect \"contentEncryptionAlgorithm\": ${algorithmId}`);\n }\n return crypto.unwrapKey(\"raw\", recipientInfo.encryptedKey.valueBlock.valueHexView, importedKey, kekAlgorithm, contentEncryptionAlgorithm, true, [\"decrypt\"]);\n };\n const SubPasswordRecipientinfo = async (index) => {\n const recipientInfo = this.recipientInfos[index].value;\n let pbkdf2Params;\n if (!decryptionParameters.preDefinedData) {\n throw new Error(\"Parameter \\\"preDefinedData\\\" is mandatory for \\\"KEKRecipientInfo\\\"\");\n }\n if (!recipientInfo.keyDerivationAlgorithm) {\n throw new Error(\"Please append encoded \\\"keyDerivationAlgorithm\\\"\");\n }\n if (!recipientInfo.keyDerivationAlgorithm.algorithmParams) {\n throw new Error(\"Incorrectly encoded \\\"keyDerivationAlgorithm\\\"\");\n }\n try {\n pbkdf2Params = new PBKDF2Params({ schema: recipientInfo.keyDerivationAlgorithm.algorithmParams });\n }\n catch (ex) {\n throw new Error(\"Incorrectly encoded \\\"keyDerivationAlgorithm\\\"\");\n }\n const pbkdf2Key = await crypto.importKey(\"raw\", decryptionParameters.preDefinedData, \"PBKDF2\", false, [\"deriveKey\"]);\n const kekAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, \"keyEncryptionAlgorithm\");\n const hmacHashAlgorithm = pbkdf2Params.prf\n ? crypto.getAlgorithmByOID(pbkdf2Params.prf.algorithmId, true, \"prfAlgorithm\").hash.name\n : \"SHA-1\";\n const saltView = new Uint8Array(pbkdf2Params.salt.valueBlock.valueHex);\n const iterations = pbkdf2Params.iterationCount;\n const kekKey = await crypto.deriveKey({\n name: \"PBKDF2\",\n hash: {\n name: hmacHashAlgorithm\n },\n salt: saltView,\n iterations\n }, pbkdf2Key, kekAlgorithm, true, [\"unwrapKey\"]);\n const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId;\n const contentEncryptionAlgorithm = crypto.getAlgorithmByOID(algorithmId, true, \"contentEncryptionAlgorithm\");\n return crypto.unwrapKey(\"raw\", recipientInfo.encryptedKey.valueBlock.valueHexView, kekKey, kekAlgorithm, contentEncryptionAlgorithm, true, [\"decrypt\"]);\n };\n let unwrappedKey;\n switch (this.recipientInfos[recipientIndex].variant) {\n case 1:\n unwrappedKey = await SubKeyTransRecipientInfo(recipientIndex);\n break;\n case 2:\n unwrappedKey = await SubKeyAgreeRecipientInfo(recipientIndex);\n break;\n case 3:\n unwrappedKey = await SubKEKRecipientInfo(recipientIndex);\n break;\n case 4:\n unwrappedKey = await SubPasswordRecipientinfo(recipientIndex);\n break;\n default:\n throw new Error(`Unknown recipient type in array with index ${recipientIndex}`);\n }\n const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId;\n const contentEncryptionAlgorithm = crypto.getAlgorithmByOID(algorithmId, true, \"contentEncryptionAlgorithm\");\n const ivBuffer = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmParams.valueBlock.valueHex;\n const ivView = new Uint8Array(ivBuffer);\n if (!this.encryptedContentInfo.encryptedContent) {\n throw new Error(\"Required property `encryptedContent` is empty\");\n }\n const dataBuffer = this.encryptedContentInfo.getEncryptedContent();\n return crypto.decrypt({\n name: contentEncryptionAlgorithm.name,\n iv: ivView\n }, unwrappedKey, dataBuffer);\n }\n}\nEnvelopedData.CLASS_NAME = \"EnvelopedData\";\n\nconst SAFE_CONTENTS = \"safeContents\";\nconst PARSED_VALUE$1 = \"parsedValue\";\nconst CONTENT_INFOS = \"contentInfos\";\nclass AuthenticatedSafe extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.safeContents = pvutils.getParametersValue(parameters, SAFE_CONTENTS, AuthenticatedSafe.defaultValues(SAFE_CONTENTS));\n if (PARSED_VALUE$1 in parameters) {\n this.parsedValue = pvutils.getParametersValue(parameters, PARSED_VALUE$1, AuthenticatedSafe.defaultValues(PARSED_VALUE$1));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case SAFE_CONTENTS:\n return [];\n case PARSED_VALUE$1:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case SAFE_CONTENTS:\n return (memberValue.length === 0);\n case PARSED_VALUE$1:\n return ((memberValue instanceof Object) && (Object.keys(memberValue).length === 0));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Repeated({\n name: (names.contentInfos || EMPTY_STRING),\n value: ContentInfo.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n CONTENT_INFOS\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, AuthenticatedSafe.schema({\n names: {\n contentInfos: CONTENT_INFOS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.safeContents = Array.from(asn1.result.contentInfos, element => new ContentInfo({ schema: element }));\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: Array.from(this.safeContents, o => o.toSchema())\n }));\n }\n toJSON() {\n return {\n safeContents: Array.from(this.safeContents, o => o.toJSON())\n };\n }\n async parseInternalValues(parameters, crypto = getCrypto(true)) {\n ParameterError.assert(parameters, SAFE_CONTENTS);\n ArgumentError.assert(parameters.safeContents, SAFE_CONTENTS, \"Array\");\n if (parameters.safeContents.length !== this.safeContents.length) {\n throw new ArgumentError(\"Length of \\\"parameters.safeContents\\\" must be equal to \\\"this.safeContents.length\\\"\");\n }\n this.parsedValue = {\n safeContents: [],\n };\n for (const [index, content] of this.safeContents.entries()) {\n const safeContent = parameters.safeContents[index];\n const errorTarget = `parameters.safeContents[${index}]`;\n switch (content.contentType) {\n case id_ContentType_Data:\n {\n ArgumentError.assert(content.content, \"this.safeContents[j].content\", asn1js.OctetString);\n const authSafeContent = content.content.getValue();\n this.parsedValue.safeContents.push({\n privacyMode: 0,\n value: SafeContents.fromBER(authSafeContent)\n });\n }\n break;\n case id_ContentType_EnvelopedData:\n {\n const cmsEnveloped = new EnvelopedData({ schema: content.content });\n ParameterError.assert(errorTarget, safeContent, \"recipientCertificate\", \"recipientKey\");\n const envelopedData = safeContent;\n const recipientCertificate = envelopedData.recipientCertificate;\n const recipientKey = envelopedData.recipientKey;\n const decrypted = await cmsEnveloped.decrypt(0, {\n recipientCertificate,\n recipientPrivateKey: recipientKey\n }, crypto);\n this.parsedValue.safeContents.push({\n privacyMode: 2,\n value: SafeContents.fromBER(decrypted),\n });\n }\n break;\n case id_ContentType_EncryptedData:\n {\n const cmsEncrypted = new EncryptedData({ schema: content.content });\n ParameterError.assert(errorTarget, safeContent, \"password\");\n const password = safeContent.password;\n const decrypted = await cmsEncrypted.decrypt({\n password\n }, crypto);\n this.parsedValue.safeContents.push({\n privacyMode: 1,\n value: SafeContents.fromBER(decrypted),\n });\n }\n break;\n default:\n throw new Error(`Unknown \"contentType\" for AuthenticatedSafe: \" ${content.contentType}`);\n }\n }\n }\n async makeInternalValues(parameters, crypto = getCrypto(true)) {\n if (!(this.parsedValue)) {\n throw new Error(\"Please run \\\"parseValues\\\" first or add \\\"parsedValue\\\" manually\");\n }\n ArgumentError.assert(this.parsedValue, \"this.parsedValue\", \"object\");\n ArgumentError.assert(this.parsedValue.safeContents, \"this.parsedValue.safeContents\", \"Array\");\n ArgumentError.assert(parameters, \"parameters\", \"object\");\n ParameterError.assert(parameters, \"safeContents\");\n ArgumentError.assert(parameters.safeContents, \"parameters.safeContents\", \"Array\");\n if (parameters.safeContents.length !== this.parsedValue.safeContents.length) {\n throw new ArgumentError(\"Length of \\\"parameters.safeContents\\\" must be equal to \\\"this.parsedValue.safeContents\\\"\");\n }\n this.safeContents = [];\n for (const [index, content] of this.parsedValue.safeContents.entries()) {\n ParameterError.assert(\"content\", content, \"privacyMode\", \"value\");\n ArgumentError.assert(content.value, \"content.value\", SafeContents);\n switch (content.privacyMode) {\n case 0:\n {\n const contentBuffer = content.value.toSchema().toBER(false);\n this.safeContents.push(new ContentInfo({\n contentType: \"1.2.840.113549.1.7.1\",\n content: new asn1js.OctetString({ valueHex: contentBuffer })\n }));\n }\n break;\n case 1:\n {\n const cmsEncrypted = new EncryptedData();\n const currentParameters = parameters.safeContents[index];\n currentParameters.contentToEncrypt = content.value.toSchema().toBER(false);\n await cmsEncrypted.encrypt(currentParameters, crypto);\n this.safeContents.push(new ContentInfo({\n contentType: \"1.2.840.113549.1.7.6\",\n content: cmsEncrypted.toSchema()\n }));\n }\n break;\n case 2:\n {\n const cmsEnveloped = new EnvelopedData();\n const contentToEncrypt = content.value.toSchema().toBER(false);\n const safeContent = parameters.safeContents[index];\n ParameterError.assert(`parameters.safeContents[${index}]`, safeContent, \"encryptingCertificate\", \"encryptionAlgorithm\");\n switch (true) {\n case (safeContent.encryptionAlgorithm.name.toLowerCase() === \"aes-cbc\"):\n case (safeContent.encryptionAlgorithm.name.toLowerCase() === \"aes-gcm\"):\n break;\n default:\n throw new Error(`Incorrect parameter \"encryptionAlgorithm\" in \"parameters.safeContents[i]\": ${safeContent.encryptionAlgorithm}`);\n }\n switch (true) {\n case (safeContent.encryptionAlgorithm.length === 128):\n case (safeContent.encryptionAlgorithm.length === 192):\n case (safeContent.encryptionAlgorithm.length === 256):\n break;\n default:\n throw new Error(`Incorrect parameter \"encryptionAlgorithm.length\" in \"parameters.safeContents[i]\": ${safeContent.encryptionAlgorithm.length}`);\n }\n const encryptionAlgorithm = safeContent.encryptionAlgorithm;\n cmsEnveloped.addRecipientByCertificate(safeContent.encryptingCertificate, {}, undefined, crypto);\n await cmsEnveloped.encrypt(encryptionAlgorithm, contentToEncrypt, crypto);\n this.safeContents.push(new ContentInfo({\n contentType: \"1.2.840.113549.1.7.3\",\n content: cmsEnveloped.toSchema()\n }));\n }\n break;\n default:\n throw new Error(`Incorrect value for \"content.privacyMode\": ${content.privacyMode}`);\n }\n }\n return this;\n }\n}\nAuthenticatedSafe.CLASS_NAME = \"AuthenticatedSafe\";\n\nconst HASH_ALGORITHM$1 = \"hashAlgorithm\";\nconst ISSUER_NAME_HASH = \"issuerNameHash\";\nconst ISSUER_KEY_HASH = \"issuerKeyHash\";\nconst SERIAL_NUMBER$1 = \"serialNumber\";\nconst CLEAR_PROPS$j = [\n HASH_ALGORITHM$1,\n ISSUER_NAME_HASH,\n ISSUER_KEY_HASH,\n SERIAL_NUMBER$1,\n];\nclass CertID extends PkiObject {\n static async create(certificate, parameters, crypto = getCrypto(true)) {\n const certID = new CertID();\n await certID.createForCertificate(certificate, parameters, crypto);\n return certID;\n }\n constructor(parameters = {}) {\n super();\n this.hashAlgorithm = pvutils.getParametersValue(parameters, HASH_ALGORITHM$1, CertID.defaultValues(HASH_ALGORITHM$1));\n this.issuerNameHash = pvutils.getParametersValue(parameters, ISSUER_NAME_HASH, CertID.defaultValues(ISSUER_NAME_HASH));\n this.issuerKeyHash = pvutils.getParametersValue(parameters, ISSUER_KEY_HASH, CertID.defaultValues(ISSUER_KEY_HASH));\n this.serialNumber = pvutils.getParametersValue(parameters, SERIAL_NUMBER$1, CertID.defaultValues(SERIAL_NUMBER$1));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case HASH_ALGORITHM$1:\n return new AlgorithmIdentifier();\n case ISSUER_NAME_HASH:\n case ISSUER_KEY_HASH:\n return new asn1js.OctetString();\n case SERIAL_NUMBER$1:\n return new asn1js.Integer();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case HASH_ALGORITHM$1:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case ISSUER_NAME_HASH:\n case ISSUER_KEY_HASH:\n case SERIAL_NUMBER$1:\n return (memberValue.isEqual(CertID.defaultValues(SERIAL_NUMBER$1)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.hashAlgorithmObject || {\n names: {\n blockName: (names.hashAlgorithm || EMPTY_STRING)\n }\n }),\n new asn1js.OctetString({ name: (names.issuerNameHash || EMPTY_STRING) }),\n new asn1js.OctetString({ name: (names.issuerKeyHash || EMPTY_STRING) }),\n new asn1js.Integer({ name: (names.serialNumber || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$j);\n const asn1 = asn1js.compareSchema(schema, schema, CertID.schema({\n names: {\n hashAlgorithm: HASH_ALGORITHM$1,\n issuerNameHash: ISSUER_NAME_HASH,\n issuerKeyHash: ISSUER_KEY_HASH,\n serialNumber: SERIAL_NUMBER$1\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.hashAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.hashAlgorithm });\n this.issuerNameHash = asn1.result.issuerNameHash;\n this.issuerKeyHash = asn1.result.issuerKeyHash;\n this.serialNumber = asn1.result.serialNumber;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.hashAlgorithm.toSchema(),\n this.issuerNameHash,\n this.issuerKeyHash,\n this.serialNumber\n ]\n }));\n }\n toJSON() {\n return {\n hashAlgorithm: this.hashAlgorithm.toJSON(),\n issuerNameHash: this.issuerNameHash.toJSON(),\n issuerKeyHash: this.issuerKeyHash.toJSON(),\n serialNumber: this.serialNumber.toJSON(),\n };\n }\n isEqual(certificateID) {\n if (this.hashAlgorithm.algorithmId !== certificateID.hashAlgorithm.algorithmId) {\n return false;\n }\n if (!pvtsutils.BufferSourceConverter.isEqual(this.issuerNameHash.valueBlock.valueHexView, certificateID.issuerNameHash.valueBlock.valueHexView)) {\n return false;\n }\n if (!pvtsutils.BufferSourceConverter.isEqual(this.issuerKeyHash.valueBlock.valueHexView, certificateID.issuerKeyHash.valueBlock.valueHexView)) {\n return false;\n }\n if (!this.serialNumber.isEqual(certificateID.serialNumber)) {\n return false;\n }\n return true;\n }\n async createForCertificate(certificate, parameters, crypto = getCrypto(true)) {\n ParameterError.assert(parameters, HASH_ALGORITHM$1, \"issuerCertificate\");\n const hashOID = crypto.getOIDByAlgorithm({ name: parameters.hashAlgorithm }, true, \"hashAlgorithm\");\n this.hashAlgorithm = new AlgorithmIdentifier({\n algorithmId: hashOID,\n algorithmParams: new asn1js.Null()\n });\n const issuerCertificate = parameters.issuerCertificate;\n this.serialNumber = certificate.serialNumber;\n const hashIssuerName = await crypto.digest({ name: parameters.hashAlgorithm }, issuerCertificate.subject.toSchema().toBER(false));\n this.issuerNameHash = new asn1js.OctetString({ valueHex: hashIssuerName });\n const issuerKeyBuffer = issuerCertificate.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView;\n const hashIssuerKey = await crypto.digest({ name: parameters.hashAlgorithm }, issuerKeyBuffer);\n this.issuerKeyHash = new asn1js.OctetString({ valueHex: hashIssuerKey });\n }\n}\nCertID.CLASS_NAME = \"CertID\";\n\nconst CERT_ID = \"certID\";\nconst CERT_STATUS = \"certStatus\";\nconst THIS_UPDATE = \"thisUpdate\";\nconst NEXT_UPDATE = \"nextUpdate\";\nconst SINGLE_EXTENSIONS = \"singleExtensions\";\nconst CLEAR_PROPS$i = [\n CERT_ID,\n CERT_STATUS,\n THIS_UPDATE,\n NEXT_UPDATE,\n SINGLE_EXTENSIONS,\n];\nclass SingleResponse extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.certID = pvutils.getParametersValue(parameters, CERT_ID, SingleResponse.defaultValues(CERT_ID));\n this.certStatus = pvutils.getParametersValue(parameters, CERT_STATUS, SingleResponse.defaultValues(CERT_STATUS));\n this.thisUpdate = pvutils.getParametersValue(parameters, THIS_UPDATE, SingleResponse.defaultValues(THIS_UPDATE));\n if (NEXT_UPDATE in parameters) {\n this.nextUpdate = pvutils.getParametersValue(parameters, NEXT_UPDATE, SingleResponse.defaultValues(NEXT_UPDATE));\n }\n if (SINGLE_EXTENSIONS in parameters) {\n this.singleExtensions = pvutils.getParametersValue(parameters, SINGLE_EXTENSIONS, SingleResponse.defaultValues(SINGLE_EXTENSIONS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case CERT_ID:\n return new CertID();\n case CERT_STATUS:\n return {};\n case THIS_UPDATE:\n case NEXT_UPDATE:\n return new Date(0, 0, 0);\n case SINGLE_EXTENSIONS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case CERT_ID:\n return ((CertID.compareWithDefault(\"hashAlgorithm\", memberValue.hashAlgorithm)) &&\n (CertID.compareWithDefault(\"issuerNameHash\", memberValue.issuerNameHash)) &&\n (CertID.compareWithDefault(\"issuerKeyHash\", memberValue.issuerKeyHash)) &&\n (CertID.compareWithDefault(\"serialNumber\", memberValue.serialNumber)));\n case CERT_STATUS:\n return (Object.keys(memberValue).length === 0);\n case THIS_UPDATE:\n case NEXT_UPDATE:\n return (memberValue === SingleResponse.defaultValues(memberName));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n CertID.schema(names.certID || {}),\n new asn1js.Choice({\n value: [\n new asn1js.Primitive({\n name: (names.certStatus || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n }),\n new asn1js.Constructed({\n name: (names.certStatus || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.GeneralizedTime(),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Enumerated()]\n })\n ]\n }),\n new asn1js.Primitive({\n name: (names.certStatus || EMPTY_STRING),\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n lenBlock: { length: 1 }\n })\n ]\n }),\n new asn1js.GeneralizedTime({ name: (names.thisUpdate || EMPTY_STRING) }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.GeneralizedTime({ name: (names.nextUpdate || EMPTY_STRING) })]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [Extensions.schema(names.singleExtensions || {})]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$i);\n const asn1 = asn1js.compareSchema(schema, schema, SingleResponse.schema({\n names: {\n certID: {\n names: {\n blockName: CERT_ID\n }\n },\n certStatus: CERT_STATUS,\n thisUpdate: THIS_UPDATE,\n nextUpdate: NEXT_UPDATE,\n singleExtensions: {\n names: {\n blockName: SINGLE_EXTENSIONS\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.certID = new CertID({ schema: asn1.result.certID });\n this.certStatus = asn1.result.certStatus;\n this.thisUpdate = asn1.result.thisUpdate.toDate();\n if (NEXT_UPDATE in asn1.result)\n this.nextUpdate = asn1.result.nextUpdate.toDate();\n if (SINGLE_EXTENSIONS in asn1.result)\n this.singleExtensions = Array.from(asn1.result.singleExtensions.valueBlock.value, element => new Extension({ schema: element }));\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.certID.toSchema());\n outputArray.push(this.certStatus);\n outputArray.push(new asn1js.GeneralizedTime({ valueDate: this.thisUpdate }));\n if (this.nextUpdate) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.GeneralizedTime({ valueDate: this.nextUpdate })]\n }));\n }\n if (this.singleExtensions) {\n outputArray.push(new asn1js.Sequence({\n value: Array.from(this.singleExtensions, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n certID: this.certID.toJSON(),\n certStatus: this.certStatus.toJSON(),\n thisUpdate: this.thisUpdate\n };\n if (this.nextUpdate) {\n res.nextUpdate = this.nextUpdate;\n }\n if (this.singleExtensions) {\n res.singleExtensions = Array.from(this.singleExtensions, o => o.toJSON());\n }\n return res;\n }\n}\nSingleResponse.CLASS_NAME = \"SingleResponse\";\n\nconst TBS$2 = \"tbs\";\nconst VERSION$7 = \"version\";\nconst RESPONDER_ID = \"responderID\";\nconst PRODUCED_AT = \"producedAt\";\nconst RESPONSES = \"responses\";\nconst RESPONSE_EXTENSIONS = \"responseExtensions\";\nconst RESPONSE_DATA = \"ResponseData\";\nconst RESPONSE_DATA_VERSION = `${RESPONSE_DATA}.${VERSION$7}`;\nconst RESPONSE_DATA_RESPONDER_ID = `${RESPONSE_DATA}.${RESPONDER_ID}`;\nconst RESPONSE_DATA_PRODUCED_AT = `${RESPONSE_DATA}.${PRODUCED_AT}`;\nconst RESPONSE_DATA_RESPONSES = `${RESPONSE_DATA}.${RESPONSES}`;\nconst RESPONSE_DATA_RESPONSE_EXTENSIONS = `${RESPONSE_DATA}.${RESPONSE_EXTENSIONS}`;\nconst CLEAR_PROPS$h = [\n RESPONSE_DATA,\n RESPONSE_DATA_VERSION,\n RESPONSE_DATA_RESPONDER_ID,\n RESPONSE_DATA_PRODUCED_AT,\n RESPONSE_DATA_RESPONSES,\n RESPONSE_DATA_RESPONSE_EXTENSIONS\n];\nclass ResponseData extends PkiObject {\n get tbs() {\n return pvtsutils.BufferSourceConverter.toArrayBuffer(this.tbsView);\n }\n set tbs(value) {\n this.tbsView = new Uint8Array(value);\n }\n constructor(parameters = {}) {\n super();\n this.tbsView = new Uint8Array(pvutils.getParametersValue(parameters, TBS$2, ResponseData.defaultValues(TBS$2)));\n if (VERSION$7 in parameters) {\n this.version = pvutils.getParametersValue(parameters, VERSION$7, ResponseData.defaultValues(VERSION$7));\n }\n this.responderID = pvutils.getParametersValue(parameters, RESPONDER_ID, ResponseData.defaultValues(RESPONDER_ID));\n this.producedAt = pvutils.getParametersValue(parameters, PRODUCED_AT, ResponseData.defaultValues(PRODUCED_AT));\n this.responses = pvutils.getParametersValue(parameters, RESPONSES, ResponseData.defaultValues(RESPONSES));\n if (RESPONSE_EXTENSIONS in parameters) {\n this.responseExtensions = pvutils.getParametersValue(parameters, RESPONSE_EXTENSIONS, ResponseData.defaultValues(RESPONSE_EXTENSIONS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$7:\n return 0;\n case TBS$2:\n return EMPTY_BUFFER;\n case RESPONDER_ID:\n return {};\n case PRODUCED_AT:\n return new Date(0, 0, 0);\n case RESPONSES:\n case RESPONSE_EXTENSIONS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TBS$2:\n return (memberValue.byteLength === 0);\n case RESPONDER_ID:\n return (Object.keys(memberValue).length === 0);\n case PRODUCED_AT:\n return (memberValue === ResponseData.defaultValues(memberName));\n case RESPONSES:\n case RESPONSE_EXTENSIONS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || RESPONSE_DATA),\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Integer({ name: (names.version || RESPONSE_DATA_VERSION) })]\n }),\n new asn1js.Choice({\n value: [\n new asn1js.Constructed({\n name: (names.responderID || RESPONSE_DATA_RESPONDER_ID),\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [RelativeDistinguishedNames.schema(names.ResponseDataByName || {\n names: {\n blockName: \"ResponseData.byName\"\n }\n })]\n }),\n new asn1js.Constructed({\n name: (names.responderID || RESPONSE_DATA_RESPONDER_ID),\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [new asn1js.OctetString({ name: (names.ResponseDataByKey || \"ResponseData.byKey\") })]\n })\n ]\n }),\n new asn1js.GeneralizedTime({ name: (names.producedAt || RESPONSE_DATA_PRODUCED_AT) }),\n new asn1js.Sequence({\n value: [\n new asn1js.Repeated({\n name: RESPONSE_DATA_RESPONSES,\n value: SingleResponse.schema(names.response || {})\n })\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [Extensions.schema(names.extensions || {\n names: {\n blockName: RESPONSE_DATA_RESPONSE_EXTENSIONS\n }\n })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$h);\n const asn1 = asn1js.compareSchema(schema, schema, ResponseData.schema());\n AsnError.assertSchema(asn1, this.className);\n this.tbsView = asn1.result.ResponseData.valueBeforeDecodeView;\n if (RESPONSE_DATA_VERSION in asn1.result)\n this.version = asn1.result[RESPONSE_DATA_VERSION].valueBlock.valueDec;\n if (asn1.result[RESPONSE_DATA_RESPONDER_ID].idBlock.tagNumber === 1)\n this.responderID = new RelativeDistinguishedNames({ schema: asn1.result[RESPONSE_DATA_RESPONDER_ID].valueBlock.value[0] });\n else\n this.responderID = asn1.result[RESPONSE_DATA_RESPONDER_ID].valueBlock.value[0];\n this.producedAt = asn1.result[RESPONSE_DATA_PRODUCED_AT].toDate();\n this.responses = Array.from(asn1.result[RESPONSE_DATA_RESPONSES], element => new SingleResponse({ schema: element }));\n if (RESPONSE_DATA_RESPONSE_EXTENSIONS in asn1.result)\n this.responseExtensions = Array.from(asn1.result[RESPONSE_DATA_RESPONSE_EXTENSIONS].valueBlock.value, element => new Extension({ schema: element }));\n }\n toSchema(encodeFlag = false) {\n let tbsSchema;\n if (encodeFlag === false) {\n if (!this.tbsView.byteLength) {\n return ResponseData.schema();\n }\n const asn1 = asn1js.fromBER(this.tbsView);\n AsnError.assert(asn1, \"TBS Response Data\");\n tbsSchema = asn1.result;\n }\n else {\n const outputArray = [];\n if (VERSION$7 in this) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Integer({ value: this.version })]\n }));\n }\n if (this.responderID instanceof RelativeDistinguishedNames) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [this.responderID.toSchema()]\n }));\n }\n else {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [this.responderID]\n }));\n }\n outputArray.push(new asn1js.GeneralizedTime({ valueDate: this.producedAt }));\n outputArray.push(new asn1js.Sequence({\n value: Array.from(this.responses, o => o.toSchema())\n }));\n if (this.responseExtensions) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [new asn1js.Sequence({\n value: Array.from(this.responseExtensions, o => o.toSchema())\n })]\n }));\n }\n tbsSchema = new asn1js.Sequence({\n value: outputArray\n });\n }\n return tbsSchema;\n }\n toJSON() {\n const res = {};\n if (VERSION$7 in this) {\n res.version = this.version;\n }\n if (this.responderID) {\n res.responderID = this.responderID;\n }\n if (this.producedAt) {\n res.producedAt = this.producedAt;\n }\n if (this.responses) {\n res.responses = Array.from(this.responses, o => o.toJSON());\n }\n if (this.responseExtensions) {\n res.responseExtensions = Array.from(this.responseExtensions, o => o.toJSON());\n }\n return res;\n }\n}\nResponseData.CLASS_NAME = \"ResponseData\";\n\nconst TRUSTED_CERTS = \"trustedCerts\";\nconst CERTS$2 = \"certs\";\nconst CRLS$1 = \"crls\";\nconst OCSPS$1 = \"ocsps\";\nconst CHECK_DATE = \"checkDate\";\nconst FIND_ORIGIN = \"findOrigin\";\nconst FIND_ISSUER = \"findIssuer\";\nvar ChainValidationCode;\n(function (ChainValidationCode) {\n ChainValidationCode[ChainValidationCode[\"unknown\"] = -1] = \"unknown\";\n ChainValidationCode[ChainValidationCode[\"success\"] = 0] = \"success\";\n ChainValidationCode[ChainValidationCode[\"noRevocation\"] = 11] = \"noRevocation\";\n ChainValidationCode[ChainValidationCode[\"noPath\"] = 60] = \"noPath\";\n ChainValidationCode[ChainValidationCode[\"noValidPath\"] = 97] = \"noValidPath\";\n})(ChainValidationCode || (ChainValidationCode = {}));\nclass ChainValidationError extends Error {\n constructor(code, message) {\n super(message);\n this.name = ChainValidationError.NAME;\n this.code = code;\n this.message = message;\n }\n}\nChainValidationError.NAME = \"ChainValidationError\";\nfunction isTrusted(cert, trustedList) {\n for (let i = 0; i < trustedList.length; i++) {\n if (pvtsutils.BufferSourceConverter.isEqual(cert.tbsView, trustedList[i].tbsView)) {\n return true;\n }\n }\n return false;\n}\nclass CertificateChainValidationEngine {\n constructor(parameters = {}) {\n this.trustedCerts = pvutils.getParametersValue(parameters, TRUSTED_CERTS, this.defaultValues(TRUSTED_CERTS));\n this.certs = pvutils.getParametersValue(parameters, CERTS$2, this.defaultValues(CERTS$2));\n this.crls = pvutils.getParametersValue(parameters, CRLS$1, this.defaultValues(CRLS$1));\n this.ocsps = pvutils.getParametersValue(parameters, OCSPS$1, this.defaultValues(OCSPS$1));\n this.checkDate = pvutils.getParametersValue(parameters, CHECK_DATE, this.defaultValues(CHECK_DATE));\n this.findOrigin = pvutils.getParametersValue(parameters, FIND_ORIGIN, this.defaultValues(FIND_ORIGIN));\n this.findIssuer = pvutils.getParametersValue(parameters, FIND_ISSUER, this.defaultValues(FIND_ISSUER));\n }\n static defaultFindOrigin(certificate, validationEngine) {\n if (certificate.tbsView.byteLength === 0) {\n certificate.tbsView = new Uint8Array(certificate.encodeTBS().toBER());\n }\n for (const localCert of validationEngine.certs) {\n if (localCert.tbsView.byteLength === 0) {\n localCert.tbsView = new Uint8Array(localCert.encodeTBS().toBER());\n }\n if (pvtsutils.BufferSourceConverter.isEqual(certificate.tbsView, localCert.tbsView))\n return \"Intermediate Certificates\";\n }\n for (const trustedCert of validationEngine.trustedCerts) {\n if (trustedCert.tbsView.byteLength === 0)\n trustedCert.tbsView = new Uint8Array(trustedCert.encodeTBS().toBER());\n if (pvtsutils.BufferSourceConverter.isEqual(certificate.tbsView, trustedCert.tbsView))\n return \"Trusted Certificates\";\n }\n return \"Unknown\";\n }\n async defaultFindIssuer(certificate, validationEngine, crypto = getCrypto(true)) {\n const result = [];\n let keyIdentifier = null;\n let authorityCertIssuer = null;\n let authorityCertSerialNumber = null;\n if (certificate.subject.isEqual(certificate.issuer)) {\n try {\n const verificationResult = await certificate.verify(undefined, crypto);\n if (verificationResult) {\n return [certificate];\n }\n }\n catch (ex) {\n }\n }\n if (certificate.extensions) {\n for (const extension of certificate.extensions) {\n if (extension.extnID === id_AuthorityKeyIdentifier && extension.parsedValue instanceof AuthorityKeyIdentifier) {\n if (extension.parsedValue.keyIdentifier) {\n keyIdentifier = extension.parsedValue.keyIdentifier;\n }\n else {\n if (extension.parsedValue.authorityCertIssuer) {\n authorityCertIssuer = extension.parsedValue.authorityCertIssuer;\n }\n if (extension.parsedValue.authorityCertSerialNumber) {\n authorityCertSerialNumber = extension.parsedValue.authorityCertSerialNumber;\n }\n }\n break;\n }\n }\n }\n function checkCertificate(possibleIssuer) {\n if (keyIdentifier !== null) {\n if (possibleIssuer.extensions) {\n let extensionFound = false;\n for (const extension of possibleIssuer.extensions) {\n if (extension.extnID === id_SubjectKeyIdentifier && extension.parsedValue) {\n extensionFound = true;\n if (pvtsutils.BufferSourceConverter.isEqual(extension.parsedValue.valueBlock.valueHex, keyIdentifier.valueBlock.valueHexView)) {\n result.push(possibleIssuer);\n }\n break;\n }\n }\n if (extensionFound) {\n return;\n }\n }\n }\n let authorityCertSerialNumberEqual = false;\n if (authorityCertSerialNumber !== null)\n authorityCertSerialNumberEqual = possibleIssuer.serialNumber.isEqual(authorityCertSerialNumber);\n if (authorityCertIssuer !== null) {\n if (possibleIssuer.subject.isEqual(authorityCertIssuer)) {\n if (authorityCertSerialNumberEqual)\n result.push(possibleIssuer);\n }\n }\n else {\n if (certificate.issuer.isEqual(possibleIssuer.subject))\n result.push(possibleIssuer);\n }\n }\n for (const trustedCert of validationEngine.trustedCerts) {\n checkCertificate(trustedCert);\n }\n for (const intermediateCert of validationEngine.certs) {\n checkCertificate(intermediateCert);\n }\n for (let i = result.length - 1; i >= 0; i--) {\n try {\n const verificationResult = await certificate.verify(result[i], crypto);\n if (verificationResult === false)\n result.splice(i, 1);\n }\n catch (ex) {\n result.splice(i, 1);\n }\n }\n return result;\n }\n defaultValues(memberName) {\n switch (memberName) {\n case TRUSTED_CERTS:\n return [];\n case CERTS$2:\n return [];\n case CRLS$1:\n return [];\n case OCSPS$1:\n return [];\n case CHECK_DATE:\n return new Date();\n case FIND_ORIGIN:\n return CertificateChainValidationEngine.defaultFindOrigin;\n case FIND_ISSUER:\n return this.defaultFindIssuer;\n default:\n throw new Error(`Invalid member name for CertificateChainValidationEngine class: ${memberName}`);\n }\n }\n async sort(passedWhenNotRevValues = false, crypto = getCrypto(true)) {\n const localCerts = [];\n const buildPath = async (certificate, crypto) => {\n const result = [];\n function checkUnique(array) {\n let unique = true;\n for (let i = 0; i < array.length; i++) {\n for (let j = 0; j < array.length; j++) {\n if (j === i)\n continue;\n if (array[i] === array[j]) {\n unique = false;\n break;\n }\n }\n if (!unique)\n break;\n }\n return unique;\n }\n if (isTrusted(certificate, this.trustedCerts)) {\n return [[certificate]];\n }\n const findIssuerResult = await this.findIssuer(certificate, this, crypto);\n if (findIssuerResult.length === 0) {\n throw new Error(\"No valid certificate paths found\");\n }\n for (let i = 0; i < findIssuerResult.length; i++) {\n if (pvtsutils.BufferSourceConverter.isEqual(findIssuerResult[i].tbsView, certificate.tbsView)) {\n result.push([findIssuerResult[i]]);\n continue;\n }\n const buildPathResult = await buildPath(findIssuerResult[i], crypto);\n for (let j = 0; j < buildPathResult.length; j++) {\n const copy = buildPathResult[j].slice();\n copy.splice(0, 0, findIssuerResult[i]);\n if (checkUnique(copy))\n result.push(copy);\n else\n result.push(buildPathResult[j]);\n }\n }\n return result;\n };\n const findCRL = async (certificate) => {\n const issuerCertificates = [];\n const crls = [];\n const crlsAndCertificates = [];\n issuerCertificates.push(...localCerts.filter(element => certificate.issuer.isEqual(element.subject)));\n if (issuerCertificates.length === 0) {\n return {\n status: 1,\n statusMessage: \"No certificate's issuers\"\n };\n }\n crls.push(...this.crls.filter(o => o.issuer.isEqual(certificate.issuer)));\n if (crls.length === 0) {\n return {\n status: 2,\n statusMessage: \"No CRLs for specific certificate issuer\"\n };\n }\n for (let i = 0; i < crls.length; i++) {\n const crl = crls[i];\n if (crl.nextUpdate && crl.nextUpdate.value < this.checkDate) {\n continue;\n }\n for (let j = 0; j < issuerCertificates.length; j++) {\n try {\n const result = await crls[i].verify({ issuerCertificate: issuerCertificates[j] }, crypto);\n if (result) {\n crlsAndCertificates.push({\n crl: crls[i],\n certificate: issuerCertificates[j]\n });\n break;\n }\n }\n catch (ex) {\n }\n }\n }\n if (crlsAndCertificates.length) {\n return {\n status: 0,\n statusMessage: EMPTY_STRING,\n result: crlsAndCertificates\n };\n }\n return {\n status: 3,\n statusMessage: \"No valid CRLs found\"\n };\n };\n const findOCSP = async (certificate, issuerCertificate) => {\n const hashAlgorithm = crypto.getAlgorithmByOID(certificate.signatureAlgorithm.algorithmId);\n if (!hashAlgorithm.name) {\n return 1;\n }\n if (!hashAlgorithm.hash) {\n return 1;\n }\n for (let i = 0; i < this.ocsps.length; i++) {\n const ocsp = this.ocsps[i];\n const result = await ocsp.getCertificateStatus(certificate, issuerCertificate, crypto);\n if (result.isForCertificate) {\n if (result.status === 0)\n return 0;\n return 1;\n }\n }\n return 2;\n };\n async function checkForCA(certificate, needToCheckCRL = false) {\n let isCA = false;\n let mustBeCA = false;\n let keyUsagePresent = false;\n let cRLSign = false;\n if (certificate.extensions) {\n for (let j = 0; j < certificate.extensions.length; j++) {\n const extension = certificate.extensions[j];\n if (extension.critical && !extension.parsedValue) {\n return {\n result: false,\n resultCode: 6,\n resultMessage: `Unable to parse critical certificate extension: ${extension.extnID}`\n };\n }\n if (extension.extnID === id_KeyUsage) {\n keyUsagePresent = true;\n const view = new Uint8Array(extension.parsedValue.valueBlock.valueHex);\n if ((view[0] & 0x04) === 0x04)\n mustBeCA = true;\n if ((view[0] & 0x02) === 0x02)\n cRLSign = true;\n }\n if (extension.extnID === id_BasicConstraints) {\n if (\"cA\" in extension.parsedValue) {\n if (extension.parsedValue.cA === true)\n isCA = true;\n }\n }\n }\n if ((mustBeCA === true) && (isCA === false)) {\n return {\n result: false,\n resultCode: 3,\n resultMessage: \"Unable to build certificate chain - using \\\"keyCertSign\\\" flag set without BasicConstraints\"\n };\n }\n if ((keyUsagePresent === true) && (isCA === true) && (mustBeCA === false)) {\n return {\n result: false,\n resultCode: 4,\n resultMessage: \"Unable to build certificate chain - \\\"keyCertSign\\\" flag was not set\"\n };\n }\n if ((isCA === true) && (keyUsagePresent === true) && ((needToCheckCRL) && (cRLSign === false))) {\n return {\n result: false,\n resultCode: 5,\n resultMessage: \"Unable to build certificate chain - intermediate certificate must have \\\"cRLSign\\\" key usage flag\"\n };\n }\n }\n if (isCA === false) {\n return {\n result: false,\n resultCode: 7,\n resultMessage: \"Unable to build certificate chain - more than one possible end-user certificate\"\n };\n }\n return {\n result: true,\n resultCode: 0,\n resultMessage: EMPTY_STRING\n };\n }\n const basicCheck = async (path, checkDate) => {\n for (let i = 0; i < path.length; i++) {\n if ((path[i].notBefore.value > checkDate) ||\n (path[i].notAfter.value < checkDate)) {\n return {\n result: false,\n resultCode: 8,\n resultMessage: \"The certificate is either not yet valid or expired\"\n };\n }\n }\n if (path.length < 2) {\n return {\n result: false,\n resultCode: 9,\n resultMessage: \"Too short certificate path\"\n };\n }\n for (let i = (path.length - 2); i >= 0; i--) {\n if (path[i].issuer.isEqual(path[i].subject) === false) {\n if (path[i].issuer.isEqual(path[i + 1].subject) === false) {\n return {\n result: false,\n resultCode: 10,\n resultMessage: \"Incorrect name chaining\"\n };\n }\n }\n }\n if ((this.crls.length !== 0) || (this.ocsps.length !== 0)) {\n for (let i = 0; i < (path.length - 1); i++) {\n let ocspResult = 2;\n let crlResult = {\n status: 0,\n statusMessage: EMPTY_STRING\n };\n if (this.ocsps.length !== 0) {\n ocspResult = await findOCSP(path[i], path[i + 1]);\n switch (ocspResult) {\n case 0:\n continue;\n case 1:\n return {\n result: false,\n resultCode: 12,\n resultMessage: \"One of certificates was revoked via OCSP response\"\n };\n }\n }\n if (this.crls.length !== 0) {\n crlResult = await findCRL(path[i]);\n if (crlResult.status === 0 && crlResult.result) {\n for (let j = 0; j < crlResult.result.length; j++) {\n const isCertificateRevoked = crlResult.result[j].crl.isCertificateRevoked(path[i]);\n if (isCertificateRevoked) {\n return {\n result: false,\n resultCode: 12,\n resultMessage: \"One of certificates had been revoked\"\n };\n }\n const isCertificateCA = await checkForCA(crlResult.result[j].certificate, true);\n if (isCertificateCA.result === false) {\n return {\n result: false,\n resultCode: 13,\n resultMessage: \"CRL issuer certificate is not a CA certificate or does not have crlSign flag\"\n };\n }\n }\n }\n else {\n if (passedWhenNotRevValues === false) {\n throw new ChainValidationError(ChainValidationCode.noRevocation, `No revocation values found for one of certificates: ${crlResult.statusMessage}`);\n }\n }\n }\n else {\n if (ocspResult === 2) {\n return {\n result: false,\n resultCode: 11,\n resultMessage: \"No revocation values found for one of certificates\"\n };\n }\n }\n if ((ocspResult === 2) && (crlResult.status === 2) && passedWhenNotRevValues) {\n const issuerCertificate = path[i + 1];\n let extensionFound = false;\n if (issuerCertificate.extensions) {\n for (const extension of issuerCertificate.extensions) {\n switch (extension.extnID) {\n case id_CRLDistributionPoints:\n case id_FreshestCRL:\n case id_AuthorityInfoAccess:\n extensionFound = true;\n break;\n }\n }\n }\n if (extensionFound) {\n throw new ChainValidationError(ChainValidationCode.noRevocation, `No revocation values found for one of certificates: ${crlResult.statusMessage}`);\n }\n }\n }\n }\n for (const [i, cert] of path.entries()) {\n if (!i) {\n continue;\n }\n const result = await checkForCA(cert);\n if (!result.result) {\n return {\n result: false,\n resultCode: 14,\n resultMessage: \"One of intermediate certificates is not a CA certificate\"\n };\n }\n }\n return {\n result: true\n };\n };\n localCerts.push(...this.trustedCerts);\n localCerts.push(...this.certs);\n for (let i = 0; i < localCerts.length; i++) {\n for (let j = 0; j < localCerts.length; j++) {\n if (i === j)\n continue;\n if (pvtsutils.BufferSourceConverter.isEqual(localCerts[i].tbsView, localCerts[j].tbsView)) {\n localCerts.splice(j, 1);\n i = 0;\n break;\n }\n }\n }\n const leafCert = localCerts[localCerts.length - 1];\n let result;\n const certificatePath = [leafCert];\n result = await buildPath(leafCert, crypto);\n if (result.length === 0) {\n throw new ChainValidationError(ChainValidationCode.noPath, \"Unable to find certificate path\");\n }\n for (let i = result.length - 1; i >= 0; i--) {\n let found = false;\n for (let j = 0; j < (result[i]).length; j++) {\n const certificate = (result[i])[j];\n for (let k = 0; k < this.trustedCerts.length; k++) {\n if (pvtsutils.BufferSourceConverter.isEqual(certificate.tbsView, this.trustedCerts[k].tbsView)) {\n found = true;\n break;\n }\n }\n if (found)\n break;\n }\n if (!found) {\n result.splice(i, 1);\n }\n }\n if (result.length === 0) {\n throw new ChainValidationError(ChainValidationCode.noValidPath, \"No valid certificate paths found\");\n }\n let shortestLength = result[0].length;\n let shortestIndex = 0;\n for (let i = 0; i < result.length; i++) {\n if (result[i].length < shortestLength) {\n shortestLength = result[i].length;\n shortestIndex = i;\n }\n }\n for (let i = 0; i < result[shortestIndex].length; i++)\n certificatePath.push((result[shortestIndex])[i]);\n result = await basicCheck(certificatePath, this.checkDate);\n if (result.result === false)\n throw result;\n return certificatePath;\n }\n async verify(parameters = {}, crypto = getCrypto(true)) {\n function compareDNSName(name, constraint) {\n const namePrepared = stringPrep(name);\n const constraintPrepared = stringPrep(constraint);\n const nameSplitted = namePrepared.split(\".\");\n const constraintSplitted = constraintPrepared.split(\".\");\n const nameLen = nameSplitted.length;\n const constrLen = constraintSplitted.length;\n if ((nameLen === 0) || (constrLen === 0) || (nameLen < constrLen)) {\n return false;\n }\n for (let i = 0; i < nameLen; i++) {\n if (nameSplitted[i].length === 0) {\n return false;\n }\n }\n for (let i = 0; i < constrLen; i++) {\n if (constraintSplitted[i].length === 0) {\n if (i === 0) {\n if (constrLen === 1) {\n return false;\n }\n continue;\n }\n return false;\n }\n }\n for (let i = 0; i < constrLen; i++) {\n if (constraintSplitted[constrLen - 1 - i].length === 0) {\n continue;\n }\n if (nameSplitted[nameLen - 1 - i].localeCompare(constraintSplitted[constrLen - 1 - i]) !== 0) {\n return false;\n }\n }\n return true;\n }\n function compareRFC822Name(name, constraint) {\n const namePrepared = stringPrep(name);\n const constraintPrepared = stringPrep(constraint);\n const nameSplitted = namePrepared.split(\"@\");\n const constraintSplitted = constraintPrepared.split(\"@\");\n if ((nameSplitted.length === 0) || (constraintSplitted.length === 0) || (nameSplitted.length < constraintSplitted.length))\n return false;\n if (constraintSplitted.length === 1) {\n const result = compareDNSName(nameSplitted[1], constraintSplitted[0]);\n if (result) {\n const ns = nameSplitted[1].split(\".\");\n const cs = constraintSplitted[0].split(\".\");\n if (cs[0].length === 0)\n return true;\n return ns.length === cs.length;\n }\n return false;\n }\n return (namePrepared.localeCompare(constraintPrepared) === 0);\n }\n function compareUniformResourceIdentifier(name, constraint) {\n let namePrepared = stringPrep(name);\n const constraintPrepared = stringPrep(constraint);\n const ns = namePrepared.split(\"/\");\n const cs = constraintPrepared.split(\"/\");\n if (cs.length > 1)\n return false;\n if (ns.length > 1) {\n for (let i = 0; i < ns.length; i++) {\n if ((ns[i].length > 0) && (ns[i].charAt(ns[i].length - 1) !== \":\")) {\n const nsPort = ns[i].split(\":\");\n namePrepared = nsPort[0];\n break;\n }\n }\n }\n const result = compareDNSName(namePrepared, constraintPrepared);\n if (result) {\n const nameSplitted = namePrepared.split(\".\");\n const constraintSplitted = constraintPrepared.split(\".\");\n if (constraintSplitted[0].length === 0)\n return true;\n return nameSplitted.length === constraintSplitted.length;\n }\n return false;\n }\n function compareIPAddress(name, constraint) {\n const nameView = name.valueBlock.valueHexView;\n const constraintView = constraint.valueBlock.valueHexView;\n if ((nameView.length === 4) && (constraintView.length === 8)) {\n for (let i = 0; i < 4; i++) {\n if ((nameView[i] ^ constraintView[i]) & constraintView[i + 4])\n return false;\n }\n return true;\n }\n if ((nameView.length === 16) && (constraintView.length === 32)) {\n for (let i = 0; i < 16; i++) {\n if ((nameView[i] ^ constraintView[i]) & constraintView[i + 16])\n return false;\n }\n return true;\n }\n return false;\n }\n function compareDirectoryName(name, constraint) {\n if ((name.typesAndValues.length === 0) || (constraint.typesAndValues.length === 0))\n return true;\n if (name.typesAndValues.length < constraint.typesAndValues.length)\n return false;\n let result = true;\n let nameStart = 0;\n for (let i = 0; i < constraint.typesAndValues.length; i++) {\n let localResult = false;\n for (let j = nameStart; j < name.typesAndValues.length; j++) {\n localResult = name.typesAndValues[j].isEqual(constraint.typesAndValues[i]);\n if (name.typesAndValues[j].type === constraint.typesAndValues[i].type)\n result = result && localResult;\n if (localResult === true) {\n if ((nameStart === 0) || (nameStart === j)) {\n nameStart = j + 1;\n break;\n }\n else\n return false;\n }\n }\n if (localResult === false)\n return false;\n }\n return (nameStart === 0) ? false : result;\n }\n try {\n if (this.certs.length === 0)\n throw new Error(\"Empty certificate array\");\n const passedWhenNotRevValues = parameters.passedWhenNotRevValues || false;\n const initialPolicySet = parameters.initialPolicySet || [id_AnyPolicy];\n const initialExplicitPolicy = parameters.initialExplicitPolicy || false;\n const initialPolicyMappingInhibit = parameters.initialPolicyMappingInhibit || false;\n const initialInhibitPolicy = parameters.initialInhibitPolicy || false;\n const initialPermittedSubtreesSet = parameters.initialPermittedSubtreesSet || [];\n const initialExcludedSubtreesSet = parameters.initialExcludedSubtreesSet || [];\n const initialRequiredNameForms = parameters.initialRequiredNameForms || [];\n let explicitPolicyIndicator = initialExplicitPolicy;\n let policyMappingInhibitIndicator = initialPolicyMappingInhibit;\n let inhibitAnyPolicyIndicator = initialInhibitPolicy;\n const pendingConstraints = [\n false,\n false,\n false,\n ];\n let explicitPolicyPending = 0;\n let policyMappingInhibitPending = 0;\n let inhibitAnyPolicyPending = 0;\n let permittedSubtrees = initialPermittedSubtreesSet;\n let excludedSubtrees = initialExcludedSubtreesSet;\n const requiredNameForms = initialRequiredNameForms;\n let pathDepth = 1;\n this.certs = await this.sort(passedWhenNotRevValues, crypto);\n const allPolicies = [];\n allPolicies.push(id_AnyPolicy);\n const policiesAndCerts = [];\n const anyPolicyArray = new Array(this.certs.length - 1);\n for (let ii = 0; ii < (this.certs.length - 1); ii++)\n anyPolicyArray[ii] = true;\n policiesAndCerts.push(anyPolicyArray);\n const policyMappings = new Array(this.certs.length - 1);\n const certPolicies = new Array(this.certs.length - 1);\n let explicitPolicyStart = (explicitPolicyIndicator) ? (this.certs.length - 1) : (-1);\n for (let i = (this.certs.length - 2); i >= 0; i--, pathDepth++) {\n const cert = this.certs[i];\n if (cert.extensions) {\n for (let j = 0; j < cert.extensions.length; j++) {\n const extension = cert.extensions[j];\n if (extension.extnID === id_CertificatePolicies) {\n certPolicies[i] = extension.parsedValue;\n for (let s = 0; s < allPolicies.length; s++) {\n if (allPolicies[s] === id_AnyPolicy) {\n delete (policiesAndCerts[s])[i];\n break;\n }\n }\n for (let k = 0; k < extension.parsedValue.certificatePolicies.length; k++) {\n let policyIndex = (-1);\n const policyId = extension.parsedValue.certificatePolicies[k].policyIdentifier;\n for (let s = 0; s < allPolicies.length; s++) {\n if (policyId === allPolicies[s]) {\n policyIndex = s;\n break;\n }\n }\n if (policyIndex === (-1)) {\n allPolicies.push(policyId);\n const certArray = new Array(this.certs.length - 1);\n certArray[i] = true;\n policiesAndCerts.push(certArray);\n }\n else\n (policiesAndCerts[policyIndex])[i] = true;\n }\n }\n if (extension.extnID === id_PolicyMappings) {\n if (policyMappingInhibitIndicator) {\n return {\n result: false,\n resultCode: 98,\n resultMessage: \"Policy mapping prohibited\"\n };\n }\n policyMappings[i] = extension.parsedValue;\n }\n if (extension.extnID === id_PolicyConstraints) {\n if (explicitPolicyIndicator === false) {\n if (extension.parsedValue.requireExplicitPolicy === 0) {\n explicitPolicyIndicator = true;\n explicitPolicyStart = i;\n }\n else {\n if (pendingConstraints[0] === false) {\n pendingConstraints[0] = true;\n explicitPolicyPending = extension.parsedValue.requireExplicitPolicy;\n }\n else\n explicitPolicyPending = (explicitPolicyPending > extension.parsedValue.requireExplicitPolicy) ? extension.parsedValue.requireExplicitPolicy : explicitPolicyPending;\n }\n if (extension.parsedValue.inhibitPolicyMapping === 0)\n policyMappingInhibitIndicator = true;\n else {\n if (pendingConstraints[1] === false) {\n pendingConstraints[1] = true;\n policyMappingInhibitPending = extension.parsedValue.inhibitPolicyMapping + 1;\n }\n else\n policyMappingInhibitPending = (policyMappingInhibitPending > (extension.parsedValue.inhibitPolicyMapping + 1)) ? (extension.parsedValue.inhibitPolicyMapping + 1) : policyMappingInhibitPending;\n }\n }\n }\n if (extension.extnID === id_InhibitAnyPolicy) {\n if (inhibitAnyPolicyIndicator === false) {\n if (extension.parsedValue.valueBlock.valueDec === 0)\n inhibitAnyPolicyIndicator = true;\n else {\n if (pendingConstraints[2] === false) {\n pendingConstraints[2] = true;\n inhibitAnyPolicyPending = extension.parsedValue.valueBlock.valueDec;\n }\n else\n inhibitAnyPolicyPending = (inhibitAnyPolicyPending > extension.parsedValue.valueBlock.valueDec) ? extension.parsedValue.valueBlock.valueDec : inhibitAnyPolicyPending;\n }\n }\n }\n }\n if (inhibitAnyPolicyIndicator === true) {\n let policyIndex = (-1);\n for (let searchAnyPolicy = 0; searchAnyPolicy < allPolicies.length; searchAnyPolicy++) {\n if (allPolicies[searchAnyPolicy] === id_AnyPolicy) {\n policyIndex = searchAnyPolicy;\n break;\n }\n }\n if (policyIndex !== (-1))\n delete (policiesAndCerts[0])[i];\n }\n if (explicitPolicyIndicator === false) {\n if (pendingConstraints[0] === true) {\n explicitPolicyPending--;\n if (explicitPolicyPending === 0) {\n explicitPolicyIndicator = true;\n explicitPolicyStart = i;\n pendingConstraints[0] = false;\n }\n }\n }\n if (policyMappingInhibitIndicator === false) {\n if (pendingConstraints[1] === true) {\n policyMappingInhibitPending--;\n if (policyMappingInhibitPending === 0) {\n policyMappingInhibitIndicator = true;\n pendingConstraints[1] = false;\n }\n }\n }\n if (inhibitAnyPolicyIndicator === false) {\n if (pendingConstraints[2] === true) {\n inhibitAnyPolicyPending--;\n if (inhibitAnyPolicyPending === 0) {\n inhibitAnyPolicyIndicator = true;\n pendingConstraints[2] = false;\n }\n }\n }\n }\n }\n for (let i = 0; i < (this.certs.length - 1); i++) {\n if ((i < (this.certs.length - 2)) && (typeof policyMappings[i + 1] !== \"undefined\")) {\n for (let k = 0; k < policyMappings[i + 1].mappings.length; k++) {\n if ((policyMappings[i + 1].mappings[k].issuerDomainPolicy === id_AnyPolicy) || (policyMappings[i + 1].mappings[k].subjectDomainPolicy === id_AnyPolicy)) {\n return {\n result: false,\n resultCode: 99,\n resultMessage: \"The \\\"anyPolicy\\\" should not be a part of policy mapping scheme\"\n };\n }\n let issuerDomainPolicyIndex = (-1);\n let subjectDomainPolicyIndex = (-1);\n for (let n = 0; n < allPolicies.length; n++) {\n if (allPolicies[n] === policyMappings[i + 1].mappings[k].issuerDomainPolicy)\n issuerDomainPolicyIndex = n;\n if (allPolicies[n] === policyMappings[i + 1].mappings[k].subjectDomainPolicy)\n subjectDomainPolicyIndex = n;\n }\n if (typeof (policiesAndCerts[issuerDomainPolicyIndex])[i] !== \"undefined\")\n delete (policiesAndCerts[issuerDomainPolicyIndex])[i];\n for (let j = 0; j < certPolicies[i].certificatePolicies.length; j++) {\n if (policyMappings[i + 1].mappings[k].subjectDomainPolicy === certPolicies[i].certificatePolicies[j].policyIdentifier) {\n if ((issuerDomainPolicyIndex !== (-1)) && (subjectDomainPolicyIndex !== (-1))) {\n for (let m = 0; m <= i; m++) {\n if (typeof (policiesAndCerts[subjectDomainPolicyIndex])[m] !== \"undefined\") {\n (policiesAndCerts[issuerDomainPolicyIndex])[m] = true;\n delete (policiesAndCerts[subjectDomainPolicyIndex])[m];\n }\n }\n }\n }\n }\n }\n }\n }\n for (let i = 0; i < allPolicies.length; i++) {\n if (allPolicies[i] === id_AnyPolicy) {\n for (let j = 0; j < explicitPolicyStart; j++)\n delete (policiesAndCerts[i])[j];\n }\n }\n const authConstrPolicies = [];\n for (let i = 0; i < policiesAndCerts.length; i++) {\n let found = true;\n for (let j = 0; j < (this.certs.length - 1); j++) {\n let anyPolicyFound = false;\n if ((j < explicitPolicyStart) && (allPolicies[i] === id_AnyPolicy) && (allPolicies.length > 1)) {\n found = false;\n break;\n }\n if (typeof (policiesAndCerts[i])[j] === \"undefined\") {\n if (j >= explicitPolicyStart) {\n for (let k = 0; k < allPolicies.length; k++) {\n if (allPolicies[k] === id_AnyPolicy) {\n if ((policiesAndCerts[k])[j] === true)\n anyPolicyFound = true;\n break;\n }\n }\n }\n if (!anyPolicyFound) {\n found = false;\n break;\n }\n }\n }\n if (found === true)\n authConstrPolicies.push(allPolicies[i]);\n }\n let userConstrPolicies = [];\n if ((initialPolicySet.length === 1) && (initialPolicySet[0] === id_AnyPolicy) && (explicitPolicyIndicator === false))\n userConstrPolicies = initialPolicySet;\n else {\n if ((authConstrPolicies.length === 1) && (authConstrPolicies[0] === id_AnyPolicy))\n userConstrPolicies = initialPolicySet;\n else {\n for (let i = 0; i < authConstrPolicies.length; i++) {\n for (let j = 0; j < initialPolicySet.length; j++) {\n if ((initialPolicySet[j] === authConstrPolicies[i]) || (initialPolicySet[j] === id_AnyPolicy)) {\n userConstrPolicies.push(authConstrPolicies[i]);\n break;\n }\n }\n }\n }\n }\n const policyResult = {\n result: (userConstrPolicies.length > 0),\n resultCode: 0,\n resultMessage: (userConstrPolicies.length > 0) ? EMPTY_STRING : \"Zero \\\"userConstrPolicies\\\" array, no intersections with \\\"authConstrPolicies\\\"\",\n authConstrPolicies,\n userConstrPolicies,\n explicitPolicyIndicator,\n policyMappings,\n certificatePath: this.certs\n };\n if (userConstrPolicies.length === 0)\n return policyResult;\n if (policyResult.result === false)\n return policyResult;\n pathDepth = 1;\n for (let i = (this.certs.length - 2); i >= 0; i--, pathDepth++) {\n const cert = this.certs[i];\n let subjectAltNames = [];\n let certPermittedSubtrees = [];\n let certExcludedSubtrees = [];\n if (cert.extensions) {\n for (let j = 0; j < cert.extensions.length; j++) {\n const extension = cert.extensions[j];\n if (extension.extnID === id_NameConstraints) {\n if (\"permittedSubtrees\" in extension.parsedValue)\n certPermittedSubtrees = certPermittedSubtrees.concat(extension.parsedValue.permittedSubtrees);\n if (\"excludedSubtrees\" in extension.parsedValue)\n certExcludedSubtrees = certExcludedSubtrees.concat(extension.parsedValue.excludedSubtrees);\n }\n if (extension.extnID === id_SubjectAltName)\n subjectAltNames = subjectAltNames.concat(extension.parsedValue.altNames);\n }\n }\n let formFound = (requiredNameForms.length <= 0);\n for (let j = 0; j < requiredNameForms.length; j++) {\n switch (requiredNameForms[j].base.type) {\n case 4:\n {\n if (requiredNameForms[j].base.value.typesAndValues.length !== cert.subject.typesAndValues.length)\n continue;\n formFound = true;\n for (let k = 0; k < cert.subject.typesAndValues.length; k++) {\n if (cert.subject.typesAndValues[k].type !== requiredNameForms[j].base.value.typesAndValues[k].type) {\n formFound = false;\n break;\n }\n }\n if (formFound === true)\n break;\n }\n break;\n default:\n }\n }\n if (formFound === false) {\n policyResult.result = false;\n policyResult.resultCode = 21;\n policyResult.resultMessage = \"No necessary name form found\";\n throw policyResult;\n }\n const constrGroups = [\n [],\n [],\n [],\n [],\n [],\n ];\n for (let j = 0; j < permittedSubtrees.length; j++) {\n switch (permittedSubtrees[j].base.type) {\n case 1:\n constrGroups[0].push(permittedSubtrees[j]);\n break;\n case 2:\n constrGroups[1].push(permittedSubtrees[j]);\n break;\n case 4:\n constrGroups[2].push(permittedSubtrees[j]);\n break;\n case 6:\n constrGroups[3].push(permittedSubtrees[j]);\n break;\n case 7:\n constrGroups[4].push(permittedSubtrees[j]);\n break;\n default:\n }\n }\n for (let p = 0; p < 5; p++) {\n let groupPermitted = false;\n let valueExists = false;\n const group = constrGroups[p];\n for (let j = 0; j < group.length; j++) {\n switch (p) {\n case 0:\n if (subjectAltNames.length > 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 1) {\n valueExists = true;\n groupPermitted = groupPermitted || compareRFC822Name(subjectAltNames[k].value, group[j].base.value);\n }\n }\n }\n else {\n for (let k = 0; k < cert.subject.typesAndValues.length; k++) {\n if ((cert.subject.typesAndValues[k].type === \"1.2.840.113549.1.9.1\") ||\n (cert.subject.typesAndValues[k].type === \"0.9.2342.19200300.100.1.3\")) {\n valueExists = true;\n groupPermitted = groupPermitted || compareRFC822Name(cert.subject.typesAndValues[k].value.valueBlock.value, group[j].base.value);\n }\n }\n }\n break;\n case 1:\n if (subjectAltNames.length > 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 2) {\n valueExists = true;\n groupPermitted = groupPermitted || compareDNSName(subjectAltNames[k].value, group[j].base.value);\n }\n }\n }\n break;\n case 2:\n valueExists = true;\n groupPermitted = compareDirectoryName(cert.subject, group[j].base.value);\n break;\n case 3:\n if (subjectAltNames.length > 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 6) {\n valueExists = true;\n groupPermitted = groupPermitted || compareUniformResourceIdentifier(subjectAltNames[k].value, group[j].base.value);\n }\n }\n }\n break;\n case 4:\n if (subjectAltNames.length > 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 7) {\n valueExists = true;\n groupPermitted = groupPermitted || compareIPAddress(subjectAltNames[k].value, group[j].base.value);\n }\n }\n }\n break;\n default:\n }\n if (groupPermitted)\n break;\n }\n if ((groupPermitted === false) && (group.length > 0) && valueExists) {\n policyResult.result = false;\n policyResult.resultCode = 41;\n policyResult.resultMessage = \"Failed to meet \\\"permitted sub-trees\\\" name constraint\";\n throw policyResult;\n }\n }\n let excluded = false;\n for (let j = 0; j < excludedSubtrees.length; j++) {\n switch (excludedSubtrees[j].base.type) {\n case 1:\n if (subjectAltNames.length >= 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 1)\n excluded = excluded || compareRFC822Name(subjectAltNames[k].value, excludedSubtrees[j].base.value);\n }\n }\n else {\n for (let k = 0; k < cert.subject.typesAndValues.length; k++) {\n if ((cert.subject.typesAndValues[k].type === \"1.2.840.113549.1.9.1\") ||\n (cert.subject.typesAndValues[k].type === \"0.9.2342.19200300.100.1.3\"))\n excluded = excluded || compareRFC822Name(cert.subject.typesAndValues[k].value.valueBlock.value, excludedSubtrees[j].base.value);\n }\n }\n break;\n case 2:\n if (subjectAltNames.length > 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 2)\n excluded = excluded || compareDNSName(subjectAltNames[k].value, excludedSubtrees[j].base.value);\n }\n }\n break;\n case 4:\n excluded = excluded || compareDirectoryName(cert.subject, excludedSubtrees[j].base.value);\n break;\n case 6:\n if (subjectAltNames.length > 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 6)\n excluded = excluded || compareUniformResourceIdentifier(subjectAltNames[k].value, excludedSubtrees[j].base.value);\n }\n }\n break;\n case 7:\n if (subjectAltNames.length > 0) {\n for (let k = 0; k < subjectAltNames.length; k++) {\n if (subjectAltNames[k].type === 7)\n excluded = excluded || compareIPAddress(subjectAltNames[k].value, excludedSubtrees[j].base.value);\n }\n }\n break;\n default:\n }\n if (excluded)\n break;\n }\n if (excluded === true) {\n policyResult.result = false;\n policyResult.resultCode = 42;\n policyResult.resultMessage = \"Failed to meet \\\"excluded sub-trees\\\" name constraint\";\n throw policyResult;\n }\n permittedSubtrees = permittedSubtrees.concat(certPermittedSubtrees);\n excludedSubtrees = excludedSubtrees.concat(certExcludedSubtrees);\n }\n return policyResult;\n }\n catch (error) {\n if (error instanceof Error) {\n if (error instanceof ChainValidationError) {\n return {\n result: false,\n resultCode: error.code,\n resultMessage: error.message,\n error: error,\n };\n }\n return {\n result: false,\n resultCode: ChainValidationCode.unknown,\n resultMessage: error.message,\n error: error,\n };\n }\n if (error && typeof error === \"object\" && \"resultMessage\" in error) {\n return error;\n }\n return {\n result: false,\n resultCode: -1,\n resultMessage: `${error}`,\n };\n }\n }\n}\n\nconst TBS_RESPONSE_DATA = \"tbsResponseData\";\nconst SIGNATURE_ALGORITHM$3 = \"signatureAlgorithm\";\nconst SIGNATURE$2 = \"signature\";\nconst CERTS$1 = \"certs\";\nconst BASIC_OCSP_RESPONSE = \"BasicOCSPResponse\";\nconst BASIC_OCSP_RESPONSE_TBS_RESPONSE_DATA = `${BASIC_OCSP_RESPONSE}.${TBS_RESPONSE_DATA}`;\nconst BASIC_OCSP_RESPONSE_SIGNATURE_ALGORITHM = `${BASIC_OCSP_RESPONSE}.${SIGNATURE_ALGORITHM$3}`;\nconst BASIC_OCSP_RESPONSE_SIGNATURE = `${BASIC_OCSP_RESPONSE}.${SIGNATURE$2}`;\nconst BASIC_OCSP_RESPONSE_CERTS = `${BASIC_OCSP_RESPONSE}.${CERTS$1}`;\nconst CLEAR_PROPS$g = [\n BASIC_OCSP_RESPONSE_TBS_RESPONSE_DATA,\n BASIC_OCSP_RESPONSE_SIGNATURE_ALGORITHM,\n BASIC_OCSP_RESPONSE_SIGNATURE,\n BASIC_OCSP_RESPONSE_CERTS\n];\nclass BasicOCSPResponse extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.tbsResponseData = pvutils.getParametersValue(parameters, TBS_RESPONSE_DATA, BasicOCSPResponse.defaultValues(TBS_RESPONSE_DATA));\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$3, BasicOCSPResponse.defaultValues(SIGNATURE_ALGORITHM$3));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE$2, BasicOCSPResponse.defaultValues(SIGNATURE$2));\n if (CERTS$1 in parameters) {\n this.certs = pvutils.getParametersValue(parameters, CERTS$1, BasicOCSPResponse.defaultValues(CERTS$1));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TBS_RESPONSE_DATA:\n return new ResponseData();\n case SIGNATURE_ALGORITHM$3:\n return new AlgorithmIdentifier();\n case SIGNATURE$2:\n return new asn1js.BitString();\n case CERTS$1:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case \"type\":\n {\n let comparisonResult = ((ResponseData.compareWithDefault(\"tbs\", memberValue.tbs)) &&\n (ResponseData.compareWithDefault(\"responderID\", memberValue.responderID)) &&\n (ResponseData.compareWithDefault(\"producedAt\", memberValue.producedAt)) &&\n (ResponseData.compareWithDefault(\"responses\", memberValue.responses)));\n if (\"responseExtensions\" in memberValue)\n comparisonResult = comparisonResult && (ResponseData.compareWithDefault(\"responseExtensions\", memberValue.responseExtensions));\n return comparisonResult;\n }\n case SIGNATURE_ALGORITHM$3:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case SIGNATURE$2:\n return (memberValue.isEqual(BasicOCSPResponse.defaultValues(memberName)));\n case CERTS$1:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || BASIC_OCSP_RESPONSE),\n value: [\n ResponseData.schema(names.tbsResponseData || {\n names: {\n blockName: BASIC_OCSP_RESPONSE_TBS_RESPONSE_DATA\n }\n }),\n AlgorithmIdentifier.schema(names.signatureAlgorithm || {\n names: {\n blockName: BASIC_OCSP_RESPONSE_SIGNATURE_ALGORITHM\n }\n }),\n new asn1js.BitString({ name: (names.signature || BASIC_OCSP_RESPONSE_SIGNATURE) }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Sequence({\n value: [new asn1js.Repeated({\n name: BASIC_OCSP_RESPONSE_CERTS,\n value: Certificate.schema(names.certs || {})\n })]\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$g);\n const asn1 = asn1js.compareSchema(schema, schema, BasicOCSPResponse.schema());\n AsnError.assertSchema(asn1, this.className);\n this.tbsResponseData = new ResponseData({ schema: asn1.result[BASIC_OCSP_RESPONSE_TBS_RESPONSE_DATA] });\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result[BASIC_OCSP_RESPONSE_SIGNATURE_ALGORITHM] });\n this.signature = asn1.result[BASIC_OCSP_RESPONSE_SIGNATURE];\n if (BASIC_OCSP_RESPONSE_CERTS in asn1.result) {\n this.certs = Array.from(asn1.result[BASIC_OCSP_RESPONSE_CERTS], element => new Certificate({ schema: element }));\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.tbsResponseData.toSchema());\n outputArray.push(this.signatureAlgorithm.toSchema());\n outputArray.push(this.signature);\n if (this.certs) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Sequence({\n value: Array.from(this.certs, o => o.toSchema())\n })\n ]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n tbsResponseData: this.tbsResponseData.toJSON(),\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signature: this.signature.toJSON(),\n };\n if (this.certs) {\n res.certs = Array.from(this.certs, o => o.toJSON());\n }\n return res;\n }\n async getCertificateStatus(certificate, issuerCertificate, crypto = getCrypto(true)) {\n const result = {\n isForCertificate: false,\n status: 2\n };\n const hashesObject = {};\n const certIDs = [];\n for (const response of this.tbsResponseData.responses) {\n const hashAlgorithm = crypto.getAlgorithmByOID(response.certID.hashAlgorithm.algorithmId, true, \"CertID.hashAlgorithm\");\n if (!hashesObject[hashAlgorithm.name]) {\n hashesObject[hashAlgorithm.name] = 1;\n const certID = new CertID();\n certIDs.push(certID);\n await certID.createForCertificate(certificate, {\n hashAlgorithm: hashAlgorithm.name,\n issuerCertificate\n }, crypto);\n }\n }\n for (const response of this.tbsResponseData.responses) {\n for (const id of certIDs) {\n if (response.certID.isEqual(id)) {\n result.isForCertificate = true;\n try {\n switch (response.certStatus.idBlock.isConstructed) {\n case true:\n if (response.certStatus.idBlock.tagNumber === 1)\n result.status = 1;\n break;\n case false:\n switch (response.certStatus.idBlock.tagNumber) {\n case 0:\n result.status = 0;\n break;\n case 2:\n result.status = 2;\n break;\n default:\n }\n break;\n default:\n }\n }\n catch (ex) {\n }\n return result;\n }\n }\n }\n return result;\n }\n async sign(privateKey, hashAlgorithm = \"SHA-1\", crypto = getCrypto(true)) {\n if (!privateKey) {\n throw new Error(\"Need to provide a private key for signing\");\n }\n const signatureParams = await crypto.getSignatureParameters(privateKey, hashAlgorithm);\n const algorithm = signatureParams.parameters.algorithm;\n if (!(\"name\" in algorithm)) {\n throw new Error(\"Empty algorithm\");\n }\n this.signatureAlgorithm = signatureParams.signatureAlgorithm;\n this.tbsResponseData.tbsView = new Uint8Array(this.tbsResponseData.toSchema(true).toBER());\n const signature = await crypto.signWithPrivateKey(this.tbsResponseData.tbsView, privateKey, { algorithm });\n this.signature = new asn1js.BitString({ valueHex: signature });\n }\n async verify(params = {}, crypto = getCrypto(true)) {\n let signerCert = null;\n let certIndex = -1;\n const trustedCerts = params.trustedCerts || [];\n if (!this.certs) {\n throw new Error(\"No certificates attached to the BasicOCSPResponse\");\n }\n switch (true) {\n case (this.tbsResponseData.responderID instanceof RelativeDistinguishedNames):\n for (const [index, certificate] of this.certs.entries()) {\n if (certificate.subject.isEqual(this.tbsResponseData.responderID)) {\n certIndex = index;\n break;\n }\n }\n break;\n case (this.tbsResponseData.responderID instanceof asn1js.OctetString):\n for (const [index, cert] of this.certs.entries()) {\n const hash = await crypto.digest({ name: \"sha-1\" }, cert.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView);\n if (pvutils.isEqualBuffer(hash, this.tbsResponseData.responderID.valueBlock.valueHex)) {\n certIndex = index;\n break;\n }\n }\n break;\n default:\n throw new Error(\"Wrong value for responderID\");\n }\n if (certIndex === (-1))\n throw new Error(\"Correct certificate was not found in OCSP response\");\n signerCert = this.certs[certIndex];\n const additionalCerts = [signerCert];\n for (const cert of this.certs) {\n const caCert = await checkCA(cert, signerCert);\n if (caCert) {\n additionalCerts.push(caCert);\n }\n }\n const certChain = new CertificateChainValidationEngine({\n certs: additionalCerts,\n trustedCerts,\n });\n const verificationResult = await certChain.verify({}, crypto);\n if (!verificationResult.result) {\n throw new Error(\"Validation of signer's certificate failed\");\n }\n return crypto.verifyWithPublicKey(this.tbsResponseData.tbsView, this.signature, this.certs[certIndex].subjectPublicKeyInfo, this.signatureAlgorithm);\n }\n}\nBasicOCSPResponse.CLASS_NAME = \"BasicOCSPResponse\";\n\nconst TBS$1 = \"tbs\";\nconst VERSION$6 = \"version\";\nconst SUBJECT = \"subject\";\nconst SPKI = \"subjectPublicKeyInfo\";\nconst ATTRIBUTES$1 = \"attributes\";\nconst SIGNATURE_ALGORITHM$2 = \"signatureAlgorithm\";\nconst SIGNATURE_VALUE = \"signatureValue\";\nconst CSR_INFO = \"CertificationRequestInfo\";\nconst CSR_INFO_VERSION = `${CSR_INFO}.version`;\nconst CSR_INFO_SUBJECT = `${CSR_INFO}.subject`;\nconst CSR_INFO_SPKI = `${CSR_INFO}.subjectPublicKeyInfo`;\nconst CSR_INFO_ATTRS = `${CSR_INFO}.attributes`;\nconst CLEAR_PROPS$f = [\n CSR_INFO,\n CSR_INFO_VERSION,\n CSR_INFO_SUBJECT,\n CSR_INFO_SPKI,\n CSR_INFO_ATTRS,\n SIGNATURE_ALGORITHM$2,\n SIGNATURE_VALUE\n];\nfunction CertificationRequestInfo(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.CertificationRequestInfo || CSR_INFO),\n value: [\n new asn1js.Integer({ name: (names.CertificationRequestInfoVersion || CSR_INFO_VERSION) }),\n RelativeDistinguishedNames.schema(names.subject || {\n names: {\n blockName: CSR_INFO_SUBJECT\n }\n }),\n PublicKeyInfo.schema({\n names: {\n blockName: CSR_INFO_SPKI\n }\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Repeated({\n optional: true,\n name: (names.CertificationRequestInfoAttributes || CSR_INFO_ATTRS),\n value: Attribute.schema(names.attributes || {})\n })\n ]\n })\n ]\n }));\n}\nclass CertificationRequest extends PkiObject {\n get tbs() {\n return pvtsutils.BufferSourceConverter.toArrayBuffer(this.tbsView);\n }\n set tbs(value) {\n this.tbsView = new Uint8Array(value);\n }\n constructor(parameters = {}) {\n super();\n this.tbsView = new Uint8Array(pvutils.getParametersValue(parameters, TBS$1, CertificationRequest.defaultValues(TBS$1)));\n this.version = pvutils.getParametersValue(parameters, VERSION$6, CertificationRequest.defaultValues(VERSION$6));\n this.subject = pvutils.getParametersValue(parameters, SUBJECT, CertificationRequest.defaultValues(SUBJECT));\n this.subjectPublicKeyInfo = pvutils.getParametersValue(parameters, SPKI, CertificationRequest.defaultValues(SPKI));\n if (ATTRIBUTES$1 in parameters) {\n this.attributes = pvutils.getParametersValue(parameters, ATTRIBUTES$1, CertificationRequest.defaultValues(ATTRIBUTES$1));\n }\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$2, CertificationRequest.defaultValues(SIGNATURE_ALGORITHM$2));\n this.signatureValue = pvutils.getParametersValue(parameters, SIGNATURE_VALUE, CertificationRequest.defaultValues(SIGNATURE_VALUE));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TBS$1:\n return EMPTY_BUFFER;\n case VERSION$6:\n return 0;\n case SUBJECT:\n return new RelativeDistinguishedNames();\n case SPKI:\n return new PublicKeyInfo();\n case ATTRIBUTES$1:\n return [];\n case SIGNATURE_ALGORITHM$2:\n return new AlgorithmIdentifier();\n case SIGNATURE_VALUE:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n value: [\n CertificationRequestInfo(names.certificationRequestInfo || {}),\n new asn1js.Sequence({\n name: (names.signatureAlgorithm || SIGNATURE_ALGORITHM$2),\n value: [\n new asn1js.ObjectIdentifier(),\n new asn1js.Any({ optional: true })\n ]\n }),\n new asn1js.BitString({ name: (names.signatureValue || SIGNATURE_VALUE) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$f);\n const asn1 = asn1js.compareSchema(schema, schema, CertificationRequest.schema());\n AsnError.assertSchema(asn1, this.className);\n this.tbsView = asn1.result.CertificationRequestInfo.valueBeforeDecodeView;\n this.version = asn1.result[CSR_INFO_VERSION].valueBlock.valueDec;\n this.subject = new RelativeDistinguishedNames({ schema: asn1.result[CSR_INFO_SUBJECT] });\n this.subjectPublicKeyInfo = new PublicKeyInfo({ schema: asn1.result[CSR_INFO_SPKI] });\n if (CSR_INFO_ATTRS in asn1.result) {\n this.attributes = Array.from(asn1.result[CSR_INFO_ATTRS], element => new Attribute({ schema: element }));\n }\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.signatureAlgorithm });\n this.signatureValue = asn1.result.signatureValue;\n }\n encodeTBS() {\n const outputArray = [\n new asn1js.Integer({ value: this.version }),\n this.subject.toSchema(),\n this.subjectPublicKeyInfo.toSchema()\n ];\n if (ATTRIBUTES$1 in this) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: Array.from(this.attributes || [], o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toSchema(encodeFlag = false) {\n let tbsSchema;\n if (encodeFlag === false) {\n if (this.tbsView.byteLength === 0) {\n return CertificationRequest.schema();\n }\n const asn1 = asn1js.fromBER(this.tbsView);\n AsnError.assert(asn1, \"PKCS#10 Certificate Request\");\n tbsSchema = asn1.result;\n }\n else {\n tbsSchema = this.encodeTBS();\n }\n return (new asn1js.Sequence({\n value: [\n tbsSchema,\n this.signatureAlgorithm.toSchema(),\n this.signatureValue\n ]\n }));\n }\n toJSON() {\n const object = {\n tbs: pvtsutils.Convert.ToHex(this.tbsView),\n version: this.version,\n subject: this.subject.toJSON(),\n subjectPublicKeyInfo: this.subjectPublicKeyInfo.toJSON(),\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signatureValue: this.signatureValue.toJSON(),\n };\n if (ATTRIBUTES$1 in this) {\n object.attributes = Array.from(this.attributes || [], o => o.toJSON());\n }\n return object;\n }\n async sign(privateKey, hashAlgorithm = \"SHA-1\", crypto = getCrypto(true)) {\n if (!privateKey) {\n throw new Error(\"Need to provide a private key for signing\");\n }\n const signatureParams = await crypto.getSignatureParameters(privateKey, hashAlgorithm);\n const parameters = signatureParams.parameters;\n this.signatureAlgorithm = signatureParams.signatureAlgorithm;\n this.tbsView = new Uint8Array(this.encodeTBS().toBER());\n const signature = await crypto.signWithPrivateKey(this.tbsView, privateKey, parameters);\n this.signatureValue = new asn1js.BitString({ valueHex: signature });\n }\n async verify(crypto = getCrypto(true)) {\n return crypto.verifyWithPublicKey(this.tbsView, this.signatureValue, this.subjectPublicKeyInfo, this.signatureAlgorithm);\n }\n async getPublicKey(parameters, crypto = getCrypto(true)) {\n return crypto.getPublicKey(this.subjectPublicKeyInfo, this.signatureAlgorithm, parameters);\n }\n}\nCertificationRequest.CLASS_NAME = \"CertificationRequest\";\n\nconst DIGEST_ALGORITHM$1 = \"digestAlgorithm\";\nconst DIGEST = \"digest\";\nconst CLEAR_PROPS$e = [\n DIGEST_ALGORITHM$1,\n DIGEST\n];\nclass DigestInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.digestAlgorithm = pvutils.getParametersValue(parameters, DIGEST_ALGORITHM$1, DigestInfo.defaultValues(DIGEST_ALGORITHM$1));\n this.digest = pvutils.getParametersValue(parameters, DIGEST, DigestInfo.defaultValues(DIGEST));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case DIGEST_ALGORITHM$1:\n return new AlgorithmIdentifier();\n case DIGEST:\n return new asn1js.OctetString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case DIGEST_ALGORITHM$1:\n return ((AlgorithmIdentifier.compareWithDefault(\"algorithmId\", memberValue.algorithmId)) &&\n ((\"algorithmParams\" in memberValue) === false));\n case DIGEST:\n return (memberValue.isEqual(DigestInfo.defaultValues(memberName)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.digestAlgorithm || {\n names: {\n blockName: DIGEST_ALGORITHM$1\n }\n }),\n new asn1js.OctetString({ name: (names.digest || DIGEST) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$e);\n const asn1 = asn1js.compareSchema(schema, schema, DigestInfo.schema({\n names: {\n digestAlgorithm: {\n names: {\n blockName: DIGEST_ALGORITHM$1\n }\n },\n digest: DIGEST\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.digestAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.digestAlgorithm });\n this.digest = asn1.result.digest;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.digestAlgorithm.toSchema(),\n this.digest\n ]\n }));\n }\n toJSON() {\n return {\n digestAlgorithm: this.digestAlgorithm.toJSON(),\n digest: this.digest.toJSON(),\n };\n }\n}\nDigestInfo.CLASS_NAME = \"DigestInfo\";\n\nconst E_CONTENT_TYPE = \"eContentType\";\nconst E_CONTENT = \"eContent\";\nconst CLEAR_PROPS$d = [\n E_CONTENT_TYPE,\n E_CONTENT,\n];\nclass EncapsulatedContentInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.eContentType = pvutils.getParametersValue(parameters, E_CONTENT_TYPE, EncapsulatedContentInfo.defaultValues(E_CONTENT_TYPE));\n if (E_CONTENT in parameters) {\n this.eContent = pvutils.getParametersValue(parameters, E_CONTENT, EncapsulatedContentInfo.defaultValues(E_CONTENT));\n if ((this.eContent.idBlock.tagClass === 1) &&\n (this.eContent.idBlock.tagNumber === 4)) {\n if (this.eContent.idBlock.isConstructed === false) {\n const constrString = new asn1js.OctetString({\n idBlock: { isConstructed: true },\n isConstructed: true\n });\n let offset = 0;\n const viewHex = this.eContent.valueBlock.valueHexView.slice().buffer;\n let length = viewHex.byteLength;\n while (length > 0) {\n const pieceView = new Uint8Array(viewHex, offset, ((offset + 65536) > viewHex.byteLength) ? (viewHex.byteLength - offset) : 65536);\n const _array = new ArrayBuffer(pieceView.length);\n const _view = new Uint8Array(_array);\n for (let i = 0; i < _view.length; i++) {\n _view[i] = pieceView[i];\n }\n constrString.valueBlock.value.push(new asn1js.OctetString({ valueHex: _array }));\n length -= pieceView.length;\n offset += pieceView.length;\n }\n this.eContent = constrString;\n }\n }\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case E_CONTENT_TYPE:\n return EMPTY_STRING;\n case E_CONTENT:\n return new asn1js.OctetString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case E_CONTENT_TYPE:\n return (memberValue === EMPTY_STRING);\n case E_CONTENT:\n {\n if ((memberValue.idBlock.tagClass === 1) && (memberValue.idBlock.tagNumber === 4))\n return (memberValue.isEqual(EncapsulatedContentInfo.defaultValues(E_CONTENT)));\n return false;\n }\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.eContentType || EMPTY_STRING) }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Any({ name: (names.eContent || EMPTY_STRING) })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$d);\n const asn1 = asn1js.compareSchema(schema, schema, EncapsulatedContentInfo.schema({\n names: {\n eContentType: E_CONTENT_TYPE,\n eContent: E_CONTENT\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.eContentType = asn1.result.eContentType.valueBlock.toString();\n if (E_CONTENT in asn1.result)\n this.eContent = asn1.result.eContent;\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.eContentType }));\n if (this.eContent) {\n if (EncapsulatedContentInfo.compareWithDefault(E_CONTENT, this.eContent) === false) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.eContent]\n }));\n }\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n eContentType: this.eContentType\n };\n if (this.eContent && EncapsulatedContentInfo.compareWithDefault(E_CONTENT, this.eContent) === false) {\n res.eContent = this.eContent.toJSON();\n }\n return res;\n }\n}\nEncapsulatedContentInfo.CLASS_NAME = \"EncapsulatedContentInfo\";\n\nclass KeyBag extends PrivateKeyInfo {\n constructor(parameters = {}) {\n super(parameters);\n }\n}\n\nconst MAC = \"mac\";\nconst MAC_SALT = \"macSalt\";\nconst ITERATIONS = \"iterations\";\nconst CLEAR_PROPS$c = [\n MAC,\n MAC_SALT,\n ITERATIONS\n];\nclass MacData extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.mac = pvutils.getParametersValue(parameters, MAC, MacData.defaultValues(MAC));\n this.macSalt = pvutils.getParametersValue(parameters, MAC_SALT, MacData.defaultValues(MAC_SALT));\n if (ITERATIONS in parameters) {\n this.iterations = pvutils.getParametersValue(parameters, ITERATIONS, MacData.defaultValues(ITERATIONS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case MAC:\n return new DigestInfo();\n case MAC_SALT:\n return new asn1js.OctetString();\n case ITERATIONS:\n return 1;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case MAC:\n return ((DigestInfo.compareWithDefault(\"digestAlgorithm\", memberValue.digestAlgorithm)) &&\n (DigestInfo.compareWithDefault(\"digest\", memberValue.digest)));\n case MAC_SALT:\n return (memberValue.isEqual(MacData.defaultValues(memberName)));\n case ITERATIONS:\n return (memberValue === MacData.defaultValues(memberName));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n optional: (names.optional || true),\n value: [\n DigestInfo.schema(names.mac || {\n names: {\n blockName: MAC\n }\n }),\n new asn1js.OctetString({ name: (names.macSalt || MAC_SALT) }),\n new asn1js.Integer({\n optional: true,\n name: (names.iterations || ITERATIONS)\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$c);\n const asn1 = asn1js.compareSchema(schema, schema, MacData.schema({\n names: {\n mac: {\n names: {\n blockName: MAC\n }\n },\n macSalt: MAC_SALT,\n iterations: ITERATIONS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.mac = new DigestInfo({ schema: asn1.result.mac });\n this.macSalt = asn1.result.macSalt;\n if (ITERATIONS in asn1.result)\n this.iterations = asn1.result.iterations.valueBlock.valueDec;\n }\n toSchema() {\n const outputArray = [\n this.mac.toSchema(),\n this.macSalt\n ];\n if (this.iterations !== undefined) {\n outputArray.push(new asn1js.Integer({ value: this.iterations }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n mac: this.mac.toJSON(),\n macSalt: this.macSalt.toJSON(),\n };\n if (this.iterations !== undefined) {\n res.iterations = this.iterations;\n }\n return res;\n }\n}\nMacData.CLASS_NAME = \"MacData\";\n\nconst HASH_ALGORITHM = \"hashAlgorithm\";\nconst HASHED_MESSAGE = \"hashedMessage\";\nconst CLEAR_PROPS$b = [\n HASH_ALGORITHM,\n HASHED_MESSAGE,\n];\nclass MessageImprint extends PkiObject {\n static async create(hashAlgorithm, message, crypto = getCrypto(true)) {\n const hashAlgorithmOID = crypto.getOIDByAlgorithm({ name: hashAlgorithm }, true, \"hashAlgorithm\");\n const hashedMessage = await crypto.digest(hashAlgorithm, message);\n const res = new MessageImprint({\n hashAlgorithm: new AlgorithmIdentifier({\n algorithmId: hashAlgorithmOID,\n algorithmParams: new asn1js.Null(),\n }),\n hashedMessage: new asn1js.OctetString({ valueHex: hashedMessage })\n });\n return res;\n }\n constructor(parameters = {}) {\n super();\n this.hashAlgorithm = pvutils.getParametersValue(parameters, HASH_ALGORITHM, MessageImprint.defaultValues(HASH_ALGORITHM));\n this.hashedMessage = pvutils.getParametersValue(parameters, HASHED_MESSAGE, MessageImprint.defaultValues(HASHED_MESSAGE));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case HASH_ALGORITHM:\n return new AlgorithmIdentifier();\n case HASHED_MESSAGE:\n return new asn1js.OctetString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case HASH_ALGORITHM:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case HASHED_MESSAGE:\n return (memberValue.isEqual(MessageImprint.defaultValues(memberName)) === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.hashAlgorithm || {}),\n new asn1js.OctetString({ name: (names.hashedMessage || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$b);\n const asn1 = asn1js.compareSchema(schema, schema, MessageImprint.schema({\n names: {\n hashAlgorithm: {\n names: {\n blockName: HASH_ALGORITHM\n }\n },\n hashedMessage: HASHED_MESSAGE\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.hashAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.hashAlgorithm });\n this.hashedMessage = asn1.result.hashedMessage;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n this.hashAlgorithm.toSchema(),\n this.hashedMessage\n ]\n }));\n }\n toJSON() {\n return {\n hashAlgorithm: this.hashAlgorithm.toJSON(),\n hashedMessage: this.hashedMessage.toJSON(),\n };\n }\n}\nMessageImprint.CLASS_NAME = \"MessageImprint\";\n\nconst REQ_CERT = \"reqCert\";\nconst SINGLE_REQUEST_EXTENSIONS = \"singleRequestExtensions\";\nconst CLEAR_PROPS$a = [\n REQ_CERT,\n SINGLE_REQUEST_EXTENSIONS,\n];\nclass Request extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.reqCert = pvutils.getParametersValue(parameters, REQ_CERT, Request.defaultValues(REQ_CERT));\n if (SINGLE_REQUEST_EXTENSIONS in parameters) {\n this.singleRequestExtensions = pvutils.getParametersValue(parameters, SINGLE_REQUEST_EXTENSIONS, Request.defaultValues(SINGLE_REQUEST_EXTENSIONS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case REQ_CERT:\n return new CertID();\n case SINGLE_REQUEST_EXTENSIONS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case REQ_CERT:\n return (memberValue.isEqual(Request.defaultValues(memberName)));\n case SINGLE_REQUEST_EXTENSIONS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n CertID.schema(names.reqCert || {}),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [Extension.schema(names.extensions || {\n names: {\n blockName: (names.singleRequestExtensions || EMPTY_STRING)\n }\n })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$a);\n const asn1 = asn1js.compareSchema(schema, schema, Request.schema({\n names: {\n reqCert: {\n names: {\n blockName: REQ_CERT\n }\n },\n extensions: {\n names: {\n blockName: SINGLE_REQUEST_EXTENSIONS\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.reqCert = new CertID({ schema: asn1.result.reqCert });\n if (SINGLE_REQUEST_EXTENSIONS in asn1.result) {\n this.singleRequestExtensions = Array.from(asn1.result.singleRequestExtensions.valueBlock.value, element => new Extension({ schema: element }));\n }\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.reqCert.toSchema());\n if (this.singleRequestExtensions) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Sequence({\n value: Array.from(this.singleRequestExtensions, o => o.toSchema())\n })\n ]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n reqCert: this.reqCert.toJSON()\n };\n if (this.singleRequestExtensions) {\n res.singleRequestExtensions = Array.from(this.singleRequestExtensions, o => o.toJSON());\n }\n return res;\n }\n}\nRequest.CLASS_NAME = \"Request\";\n\nconst TBS = \"tbs\";\nconst VERSION$5 = \"version\";\nconst REQUESTOR_NAME = \"requestorName\";\nconst REQUEST_LIST = \"requestList\";\nconst REQUEST_EXTENSIONS = \"requestExtensions\";\nconst TBS_REQUEST$1 = \"TBSRequest\";\nconst TBS_REQUEST_VERSION = `${TBS_REQUEST$1}.${VERSION$5}`;\nconst TBS_REQUEST_REQUESTOR_NAME = `${TBS_REQUEST$1}.${REQUESTOR_NAME}`;\nconst TBS_REQUEST_REQUESTS = `${TBS_REQUEST$1}.requests`;\nconst TBS_REQUEST_REQUEST_EXTENSIONS = `${TBS_REQUEST$1}.${REQUEST_EXTENSIONS}`;\nconst CLEAR_PROPS$9 = [\n TBS_REQUEST$1,\n TBS_REQUEST_VERSION,\n TBS_REQUEST_REQUESTOR_NAME,\n TBS_REQUEST_REQUESTS,\n TBS_REQUEST_REQUEST_EXTENSIONS\n];\nclass TBSRequest extends PkiObject {\n get tbs() {\n return pvtsutils.BufferSourceConverter.toArrayBuffer(this.tbsView);\n }\n set tbs(value) {\n this.tbsView = new Uint8Array(value);\n }\n constructor(parameters = {}) {\n super();\n this.tbsView = new Uint8Array(pvutils.getParametersValue(parameters, TBS, TBSRequest.defaultValues(TBS)));\n if (VERSION$5 in parameters) {\n this.version = pvutils.getParametersValue(parameters, VERSION$5, TBSRequest.defaultValues(VERSION$5));\n }\n if (REQUESTOR_NAME in parameters) {\n this.requestorName = pvutils.getParametersValue(parameters, REQUESTOR_NAME, TBSRequest.defaultValues(REQUESTOR_NAME));\n }\n this.requestList = pvutils.getParametersValue(parameters, REQUEST_LIST, TBSRequest.defaultValues(REQUEST_LIST));\n if (REQUEST_EXTENSIONS in parameters) {\n this.requestExtensions = pvutils.getParametersValue(parameters, REQUEST_EXTENSIONS, TBSRequest.defaultValues(REQUEST_EXTENSIONS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TBS:\n return EMPTY_BUFFER;\n case VERSION$5:\n return 0;\n case REQUESTOR_NAME:\n return new GeneralName();\n case REQUEST_LIST:\n case REQUEST_EXTENSIONS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TBS:\n return (memberValue.byteLength === 0);\n case VERSION$5:\n return (memberValue === TBSRequest.defaultValues(memberName));\n case REQUESTOR_NAME:\n return ((memberValue.type === GeneralName.defaultValues(\"type\")) && (Object.keys(memberValue.value).length === 0));\n case REQUEST_LIST:\n case REQUEST_EXTENSIONS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || TBS_REQUEST$1),\n value: [\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Integer({ name: (names.TBSRequestVersion || TBS_REQUEST_VERSION) })]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [GeneralName.schema(names.requestorName || {\n names: {\n blockName: TBS_REQUEST_REQUESTOR_NAME\n }\n })]\n }),\n new asn1js.Sequence({\n name: (names.requestList || \"TBSRequest.requestList\"),\n value: [\n new asn1js.Repeated({\n name: (names.requests || TBS_REQUEST_REQUESTS),\n value: Request.schema(names.requestNames || {})\n })\n ]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [Extensions.schema(names.extensions || {\n names: {\n blockName: (names.requestExtensions || TBS_REQUEST_REQUEST_EXTENSIONS)\n }\n })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$9);\n const asn1 = asn1js.compareSchema(schema, schema, TBSRequest.schema());\n AsnError.assertSchema(asn1, this.className);\n this.tbsView = asn1.result.TBSRequest.valueBeforeDecodeView;\n if (TBS_REQUEST_VERSION in asn1.result)\n this.version = asn1.result[TBS_REQUEST_VERSION].valueBlock.valueDec;\n if (TBS_REQUEST_REQUESTOR_NAME in asn1.result)\n this.requestorName = new GeneralName({ schema: asn1.result[TBS_REQUEST_REQUESTOR_NAME] });\n this.requestList = Array.from(asn1.result[TBS_REQUEST_REQUESTS], element => new Request({ schema: element }));\n if (TBS_REQUEST_REQUEST_EXTENSIONS in asn1.result)\n this.requestExtensions = Array.from(asn1.result[TBS_REQUEST_REQUEST_EXTENSIONS].valueBlock.value, element => new Extension({ schema: element }));\n }\n toSchema(encodeFlag = false) {\n let tbsSchema;\n if (encodeFlag === false) {\n if (this.tbsView.byteLength === 0)\n return TBSRequest.schema();\n const asn1 = asn1js.fromBER(this.tbsView);\n AsnError.assert(asn1, \"TBS Request\");\n if (!(asn1.result instanceof asn1js.Sequence)) {\n throw new Error(\"ASN.1 result should be SEQUENCE\");\n }\n tbsSchema = asn1.result;\n }\n else {\n const outputArray = [];\n if (this.version !== undefined) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Integer({ value: this.version })]\n }));\n }\n if (this.requestorName) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [this.requestorName.toSchema()]\n }));\n }\n outputArray.push(new asn1js.Sequence({\n value: Array.from(this.requestList, o => o.toSchema())\n }));\n if (this.requestExtensions) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 2\n },\n value: [\n new asn1js.Sequence({\n value: Array.from(this.requestExtensions, o => o.toSchema())\n })\n ]\n }));\n }\n tbsSchema = new asn1js.Sequence({\n value: outputArray\n });\n }\n return tbsSchema;\n }\n toJSON() {\n const res = {};\n if (this.version != undefined)\n res.version = this.version;\n if (this.requestorName) {\n res.requestorName = this.requestorName.toJSON();\n }\n res.requestList = Array.from(this.requestList, o => o.toJSON());\n if (this.requestExtensions) {\n res.requestExtensions = Array.from(this.requestExtensions, o => o.toJSON());\n }\n return res;\n }\n}\nTBSRequest.CLASS_NAME = \"TBSRequest\";\n\nconst SIGNATURE_ALGORITHM$1 = \"signatureAlgorithm\";\nconst SIGNATURE$1 = \"signature\";\nconst CERTS = \"certs\";\nclass Signature extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM$1, Signature.defaultValues(SIGNATURE_ALGORITHM$1));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE$1, Signature.defaultValues(SIGNATURE$1));\n if (CERTS in parameters) {\n this.certs = pvutils.getParametersValue(parameters, CERTS, Signature.defaultValues(CERTS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case SIGNATURE_ALGORITHM$1:\n return new AlgorithmIdentifier();\n case SIGNATURE$1:\n return new asn1js.BitString();\n case CERTS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case SIGNATURE_ALGORITHM$1:\n return ((memberValue.algorithmId === EMPTY_STRING) && ((\"algorithmParams\" in memberValue) === false));\n case SIGNATURE$1:\n return (memberValue.isEqual(Signature.defaultValues(memberName)));\n case CERTS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n AlgorithmIdentifier.schema(names.signatureAlgorithm || {}),\n new asn1js.BitString({ name: (names.signature || EMPTY_STRING) }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Sequence({\n value: [new asn1js.Repeated({\n name: (names.certs || EMPTY_STRING),\n value: Certificate.schema({})\n })]\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n SIGNATURE_ALGORITHM$1,\n SIGNATURE$1,\n CERTS\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, Signature.schema({\n names: {\n signatureAlgorithm: {\n names: {\n blockName: SIGNATURE_ALGORITHM$1\n }\n },\n signature: SIGNATURE$1,\n certs: CERTS\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.signatureAlgorithm });\n this.signature = asn1.result.signature;\n if (CERTS in asn1.result)\n this.certs = Array.from(asn1.result.certs, element => new Certificate({ schema: element }));\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.signatureAlgorithm.toSchema());\n outputArray.push(this.signature);\n if (this.certs) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n new asn1js.Sequence({\n value: Array.from(this.certs, o => o.toSchema())\n })\n ]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signature: this.signature.toJSON(),\n };\n if (this.certs) {\n res.certs = Array.from(this.certs, o => o.toJSON());\n }\n return res;\n }\n}\nSignature.CLASS_NAME = \"Signature\";\n\nconst TBS_REQUEST = \"tbsRequest\";\nconst OPTIONAL_SIGNATURE = \"optionalSignature\";\nconst CLEAR_PROPS$8 = [\n TBS_REQUEST,\n OPTIONAL_SIGNATURE\n];\nclass OCSPRequest extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.tbsRequest = pvutils.getParametersValue(parameters, TBS_REQUEST, OCSPRequest.defaultValues(TBS_REQUEST));\n if (OPTIONAL_SIGNATURE in parameters) {\n this.optionalSignature = pvutils.getParametersValue(parameters, OPTIONAL_SIGNATURE, OCSPRequest.defaultValues(OPTIONAL_SIGNATURE));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TBS_REQUEST:\n return new TBSRequest();\n case OPTIONAL_SIGNATURE:\n return new Signature();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TBS_REQUEST:\n return ((TBSRequest.compareWithDefault(\"tbs\", memberValue.tbs)) &&\n (TBSRequest.compareWithDefault(\"version\", memberValue.version)) &&\n (TBSRequest.compareWithDefault(\"requestorName\", memberValue.requestorName)) &&\n (TBSRequest.compareWithDefault(\"requestList\", memberValue.requestList)) &&\n (TBSRequest.compareWithDefault(\"requestExtensions\", memberValue.requestExtensions)));\n case OPTIONAL_SIGNATURE:\n return ((Signature.compareWithDefault(\"signatureAlgorithm\", memberValue.signatureAlgorithm)) &&\n (Signature.compareWithDefault(\"signature\", memberValue.signature)) &&\n (Signature.compareWithDefault(\"certs\", memberValue.certs)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: names.blockName || \"OCSPRequest\",\n value: [\n TBSRequest.schema(names.tbsRequest || {\n names: {\n blockName: TBS_REQUEST\n }\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n Signature.schema(names.optionalSignature || {\n names: {\n blockName: OPTIONAL_SIGNATURE\n }\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$8);\n const asn1 = asn1js.compareSchema(schema, schema, OCSPRequest.schema());\n AsnError.assertSchema(asn1, this.className);\n this.tbsRequest = new TBSRequest({ schema: asn1.result.tbsRequest });\n if (OPTIONAL_SIGNATURE in asn1.result)\n this.optionalSignature = new Signature({ schema: asn1.result.optionalSignature });\n }\n toSchema(encodeFlag = false) {\n const outputArray = [];\n outputArray.push(this.tbsRequest.toSchema(encodeFlag));\n if (this.optionalSignature)\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n this.optionalSignature.toSchema()\n ]\n }));\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n tbsRequest: this.tbsRequest.toJSON()\n };\n if (this.optionalSignature) {\n res.optionalSignature = this.optionalSignature.toJSON();\n }\n return res;\n }\n async createForCertificate(certificate, parameters, crypto = getCrypto(true)) {\n const certID = new CertID();\n await certID.createForCertificate(certificate, parameters, crypto);\n this.tbsRequest.requestList.push(new Request({\n reqCert: certID,\n }));\n }\n async sign(privateKey, hashAlgorithm = \"SHA-1\", crypto = getCrypto(true)) {\n ParameterError.assertEmpty(privateKey, \"privateKey\", \"OCSPRequest.sign method\");\n if (!this.optionalSignature) {\n throw new Error(\"Need to create \\\"optionalSignature\\\" field before signing\");\n }\n const signatureParams = await crypto.getSignatureParameters(privateKey, hashAlgorithm);\n const parameters = signatureParams.parameters;\n this.optionalSignature.signatureAlgorithm = signatureParams.signatureAlgorithm;\n const tbs = this.tbsRequest.toSchema(true).toBER(false);\n const signature = await crypto.signWithPrivateKey(tbs, privateKey, parameters);\n this.optionalSignature.signature = new asn1js.BitString({ valueHex: signature });\n }\n verify() {\n }\n}\nOCSPRequest.CLASS_NAME = \"OCSPRequest\";\n\nconst RESPONSE_TYPE = \"responseType\";\nconst RESPONSE = \"response\";\nconst CLEAR_PROPS$7 = [\n RESPONSE_TYPE,\n RESPONSE\n];\nclass ResponseBytes extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.responseType = pvutils.getParametersValue(parameters, RESPONSE_TYPE, ResponseBytes.defaultValues(RESPONSE_TYPE));\n this.response = pvutils.getParametersValue(parameters, RESPONSE, ResponseBytes.defaultValues(RESPONSE));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case RESPONSE_TYPE:\n return EMPTY_STRING;\n case RESPONSE:\n return new asn1js.OctetString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case RESPONSE_TYPE:\n return (memberValue === EMPTY_STRING);\n case RESPONSE:\n return (memberValue.isEqual(ResponseBytes.defaultValues(memberName)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.ObjectIdentifier({ name: (names.responseType || EMPTY_STRING) }),\n new asn1js.OctetString({ name: (names.response || EMPTY_STRING) })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$7);\n const asn1 = asn1js.compareSchema(schema, schema, ResponseBytes.schema({\n names: {\n responseType: RESPONSE_TYPE,\n response: RESPONSE\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.responseType = asn1.result.responseType.valueBlock.toString();\n this.response = asn1.result.response;\n }\n toSchema() {\n return (new asn1js.Sequence({\n value: [\n new asn1js.ObjectIdentifier({ value: this.responseType }),\n this.response\n ]\n }));\n }\n toJSON() {\n return {\n responseType: this.responseType,\n response: this.response.toJSON(),\n };\n }\n}\nResponseBytes.CLASS_NAME = \"ResponseBytes\";\n\nconst RESPONSE_STATUS = \"responseStatus\";\nconst RESPONSE_BYTES = \"responseBytes\";\nclass OCSPResponse extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.responseStatus = pvutils.getParametersValue(parameters, RESPONSE_STATUS, OCSPResponse.defaultValues(RESPONSE_STATUS));\n if (RESPONSE_BYTES in parameters) {\n this.responseBytes = pvutils.getParametersValue(parameters, RESPONSE_BYTES, OCSPResponse.defaultValues(RESPONSE_BYTES));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case RESPONSE_STATUS:\n return new asn1js.Enumerated();\n case RESPONSE_BYTES:\n return new ResponseBytes();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case RESPONSE_STATUS:\n return (memberValue.isEqual(OCSPResponse.defaultValues(memberName)));\n case RESPONSE_BYTES:\n return ((ResponseBytes.compareWithDefault(\"responseType\", memberValue.responseType)) &&\n (ResponseBytes.compareWithDefault(\"response\", memberValue.response)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || \"OCSPResponse\"),\n value: [\n new asn1js.Enumerated({ name: (names.responseStatus || RESPONSE_STATUS) }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [\n ResponseBytes.schema(names.responseBytes || {\n names: {\n blockName: RESPONSE_BYTES\n }\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, [\n RESPONSE_STATUS,\n RESPONSE_BYTES\n ]);\n const asn1 = asn1js.compareSchema(schema, schema, OCSPResponse.schema());\n AsnError.assertSchema(asn1, this.className);\n this.responseStatus = asn1.result.responseStatus;\n if (RESPONSE_BYTES in asn1.result)\n this.responseBytes = new ResponseBytes({ schema: asn1.result.responseBytes });\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.responseStatus);\n if (this.responseBytes) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.responseBytes.toSchema()]\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n responseStatus: this.responseStatus.toJSON()\n };\n if (this.responseBytes) {\n res.responseBytes = this.responseBytes.toJSON();\n }\n return res;\n }\n async getCertificateStatus(certificate, issuerCertificate, crypto = getCrypto(true)) {\n let basicResponse;\n const result = {\n isForCertificate: false,\n status: 2\n };\n if (!this.responseBytes)\n return result;\n if (this.responseBytes.responseType !== id_PKIX_OCSP_Basic)\n return result;\n try {\n const asn1Basic = asn1js.fromBER(this.responseBytes.response.valueBlock.valueHexView);\n AsnError.assert(asn1Basic, \"Basic OCSP response\");\n basicResponse = new BasicOCSPResponse({ schema: asn1Basic.result });\n }\n catch (ex) {\n return result;\n }\n return basicResponse.getCertificateStatus(certificate, issuerCertificate, crypto);\n }\n async sign(privateKey, hashAlgorithm, crypto = getCrypto(true)) {\n var _a;\n if (this.responseBytes && this.responseBytes.responseType === id_PKIX_OCSP_Basic) {\n const basicResponse = BasicOCSPResponse.fromBER(this.responseBytes.response.valueBlock.valueHexView);\n return basicResponse.sign(privateKey, hashAlgorithm, crypto);\n }\n throw new Error(`Unknown ResponseBytes type: ${((_a = this.responseBytes) === null || _a === void 0 ? void 0 : _a.responseType) || \"Unknown\"}`);\n }\n async verify(issuerCertificate = null, crypto = getCrypto(true)) {\n var _a;\n if ((RESPONSE_BYTES in this) === false)\n throw new Error(\"Empty ResponseBytes field\");\n if (this.responseBytes && this.responseBytes.responseType === id_PKIX_OCSP_Basic) {\n const basicResponse = BasicOCSPResponse.fromBER(this.responseBytes.response.valueBlock.valueHexView);\n if (issuerCertificate !== null) {\n if (!basicResponse.certs) {\n basicResponse.certs = [];\n }\n basicResponse.certs.push(issuerCertificate);\n }\n return basicResponse.verify({}, crypto);\n }\n throw new Error(`Unknown ResponseBytes type: ${((_a = this.responseBytes) === null || _a === void 0 ? void 0 : _a.responseType) || \"Unknown\"}`);\n }\n}\nOCSPResponse.CLASS_NAME = \"OCSPResponse\";\n\nconst TYPE = \"type\";\nconst ATTRIBUTES = \"attributes\";\nconst ENCODED_VALUE = \"encodedValue\";\nconst CLEAR_PROPS$6 = [\n ATTRIBUTES\n];\nclass SignedAndUnsignedAttributes extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.type = pvutils.getParametersValue(parameters, TYPE, SignedAndUnsignedAttributes.defaultValues(TYPE));\n this.attributes = pvutils.getParametersValue(parameters, ATTRIBUTES, SignedAndUnsignedAttributes.defaultValues(ATTRIBUTES));\n this.encodedValue = pvutils.getParametersValue(parameters, ENCODED_VALUE, SignedAndUnsignedAttributes.defaultValues(ENCODED_VALUE));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case TYPE:\n return (-1);\n case ATTRIBUTES:\n return [];\n case ENCODED_VALUE:\n return EMPTY_BUFFER;\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case TYPE:\n return (memberValue === SignedAndUnsignedAttributes.defaultValues(TYPE));\n case ATTRIBUTES:\n return (memberValue.length === 0);\n case ENCODED_VALUE:\n return (memberValue.byteLength === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Constructed({\n name: (names.blockName || EMPTY_STRING),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: names.tagNumber || 0\n },\n value: [\n new asn1js.Repeated({\n name: (names.attributes || EMPTY_STRING),\n value: Attribute.schema()\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$6);\n const asn1 = asn1js.compareSchema(schema, schema, SignedAndUnsignedAttributes.schema({\n names: {\n tagNumber: this.type,\n attributes: ATTRIBUTES\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.type = asn1.result.idBlock.tagNumber;\n this.encodedValue = pvtsutils.BufferSourceConverter.toArrayBuffer(asn1.result.valueBeforeDecodeView);\n const encodedView = new Uint8Array(this.encodedValue);\n encodedView[0] = 0x31;\n if ((ATTRIBUTES in asn1.result) === false) {\n if (this.type === 0)\n throw new Error(\"Wrong structure of SignedUnsignedAttributes\");\n else\n return;\n }\n this.attributes = Array.from(asn1.result.attributes, element => new Attribute({ schema: element }));\n }\n toSchema() {\n if (SignedAndUnsignedAttributes.compareWithDefault(TYPE, this.type) || SignedAndUnsignedAttributes.compareWithDefault(ATTRIBUTES, this.attributes))\n throw new Error(\"Incorrectly initialized \\\"SignedAndUnsignedAttributes\\\" class\");\n return (new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: this.type\n },\n value: Array.from(this.attributes, o => o.toSchema())\n }));\n }\n toJSON() {\n if (SignedAndUnsignedAttributes.compareWithDefault(TYPE, this.type) || SignedAndUnsignedAttributes.compareWithDefault(ATTRIBUTES, this.attributes))\n throw new Error(\"Incorrectly initialized \\\"SignedAndUnsignedAttributes\\\" class\");\n return {\n type: this.type,\n attributes: Array.from(this.attributes, o => o.toJSON())\n };\n }\n}\nSignedAndUnsignedAttributes.CLASS_NAME = \"SignedAndUnsignedAttributes\";\n\nconst VERSION$4 = \"version\";\nconst SID = \"sid\";\nconst DIGEST_ALGORITHM = \"digestAlgorithm\";\nconst SIGNED_ATTRS = \"signedAttrs\";\nconst SIGNATURE_ALGORITHM = \"signatureAlgorithm\";\nconst SIGNATURE = \"signature\";\nconst UNSIGNED_ATTRS = \"unsignedAttrs\";\nconst SIGNER_INFO = \"SignerInfo\";\nconst SIGNER_INFO_VERSION = `${SIGNER_INFO}.${VERSION$4}`;\nconst SIGNER_INFO_SID = `${SIGNER_INFO}.${SID}`;\nconst SIGNER_INFO_DIGEST_ALGORITHM = `${SIGNER_INFO}.${DIGEST_ALGORITHM}`;\nconst SIGNER_INFO_SIGNED_ATTRS = `${SIGNER_INFO}.${SIGNED_ATTRS}`;\nconst SIGNER_INFO_SIGNATURE_ALGORITHM = `${SIGNER_INFO}.${SIGNATURE_ALGORITHM}`;\nconst SIGNER_INFO_SIGNATURE = `${SIGNER_INFO}.${SIGNATURE}`;\nconst SIGNER_INFO_UNSIGNED_ATTRS = `${SIGNER_INFO}.${UNSIGNED_ATTRS}`;\nconst CLEAR_PROPS$5 = [\n SIGNER_INFO_VERSION,\n SIGNER_INFO_SID,\n SIGNER_INFO_DIGEST_ALGORITHM,\n SIGNER_INFO_SIGNED_ATTRS,\n SIGNER_INFO_SIGNATURE_ALGORITHM,\n SIGNER_INFO_SIGNATURE,\n SIGNER_INFO_UNSIGNED_ATTRS\n];\nclass SignerInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$4, SignerInfo.defaultValues(VERSION$4));\n this.sid = pvutils.getParametersValue(parameters, SID, SignerInfo.defaultValues(SID));\n this.digestAlgorithm = pvutils.getParametersValue(parameters, DIGEST_ALGORITHM, SignerInfo.defaultValues(DIGEST_ALGORITHM));\n if (SIGNED_ATTRS in parameters) {\n this.signedAttrs = pvutils.getParametersValue(parameters, SIGNED_ATTRS, SignerInfo.defaultValues(SIGNED_ATTRS));\n }\n this.signatureAlgorithm = pvutils.getParametersValue(parameters, SIGNATURE_ALGORITHM, SignerInfo.defaultValues(SIGNATURE_ALGORITHM));\n this.signature = pvutils.getParametersValue(parameters, SIGNATURE, SignerInfo.defaultValues(SIGNATURE));\n if (UNSIGNED_ATTRS in parameters) {\n this.unsignedAttrs = pvutils.getParametersValue(parameters, UNSIGNED_ATTRS, SignerInfo.defaultValues(UNSIGNED_ATTRS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$4:\n return 0;\n case SID:\n return new asn1js.Any();\n case DIGEST_ALGORITHM:\n return new AlgorithmIdentifier();\n case SIGNED_ATTRS:\n return new SignedAndUnsignedAttributes({ type: 0 });\n case SIGNATURE_ALGORITHM:\n return new AlgorithmIdentifier();\n case SIGNATURE:\n return new asn1js.OctetString();\n case UNSIGNED_ATTRS:\n return new SignedAndUnsignedAttributes({ type: 1 });\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$4:\n return (SignerInfo.defaultValues(VERSION$4) === memberValue);\n case SID:\n return (memberValue instanceof asn1js.Any);\n case DIGEST_ALGORITHM:\n if ((memberValue instanceof AlgorithmIdentifier) === false)\n return false;\n return memberValue.isEqual(SignerInfo.defaultValues(DIGEST_ALGORITHM));\n case SIGNED_ATTRS:\n return ((SignedAndUnsignedAttributes.compareWithDefault(\"type\", memberValue.type))\n && (SignedAndUnsignedAttributes.compareWithDefault(\"attributes\", memberValue.attributes))\n && (SignedAndUnsignedAttributes.compareWithDefault(\"encodedValue\", memberValue.encodedValue)));\n case SIGNATURE_ALGORITHM:\n if ((memberValue instanceof AlgorithmIdentifier) === false)\n return false;\n return memberValue.isEqual(SignerInfo.defaultValues(SIGNATURE_ALGORITHM));\n case SIGNATURE:\n case UNSIGNED_ATTRS:\n return ((SignedAndUnsignedAttributes.compareWithDefault(\"type\", memberValue.type))\n && (SignedAndUnsignedAttributes.compareWithDefault(\"attributes\", memberValue.attributes))\n && (SignedAndUnsignedAttributes.compareWithDefault(\"encodedValue\", memberValue.encodedValue)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: SIGNER_INFO,\n value: [\n new asn1js.Integer({ name: (names.version || SIGNER_INFO_VERSION) }),\n new asn1js.Choice({\n value: [\n IssuerAndSerialNumber.schema(names.sidSchema || {\n names: {\n blockName: SIGNER_INFO_SID\n }\n }),\n new asn1js.Choice({\n value: [\n new asn1js.Constructed({\n optional: true,\n name: (names.sid || SIGNER_INFO_SID),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.OctetString()]\n }),\n new asn1js.Primitive({\n optional: true,\n name: (names.sid || SIGNER_INFO_SID),\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n }\n }),\n ]\n }),\n ]\n }),\n AlgorithmIdentifier.schema(names.digestAlgorithm || {\n names: {\n blockName: SIGNER_INFO_DIGEST_ALGORITHM\n }\n }),\n SignedAndUnsignedAttributes.schema(names.signedAttrs || {\n names: {\n blockName: SIGNER_INFO_SIGNED_ATTRS,\n tagNumber: 0\n }\n }),\n AlgorithmIdentifier.schema(names.signatureAlgorithm || {\n names: {\n blockName: SIGNER_INFO_SIGNATURE_ALGORITHM\n }\n }),\n new asn1js.OctetString({ name: (names.signature || SIGNER_INFO_SIGNATURE) }),\n SignedAndUnsignedAttributes.schema(names.unsignedAttrs || {\n names: {\n blockName: SIGNER_INFO_UNSIGNED_ATTRS,\n tagNumber: 1\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$5);\n const asn1 = asn1js.compareSchema(schema, schema, SignerInfo.schema());\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result[SIGNER_INFO_VERSION].valueBlock.valueDec;\n const currentSid = asn1.result[SIGNER_INFO_SID];\n if (currentSid.idBlock.tagClass === 1)\n this.sid = new IssuerAndSerialNumber({ schema: currentSid });\n else\n this.sid = currentSid;\n this.digestAlgorithm = new AlgorithmIdentifier({ schema: asn1.result[SIGNER_INFO_DIGEST_ALGORITHM] });\n if (SIGNER_INFO_SIGNED_ATTRS in asn1.result)\n this.signedAttrs = new SignedAndUnsignedAttributes({ type: 0, schema: asn1.result[SIGNER_INFO_SIGNED_ATTRS] });\n this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result[SIGNER_INFO_SIGNATURE_ALGORITHM] });\n this.signature = asn1.result[SIGNER_INFO_SIGNATURE];\n if (SIGNER_INFO_UNSIGNED_ATTRS in asn1.result)\n this.unsignedAttrs = new SignedAndUnsignedAttributes({ type: 1, schema: asn1.result[SIGNER_INFO_UNSIGNED_ATTRS] });\n }\n toSchema() {\n if (SignerInfo.compareWithDefault(SID, this.sid))\n throw new Error(\"Incorrectly initialized \\\"SignerInfo\\\" class\");\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n if (this.sid instanceof IssuerAndSerialNumber)\n outputArray.push(this.sid.toSchema());\n else\n outputArray.push(this.sid);\n outputArray.push(this.digestAlgorithm.toSchema());\n if (this.signedAttrs) {\n if (SignerInfo.compareWithDefault(SIGNED_ATTRS, this.signedAttrs) === false)\n outputArray.push(this.signedAttrs.toSchema());\n }\n outputArray.push(this.signatureAlgorithm.toSchema());\n outputArray.push(this.signature);\n if (this.unsignedAttrs) {\n if (SignerInfo.compareWithDefault(UNSIGNED_ATTRS, this.unsignedAttrs) === false)\n outputArray.push(this.unsignedAttrs.toSchema());\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n if (SignerInfo.compareWithDefault(SID, this.sid)) {\n throw new Error(\"Incorrectly initialized \\\"SignerInfo\\\" class\");\n }\n const res = {\n version: this.version,\n digestAlgorithm: this.digestAlgorithm.toJSON(),\n signatureAlgorithm: this.signatureAlgorithm.toJSON(),\n signature: this.signature.toJSON(),\n };\n if (!(this.sid instanceof asn1js.Any))\n res.sid = this.sid.toJSON();\n if (this.signedAttrs && SignerInfo.compareWithDefault(SIGNED_ATTRS, this.signedAttrs) === false) {\n res.signedAttrs = this.signedAttrs.toJSON();\n }\n if (this.unsignedAttrs && SignerInfo.compareWithDefault(UNSIGNED_ATTRS, this.unsignedAttrs) === false) {\n res.unsignedAttrs = this.unsignedAttrs.toJSON();\n }\n return res;\n }\n}\nSignerInfo.CLASS_NAME = \"SignerInfo\";\n\nconst VERSION$3 = \"version\";\nconst POLICY = \"policy\";\nconst MESSAGE_IMPRINT$1 = \"messageImprint\";\nconst SERIAL_NUMBER = \"serialNumber\";\nconst GEN_TIME = \"genTime\";\nconst ORDERING = \"ordering\";\nconst NONCE$1 = \"nonce\";\nconst ACCURACY = \"accuracy\";\nconst TSA = \"tsa\";\nconst EXTENSIONS$1 = \"extensions\";\nconst TST_INFO = \"TSTInfo\";\nconst TST_INFO_VERSION = `${TST_INFO}.${VERSION$3}`;\nconst TST_INFO_POLICY = `${TST_INFO}.${POLICY}`;\nconst TST_INFO_MESSAGE_IMPRINT = `${TST_INFO}.${MESSAGE_IMPRINT$1}`;\nconst TST_INFO_SERIAL_NUMBER = `${TST_INFO}.${SERIAL_NUMBER}`;\nconst TST_INFO_GEN_TIME = `${TST_INFO}.${GEN_TIME}`;\nconst TST_INFO_ACCURACY = `${TST_INFO}.${ACCURACY}`;\nconst TST_INFO_ORDERING = `${TST_INFO}.${ORDERING}`;\nconst TST_INFO_NONCE = `${TST_INFO}.${NONCE$1}`;\nconst TST_INFO_TSA = `${TST_INFO}.${TSA}`;\nconst TST_INFO_EXTENSIONS = `${TST_INFO}.${EXTENSIONS$1}`;\nconst CLEAR_PROPS$4 = [\n TST_INFO_VERSION,\n TST_INFO_POLICY,\n TST_INFO_MESSAGE_IMPRINT,\n TST_INFO_SERIAL_NUMBER,\n TST_INFO_GEN_TIME,\n TST_INFO_ACCURACY,\n TST_INFO_ORDERING,\n TST_INFO_NONCE,\n TST_INFO_TSA,\n TST_INFO_EXTENSIONS\n];\nclass TSTInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$3, TSTInfo.defaultValues(VERSION$3));\n this.policy = pvutils.getParametersValue(parameters, POLICY, TSTInfo.defaultValues(POLICY));\n this.messageImprint = pvutils.getParametersValue(parameters, MESSAGE_IMPRINT$1, TSTInfo.defaultValues(MESSAGE_IMPRINT$1));\n this.serialNumber = pvutils.getParametersValue(parameters, SERIAL_NUMBER, TSTInfo.defaultValues(SERIAL_NUMBER));\n this.genTime = pvutils.getParametersValue(parameters, GEN_TIME, TSTInfo.defaultValues(GEN_TIME));\n if (ACCURACY in parameters) {\n this.accuracy = pvutils.getParametersValue(parameters, ACCURACY, TSTInfo.defaultValues(ACCURACY));\n }\n if (ORDERING in parameters) {\n this.ordering = pvutils.getParametersValue(parameters, ORDERING, TSTInfo.defaultValues(ORDERING));\n }\n if (NONCE$1 in parameters) {\n this.nonce = pvutils.getParametersValue(parameters, NONCE$1, TSTInfo.defaultValues(NONCE$1));\n }\n if (TSA in parameters) {\n this.tsa = pvutils.getParametersValue(parameters, TSA, TSTInfo.defaultValues(TSA));\n }\n if (EXTENSIONS$1 in parameters) {\n this.extensions = pvutils.getParametersValue(parameters, EXTENSIONS$1, TSTInfo.defaultValues(EXTENSIONS$1));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$3:\n return 0;\n case POLICY:\n return EMPTY_STRING;\n case MESSAGE_IMPRINT$1:\n return new MessageImprint();\n case SERIAL_NUMBER:\n return new asn1js.Integer();\n case GEN_TIME:\n return new Date(0, 0, 0);\n case ACCURACY:\n return new Accuracy();\n case ORDERING:\n return false;\n case NONCE$1:\n return new asn1js.Integer();\n case TSA:\n return new GeneralName();\n case EXTENSIONS$1:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$3:\n case POLICY:\n case GEN_TIME:\n case ORDERING:\n return (memberValue === TSTInfo.defaultValues(ORDERING));\n case MESSAGE_IMPRINT$1:\n return ((MessageImprint.compareWithDefault(HASH_ALGORITHM, memberValue.hashAlgorithm)) &&\n (MessageImprint.compareWithDefault(HASHED_MESSAGE, memberValue.hashedMessage)));\n case SERIAL_NUMBER:\n case NONCE$1:\n return (memberValue.isEqual(TSTInfo.defaultValues(NONCE$1)));\n case ACCURACY:\n return ((Accuracy.compareWithDefault(SECONDS, memberValue.seconds)) &&\n (Accuracy.compareWithDefault(MILLIS, memberValue.millis)) &&\n (Accuracy.compareWithDefault(MICROS, memberValue.micros)));\n case TSA:\n return ((GeneralName.compareWithDefault(TYPE$4, memberValue.type)) &&\n (GeneralName.compareWithDefault(VALUE$5, memberValue.value)));\n case EXTENSIONS$1:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || TST_INFO),\n value: [\n new asn1js.Integer({ name: (names.version || TST_INFO_VERSION) }),\n new asn1js.ObjectIdentifier({ name: (names.policy || TST_INFO_POLICY) }),\n MessageImprint.schema(names.messageImprint || {\n names: {\n blockName: TST_INFO_MESSAGE_IMPRINT\n }\n }),\n new asn1js.Integer({ name: (names.serialNumber || TST_INFO_SERIAL_NUMBER) }),\n new asn1js.GeneralizedTime({ name: (names.genTime || TST_INFO_GEN_TIME) }),\n Accuracy.schema(names.accuracy || {\n names: {\n blockName: TST_INFO_ACCURACY\n }\n }),\n new asn1js.Boolean({\n name: (names.ordering || TST_INFO_ORDERING),\n optional: true\n }),\n new asn1js.Integer({\n name: (names.nonce || TST_INFO_NONCE),\n optional: true\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [GeneralName.schema(names.tsa || {\n names: {\n blockName: TST_INFO_TSA\n }\n })]\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: [\n new asn1js.Repeated({\n name: (names.extensions || TST_INFO_EXTENSIONS),\n value: Extension.schema(names.extension || {})\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$4);\n const asn1 = asn1js.compareSchema(schema, schema, TSTInfo.schema());\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result[TST_INFO_VERSION].valueBlock.valueDec;\n this.policy = asn1.result[TST_INFO_POLICY].valueBlock.toString();\n this.messageImprint = new MessageImprint({ schema: asn1.result[TST_INFO_MESSAGE_IMPRINT] });\n this.serialNumber = asn1.result[TST_INFO_SERIAL_NUMBER];\n this.genTime = asn1.result[TST_INFO_GEN_TIME].toDate();\n if (TST_INFO_ACCURACY in asn1.result)\n this.accuracy = new Accuracy({ schema: asn1.result[TST_INFO_ACCURACY] });\n if (TST_INFO_ORDERING in asn1.result)\n this.ordering = asn1.result[TST_INFO_ORDERING].valueBlock.value;\n if (TST_INFO_NONCE in asn1.result)\n this.nonce = asn1.result[TST_INFO_NONCE];\n if (TST_INFO_TSA in asn1.result)\n this.tsa = new GeneralName({ schema: asn1.result[TST_INFO_TSA] });\n if (TST_INFO_EXTENSIONS in asn1.result)\n this.extensions = Array.from(asn1.result[TST_INFO_EXTENSIONS], element => new Extension({ schema: element }));\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.policy }));\n outputArray.push(this.messageImprint.toSchema());\n outputArray.push(this.serialNumber);\n outputArray.push(new asn1js.GeneralizedTime({ valueDate: this.genTime }));\n if (this.accuracy)\n outputArray.push(this.accuracy.toSchema());\n if (this.ordering !== undefined)\n outputArray.push(new asn1js.Boolean({ value: this.ordering }));\n if (this.nonce)\n outputArray.push(this.nonce);\n if (this.tsa) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [this.tsa.toSchema()]\n }));\n }\n if (this.extensions) {\n outputArray.push(new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: Array.from(this.extensions, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n version: this.version,\n policy: this.policy,\n messageImprint: this.messageImprint.toJSON(),\n serialNumber: this.serialNumber.toJSON(),\n genTime: this.genTime\n };\n if (this.accuracy)\n res.accuracy = this.accuracy.toJSON();\n if (this.ordering !== undefined)\n res.ordering = this.ordering;\n if (this.nonce)\n res.nonce = this.nonce.toJSON();\n if (this.tsa)\n res.tsa = this.tsa.toJSON();\n if (this.extensions)\n res.extensions = Array.from(this.extensions, o => o.toJSON());\n return res;\n }\n async verify(params, crypto = getCrypto(true)) {\n if (!params.data) {\n throw new Error(\"\\\"data\\\" is a mandatory attribute for TST_INFO verification\");\n }\n const data = params.data;\n if (params.notBefore) {\n if (this.genTime < params.notBefore)\n throw new Error(\"Generation time for TSTInfo object is less than notBefore value\");\n }\n if (params.notAfter) {\n if (this.genTime > params.notAfter)\n throw new Error(\"Generation time for TSTInfo object is more than notAfter value\");\n }\n const shaAlgorithm = crypto.getAlgorithmByOID(this.messageImprint.hashAlgorithm.algorithmId, true, \"MessageImprint.hashAlgorithm\");\n const hash = await crypto.digest(shaAlgorithm.name, new Uint8Array(data));\n return pvtsutils.BufferSourceConverter.isEqual(hash, this.messageImprint.hashedMessage.valueBlock.valueHexView);\n }\n}\nTSTInfo.CLASS_NAME = \"TSTInfo\";\n\nconst VERSION$2 = \"version\";\nconst DIGEST_ALGORITHMS = \"digestAlgorithms\";\nconst ENCAP_CONTENT_INFO = \"encapContentInfo\";\nconst CERTIFICATES = \"certificates\";\nconst CRLS = \"crls\";\nconst SIGNER_INFOS = \"signerInfos\";\nconst OCSPS = \"ocsps\";\nconst SIGNED_DATA = \"SignedData\";\nconst SIGNED_DATA_VERSION = `${SIGNED_DATA}.${VERSION$2}`;\nconst SIGNED_DATA_DIGEST_ALGORITHMS = `${SIGNED_DATA}.${DIGEST_ALGORITHMS}`;\nconst SIGNED_DATA_ENCAP_CONTENT_INFO = `${SIGNED_DATA}.${ENCAP_CONTENT_INFO}`;\nconst SIGNED_DATA_CERTIFICATES = `${SIGNED_DATA}.${CERTIFICATES}`;\nconst SIGNED_DATA_CRLS = `${SIGNED_DATA}.${CRLS}`;\nconst SIGNED_DATA_SIGNER_INFOS = `${SIGNED_DATA}.${SIGNER_INFOS}`;\nconst CLEAR_PROPS$3 = [\n SIGNED_DATA_VERSION,\n SIGNED_DATA_DIGEST_ALGORITHMS,\n SIGNED_DATA_ENCAP_CONTENT_INFO,\n SIGNED_DATA_CERTIFICATES,\n SIGNED_DATA_CRLS,\n SIGNED_DATA_SIGNER_INFOS\n];\nclass SignedDataVerifyError extends Error {\n constructor({ message, code = 0, date = new Date(), signatureVerified = null, signerCertificate = null, signerCertificateVerified = null, timestampSerial = null, certificatePath = [], }) {\n super(message);\n this.name = \"SignedDataVerifyError\";\n this.date = date;\n this.code = code;\n this.timestampSerial = timestampSerial;\n this.signatureVerified = signatureVerified;\n this.signerCertificate = signerCertificate;\n this.signerCertificateVerified = signerCertificateVerified;\n this.certificatePath = certificatePath;\n }\n}\nclass SignedData extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$2, SignedData.defaultValues(VERSION$2));\n this.digestAlgorithms = pvutils.getParametersValue(parameters, DIGEST_ALGORITHMS, SignedData.defaultValues(DIGEST_ALGORITHMS));\n this.encapContentInfo = pvutils.getParametersValue(parameters, ENCAP_CONTENT_INFO, SignedData.defaultValues(ENCAP_CONTENT_INFO));\n if (CERTIFICATES in parameters) {\n this.certificates = pvutils.getParametersValue(parameters, CERTIFICATES, SignedData.defaultValues(CERTIFICATES));\n }\n if (CRLS in parameters) {\n this.crls = pvutils.getParametersValue(parameters, CRLS, SignedData.defaultValues(CRLS));\n }\n if (OCSPS in parameters) {\n this.ocsps = pvutils.getParametersValue(parameters, OCSPS, SignedData.defaultValues(OCSPS));\n }\n this.signerInfos = pvutils.getParametersValue(parameters, SIGNER_INFOS, SignedData.defaultValues(SIGNER_INFOS));\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$2:\n return 0;\n case DIGEST_ALGORITHMS:\n return [];\n case ENCAP_CONTENT_INFO:\n return new EncapsulatedContentInfo();\n case CERTIFICATES:\n return [];\n case CRLS:\n return [];\n case OCSPS:\n return [];\n case SIGNER_INFOS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$2:\n return (memberValue === SignedData.defaultValues(VERSION$2));\n case ENCAP_CONTENT_INFO:\n return EncapsulatedContentInfo.compareWithDefault(\"eContentType\", memberValue.eContentType) &&\n EncapsulatedContentInfo.compareWithDefault(\"eContent\", memberValue.eContent);\n case DIGEST_ALGORITHMS:\n case CERTIFICATES:\n case CRLS:\n case OCSPS:\n case SIGNER_INFOS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n if (names.optional === undefined) {\n names.optional = false;\n }\n return (new asn1js.Sequence({\n name: (names.blockName || SIGNED_DATA),\n optional: names.optional,\n value: [\n new asn1js.Integer({ name: (names.version || SIGNED_DATA_VERSION) }),\n new asn1js.Set({\n value: [\n new asn1js.Repeated({\n name: (names.digestAlgorithms || SIGNED_DATA_DIGEST_ALGORITHMS),\n value: AlgorithmIdentifier.schema()\n })\n ]\n }),\n EncapsulatedContentInfo.schema(names.encapContentInfo || {\n names: {\n blockName: SIGNED_DATA_ENCAP_CONTENT_INFO\n }\n }),\n new asn1js.Constructed({\n name: (names.certificates || SIGNED_DATA_CERTIFICATES),\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: CertificateSet.schema().valueBlock.value\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: RevocationInfoChoices.schema(names.crls || {\n names: {\n crls: SIGNED_DATA_CRLS\n }\n }).valueBlock.value\n }),\n new asn1js.Set({\n value: [\n new asn1js.Repeated({\n name: (names.signerInfos || SIGNED_DATA_SIGNER_INFOS),\n value: SignerInfo.schema()\n })\n ]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$3);\n const asn1 = asn1js.compareSchema(schema, schema, SignedData.schema());\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result[SIGNED_DATA_VERSION].valueBlock.valueDec;\n if (SIGNED_DATA_DIGEST_ALGORITHMS in asn1.result)\n this.digestAlgorithms = Array.from(asn1.result[SIGNED_DATA_DIGEST_ALGORITHMS], algorithm => new AlgorithmIdentifier({ schema: algorithm }));\n this.encapContentInfo = new EncapsulatedContentInfo({ schema: asn1.result[SIGNED_DATA_ENCAP_CONTENT_INFO] });\n if (SIGNED_DATA_CERTIFICATES in asn1.result) {\n const certificateSet = new CertificateSet({\n schema: new asn1js.Set({\n value: asn1.result[SIGNED_DATA_CERTIFICATES].valueBlock.value\n })\n });\n this.certificates = certificateSet.certificates.slice(0);\n }\n if (SIGNED_DATA_CRLS in asn1.result) {\n this.crls = Array.from(asn1.result[SIGNED_DATA_CRLS], (crl) => {\n if (crl.idBlock.tagClass === 1)\n return new CertificateRevocationList({ schema: crl });\n crl.idBlock.tagClass = 1;\n crl.idBlock.tagNumber = 16;\n return new OtherRevocationInfoFormat({ schema: crl });\n });\n }\n if (SIGNED_DATA_SIGNER_INFOS in asn1.result)\n this.signerInfos = Array.from(asn1.result[SIGNED_DATA_SIGNER_INFOS], signerInfoSchema => new SignerInfo({ schema: signerInfoSchema }));\n }\n toSchema(encodeFlag = false) {\n const outputArray = [];\n if ((this.certificates && this.certificates.length && this.certificates.some(o => o instanceof OtherCertificateFormat))\n || (this.crls && this.crls.length && this.crls.some(o => o instanceof OtherRevocationInfoFormat))) {\n this.version = 5;\n }\n else if (this.certificates && this.certificates.length && this.certificates.some(o => o instanceof AttributeCertificateV2)) {\n this.version = 4;\n }\n else if ((this.certificates && this.certificates.length && this.certificates.some(o => o instanceof AttributeCertificateV1))\n || this.signerInfos.some(o => o.version === 3)\n || this.encapContentInfo.eContentType !== SignedData.ID_DATA) {\n this.version = 3;\n }\n else {\n this.version = 1;\n }\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(new asn1js.Set({\n value: Array.from(this.digestAlgorithms, algorithm => algorithm.toSchema())\n }));\n outputArray.push(this.encapContentInfo.toSchema());\n if (this.certificates) {\n const certificateSet = new CertificateSet({ certificates: this.certificates });\n const certificateSetSchema = certificateSet.toSchema();\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: certificateSetSchema.valueBlock.value\n }));\n }\n if (this.crls) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 1\n },\n value: Array.from(this.crls, crl => {\n if (crl instanceof OtherRevocationInfoFormat) {\n const crlSchema = crl.toSchema();\n crlSchema.idBlock.tagClass = 3;\n crlSchema.idBlock.tagNumber = 1;\n return crlSchema;\n }\n return crl.toSchema(encodeFlag);\n })\n }));\n }\n outputArray.push(new asn1js.Set({\n value: Array.from(this.signerInfos, signerInfo => signerInfo.toSchema())\n }));\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n version: this.version,\n digestAlgorithms: Array.from(this.digestAlgorithms, algorithm => algorithm.toJSON()),\n encapContentInfo: this.encapContentInfo.toJSON(),\n signerInfos: Array.from(this.signerInfos, signerInfo => signerInfo.toJSON()),\n };\n if (this.certificates) {\n res.certificates = Array.from(this.certificates, certificate => certificate.toJSON());\n }\n if (this.crls) {\n res.crls = Array.from(this.crls, crl => crl.toJSON());\n }\n return res;\n }\n async verify({ signer = (-1), data = (EMPTY_BUFFER), trustedCerts = [], checkDate = (new Date()), checkChain = false, passedWhenNotRevValues = false, extendedMode = false, findOrigin = null, findIssuer = null } = {}, crypto = getCrypto(true)) {\n let signerCert = null;\n let timestampSerial = null;\n try {\n let messageDigestValue = EMPTY_BUFFER;\n let shaAlgorithm = EMPTY_STRING;\n let certificatePath = [];\n const signerInfo = this.signerInfos[signer];\n if (!signerInfo) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 1,\n message: \"Unable to get signer by supplied index\",\n });\n }\n if (!this.certificates) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 2,\n message: \"No certificates attached to this signed data\",\n });\n }\n if (signerInfo.sid instanceof IssuerAndSerialNumber) {\n for (const certificate of this.certificates) {\n if (!(certificate instanceof Certificate))\n continue;\n if ((certificate.issuer.isEqual(signerInfo.sid.issuer)) &&\n (certificate.serialNumber.isEqual(signerInfo.sid.serialNumber))) {\n signerCert = certificate;\n break;\n }\n }\n }\n else {\n const sid = signerInfo.sid;\n const keyId = sid.idBlock.isConstructed\n ? sid.valueBlock.value[0].valueBlock.valueHex\n : sid.valueBlock.valueHex;\n for (const certificate of this.certificates) {\n if (!(certificate instanceof Certificate)) {\n continue;\n }\n const digest = await crypto.digest({ name: \"sha-1\" }, certificate.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView);\n if (pvutils.isEqualBuffer(digest, keyId)) {\n signerCert = certificate;\n break;\n }\n }\n }\n if (!signerCert) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 3,\n message: \"Unable to find signer certificate\",\n });\n }\n if (this.encapContentInfo.eContentType === id_eContentType_TSTInfo) {\n if (!this.encapContentInfo.eContent) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 15,\n message: \"Error during verification: TSTInfo eContent is empty\",\n signatureVerified: null,\n signerCertificate: signerCert,\n timestampSerial,\n signerCertificateVerified: true\n });\n }\n let tstInfo;\n try {\n tstInfo = TSTInfo.fromBER(this.encapContentInfo.eContent.valueBlock.valueHexView);\n }\n catch (ex) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 15,\n message: \"Error during verification: TSTInfo wrong ASN.1 schema \",\n signatureVerified: null,\n signerCertificate: signerCert,\n timestampSerial,\n signerCertificateVerified: true\n });\n }\n checkDate = tstInfo.genTime;\n timestampSerial = tstInfo.serialNumber.valueBlock.valueHexView.slice();\n if (data.byteLength === 0) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 4,\n message: \"Missed detached data input array\",\n });\n }\n if (!(await tstInfo.verify({ data }, crypto))) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 15,\n message: \"Error during verification: TSTInfo verification is failed\",\n signatureVerified: false,\n signerCertificate: signerCert,\n timestampSerial,\n signerCertificateVerified: true\n });\n }\n }\n if (checkChain) {\n const certs = this.certificates.filter(certificate => (certificate instanceof Certificate && !!checkCA(certificate, signerCert)));\n const chainParams = {\n checkDate,\n certs,\n trustedCerts,\n };\n if (findIssuer) {\n chainParams.findIssuer = findIssuer;\n }\n if (findOrigin) {\n chainParams.findOrigin = findOrigin;\n }\n const chainEngine = new CertificateChainValidationEngine(chainParams);\n chainEngine.certs.push(signerCert);\n if (this.crls) {\n for (const crl of this.crls) {\n if (\"thisUpdate\" in crl)\n chainEngine.crls.push(crl);\n else {\n if (crl.otherRevInfoFormat === id_PKIX_OCSP_Basic)\n chainEngine.ocsps.push(new BasicOCSPResponse({ schema: crl.otherRevInfo }));\n }\n }\n }\n if (this.ocsps) {\n chainEngine.ocsps.push(...(this.ocsps));\n }\n const verificationResult = await chainEngine.verify({ passedWhenNotRevValues }, crypto)\n .catch(e => {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 5,\n message: `Validation of signer's certificate failed with error: ${((e instanceof Object) ? e.resultMessage : e)}`,\n signerCertificate: signerCert,\n signerCertificateVerified: false\n });\n });\n if (verificationResult.certificatePath) {\n certificatePath = verificationResult.certificatePath;\n }\n if (!verificationResult.result)\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 5,\n message: `Validation of signer's certificate failed: ${verificationResult.resultMessage}`,\n signerCertificate: signerCert,\n signerCertificateVerified: false\n });\n }\n const signerInfoHashAlgorithm = crypto.getAlgorithmByOID(signerInfo.digestAlgorithm.algorithmId);\n if (!(\"name\" in signerInfoHashAlgorithm)) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 7,\n message: `Unsupported signature algorithm: ${signerInfo.digestAlgorithm.algorithmId}`,\n signerCertificate: signerCert,\n signerCertificateVerified: true\n });\n }\n shaAlgorithm = signerInfoHashAlgorithm.name;\n const eContent = this.encapContentInfo.eContent;\n if (eContent) {\n if ((eContent.idBlock.tagClass === 1) &&\n (eContent.idBlock.tagNumber === 4)) {\n data = eContent.getValue();\n }\n else\n data = eContent.valueBlock.valueBeforeDecodeView;\n }\n else {\n if (data.byteLength === 0) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 8,\n message: \"Missed detached data input array\",\n signerCertificate: signerCert,\n signerCertificateVerified: true\n });\n }\n }\n if (signerInfo.signedAttrs) {\n let foundContentType = false;\n let foundMessageDigest = false;\n for (const attribute of signerInfo.signedAttrs.attributes) {\n if (attribute.type === \"1.2.840.113549.1.9.3\")\n foundContentType = true;\n if (attribute.type === \"1.2.840.113549.1.9.4\") {\n foundMessageDigest = true;\n messageDigestValue = attribute.values[0].valueBlock.valueHex;\n }\n if (foundContentType && foundMessageDigest)\n break;\n }\n if (foundContentType === false) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 9,\n message: \"Attribute \\\"content-type\\\" is a mandatory attribute for \\\"signed attributes\\\"\",\n signerCertificate: signerCert,\n signerCertificateVerified: true\n });\n }\n if (foundMessageDigest === false) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 10,\n message: \"Attribute \\\"message-digest\\\" is a mandatory attribute for \\\"signed attributes\\\"\",\n signatureVerified: null,\n signerCertificate: signerCert,\n signerCertificateVerified: true\n });\n }\n }\n if (signerInfo.signedAttrs) {\n const messageDigest = await crypto.digest(shaAlgorithm, new Uint8Array(data));\n if (!pvutils.isEqualBuffer(messageDigest, messageDigestValue)) {\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 15,\n message: \"Error during verification: Message digest doesn't match\",\n signatureVerified: null,\n signerCertificate: signerCert,\n timestampSerial,\n signerCertificateVerified: true\n });\n }\n data = signerInfo.signedAttrs.encodedValue;\n }\n const verifyResult = signerInfo.signatureAlgorithm.algorithmId === \"1.2.840.113549.1.1.1\"\n ? await crypto.verifyWithPublicKey(data, signerInfo.signature, signerCert.subjectPublicKeyInfo, signerInfo.signatureAlgorithm, shaAlgorithm)\n : await crypto.verifyWithPublicKey(data, signerInfo.signature, signerCert.subjectPublicKeyInfo, signerInfo.signatureAlgorithm);\n if (extendedMode) {\n return {\n date: checkDate,\n code: 14,\n message: EMPTY_STRING,\n signatureVerified: verifyResult,\n signerCertificate: signerCert,\n timestampSerial,\n signerCertificateVerified: true,\n certificatePath\n };\n }\n else {\n return verifyResult;\n }\n }\n catch (e) {\n if (e instanceof SignedDataVerifyError) {\n throw e;\n }\n throw new SignedDataVerifyError({\n date: checkDate,\n code: 15,\n message: `Error during verification: ${e instanceof Error ? e.message : e}`,\n signatureVerified: null,\n signerCertificate: signerCert,\n timestampSerial,\n signerCertificateVerified: true\n });\n }\n }\n async sign(privateKey, signerIndex, hashAlgorithm = \"SHA-1\", data = (EMPTY_BUFFER), crypto = getCrypto(true)) {\n var _a;\n if (!privateKey)\n throw new Error(\"Need to provide a private key for signing\");\n const signerInfo = this.signerInfos[signerIndex];\n if (!signerInfo) {\n throw new RangeError(\"SignerInfo index is out of range\");\n }\n if (!((_a = signerInfo.signedAttrs) === null || _a === void 0 ? void 0 : _a.attributes.length) && \"hash\" in privateKey.algorithm && \"hash\" in privateKey.algorithm && privateKey.algorithm.hash) {\n hashAlgorithm = privateKey.algorithm.hash.name;\n }\n const hashAlgorithmOID = crypto.getOIDByAlgorithm({ name: hashAlgorithm }, true, \"hashAlgorithm\");\n if ((this.digestAlgorithms.filter(algorithm => algorithm.algorithmId === hashAlgorithmOID)).length === 0) {\n this.digestAlgorithms.push(new AlgorithmIdentifier({\n algorithmId: hashAlgorithmOID,\n algorithmParams: new asn1js.Null()\n }));\n }\n signerInfo.digestAlgorithm = new AlgorithmIdentifier({\n algorithmId: hashAlgorithmOID,\n algorithmParams: new asn1js.Null()\n });\n const signatureParams = await crypto.getSignatureParameters(privateKey, hashAlgorithm);\n const parameters = signatureParams.parameters;\n signerInfo.signatureAlgorithm = signatureParams.signatureAlgorithm;\n if (signerInfo.signedAttrs) {\n if (signerInfo.signedAttrs.encodedValue.byteLength !== 0)\n data = signerInfo.signedAttrs.encodedValue;\n else {\n data = signerInfo.signedAttrs.toSchema().toBER();\n const view = pvtsutils.BufferSourceConverter.toUint8Array(data);\n view[0] = 0x31;\n }\n }\n else {\n const eContent = this.encapContentInfo.eContent;\n if (eContent) {\n if ((eContent.idBlock.tagClass === 1) &&\n (eContent.idBlock.tagNumber === 4)) {\n data = eContent.getValue();\n }\n else\n data = eContent.valueBlock.valueBeforeDecodeView;\n }\n else {\n if (data.byteLength === 0)\n throw new Error(\"Missed detached data input array\");\n }\n }\n const signature = await crypto.signWithPrivateKey(data, privateKey, parameters);\n signerInfo.signature = new asn1js.OctetString({ valueHex: signature });\n }\n}\nSignedData.CLASS_NAME = \"SignedData\";\nSignedData.ID_DATA = id_ContentType_Data;\n\nconst VERSION$1 = \"version\";\nconst AUTH_SAFE = \"authSafe\";\nconst MAC_DATA = \"macData\";\nconst PARSED_VALUE = \"parsedValue\";\nconst CLERA_PROPS = [\n VERSION$1,\n AUTH_SAFE,\n MAC_DATA\n];\nclass PFX extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION$1, PFX.defaultValues(VERSION$1));\n this.authSafe = pvutils.getParametersValue(parameters, AUTH_SAFE, PFX.defaultValues(AUTH_SAFE));\n if (MAC_DATA in parameters) {\n this.macData = pvutils.getParametersValue(parameters, MAC_DATA, PFX.defaultValues(MAC_DATA));\n }\n if (PARSED_VALUE in parameters) {\n this.parsedValue = pvutils.getParametersValue(parameters, PARSED_VALUE, PFX.defaultValues(PARSED_VALUE));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION$1:\n return 3;\n case AUTH_SAFE:\n return (new ContentInfo());\n case MAC_DATA:\n return (new MacData());\n case PARSED_VALUE:\n return {};\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION$1:\n return (memberValue === PFX.defaultValues(memberName));\n case AUTH_SAFE:\n return ((ContentInfo.compareWithDefault(\"contentType\", memberValue.contentType)) &&\n (ContentInfo.compareWithDefault(\"content\", memberValue.content)));\n case MAC_DATA:\n return ((MacData.compareWithDefault(\"mac\", memberValue.mac)) &&\n (MacData.compareWithDefault(\"macSalt\", memberValue.macSalt)) &&\n (MacData.compareWithDefault(\"iterations\", memberValue.iterations)));\n case PARSED_VALUE:\n return ((memberValue instanceof Object) && (Object.keys(memberValue).length === 0));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.version || VERSION$1) }),\n ContentInfo.schema(names.authSafe || {\n names: {\n blockName: AUTH_SAFE\n }\n }),\n MacData.schema(names.macData || {\n names: {\n blockName: MAC_DATA,\n optional: true\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLERA_PROPS);\n const asn1 = asn1js.compareSchema(schema, schema, PFX.schema({\n names: {\n version: VERSION$1,\n authSafe: {\n names: {\n blockName: AUTH_SAFE\n }\n },\n macData: {\n names: {\n blockName: MAC_DATA\n }\n }\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result.version.valueBlock.valueDec;\n this.authSafe = new ContentInfo({ schema: asn1.result.authSafe });\n if (MAC_DATA in asn1.result)\n this.macData = new MacData({ schema: asn1.result.macData });\n }\n toSchema() {\n const outputArray = [\n new asn1js.Integer({ value: this.version }),\n this.authSafe.toSchema()\n ];\n if (this.macData) {\n outputArray.push(this.macData.toSchema());\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const output = {\n version: this.version,\n authSafe: this.authSafe.toJSON()\n };\n if (this.macData) {\n output.macData = this.macData.toJSON();\n }\n return output;\n }\n async makeInternalValues(parameters = {}, crypto = getCrypto(true)) {\n ArgumentError.assert(parameters, \"parameters\", \"object\");\n if (!this.parsedValue) {\n throw new Error(\"Please call \\\"parseValues\\\" function first in order to make \\\"parsedValue\\\" data\");\n }\n ParameterError.assertEmpty(this.parsedValue.integrityMode, \"integrityMode\", \"parsedValue\");\n ParameterError.assertEmpty(this.parsedValue.authenticatedSafe, \"authenticatedSafe\", \"parsedValue\");\n switch (this.parsedValue.integrityMode) {\n case 0:\n {\n if (!(\"iterations\" in parameters))\n throw new ParameterError(\"iterations\");\n ParameterError.assertEmpty(parameters.pbkdf2HashAlgorithm, \"pbkdf2HashAlgorithm\");\n ParameterError.assertEmpty(parameters.hmacHashAlgorithm, \"hmacHashAlgorithm\");\n ParameterError.assertEmpty(parameters.password, \"password\");\n const saltBuffer = new ArrayBuffer(64);\n const saltView = new Uint8Array(saltBuffer);\n crypto.getRandomValues(saltView);\n const data = this.parsedValue.authenticatedSafe.toSchema().toBER(false);\n this.authSafe = new ContentInfo({\n contentType: ContentInfo.DATA,\n content: new asn1js.OctetString({ valueHex: data })\n });\n const result = await crypto.stampDataWithPassword({\n password: parameters.password,\n hashAlgorithm: parameters.hmacHashAlgorithm,\n salt: saltBuffer,\n iterationCount: parameters.iterations,\n contentToStamp: data\n });\n this.macData = new MacData({\n mac: new DigestInfo({\n digestAlgorithm: new AlgorithmIdentifier({\n algorithmId: crypto.getOIDByAlgorithm({ name: parameters.hmacHashAlgorithm }, true, \"hmacHashAlgorithm\"),\n }),\n digest: new asn1js.OctetString({ valueHex: result })\n }),\n macSalt: new asn1js.OctetString({ valueHex: saltBuffer }),\n iterations: parameters.iterations\n });\n }\n break;\n case 1:\n {\n if (!(\"signingCertificate\" in parameters)) {\n throw new ParameterError(\"signingCertificate\");\n }\n ParameterError.assertEmpty(parameters.privateKey, \"privateKey\");\n ParameterError.assertEmpty(parameters.hashAlgorithm, \"hashAlgorithm\");\n const toBeSigned = this.parsedValue.authenticatedSafe.toSchema().toBER(false);\n const cmsSigned = new SignedData({\n version: 1,\n encapContentInfo: new EncapsulatedContentInfo({\n eContentType: \"1.2.840.113549.1.7.1\",\n eContent: new asn1js.OctetString({ valueHex: toBeSigned })\n }),\n certificates: [parameters.signingCertificate]\n });\n const result = await crypto.digest({ name: parameters.hashAlgorithm }, new Uint8Array(toBeSigned));\n const signedAttr = [];\n signedAttr.push(new Attribute({\n type: \"1.2.840.113549.1.9.3\",\n values: [\n new asn1js.ObjectIdentifier({ value: \"1.2.840.113549.1.7.1\" })\n ]\n }));\n signedAttr.push(new Attribute({\n type: \"1.2.840.113549.1.9.5\",\n values: [\n new asn1js.UTCTime({ valueDate: new Date() })\n ]\n }));\n signedAttr.push(new Attribute({\n type: \"1.2.840.113549.1.9.4\",\n values: [\n new asn1js.OctetString({ valueHex: result })\n ]\n }));\n cmsSigned.signerInfos.push(new SignerInfo({\n version: 1,\n sid: new IssuerAndSerialNumber({\n issuer: parameters.signingCertificate.issuer,\n serialNumber: parameters.signingCertificate.serialNumber\n }),\n signedAttrs: new SignedAndUnsignedAttributes({\n type: 0,\n attributes: signedAttr\n })\n }));\n await cmsSigned.sign(parameters.privateKey, 0, parameters.hashAlgorithm, undefined, crypto);\n this.authSafe = new ContentInfo({\n contentType: \"1.2.840.113549.1.7.2\",\n content: cmsSigned.toSchema(true)\n });\n }\n break;\n default:\n throw new Error(`Parameter \"integrityMode\" has unknown value: ${this.parsedValue.integrityMode}`);\n }\n }\n async parseInternalValues(parameters, crypto = getCrypto(true)) {\n ArgumentError.assert(parameters, \"parameters\", \"object\");\n if (parameters.checkIntegrity === undefined) {\n parameters.checkIntegrity = true;\n }\n this.parsedValue = {};\n switch (this.authSafe.contentType) {\n case ContentInfo.DATA:\n {\n ParameterError.assertEmpty(parameters.password, \"password\");\n this.parsedValue.integrityMode = 0;\n ArgumentError.assert(this.authSafe.content, \"authSafe.content\", asn1js.OctetString);\n const authSafeContent = this.authSafe.content.getValue();\n this.parsedValue.authenticatedSafe = AuthenticatedSafe.fromBER(authSafeContent);\n if (parameters.checkIntegrity) {\n if (!this.macData) {\n throw new Error(\"Absent \\\"macData\\\" value, can not check PKCS#12 data integrity\");\n }\n const hashAlgorithm = crypto.getAlgorithmByOID(this.macData.mac.digestAlgorithm.algorithmId, true, \"digestAlgorithm\");\n const result = await crypto.verifyDataStampedWithPassword({\n password: parameters.password,\n hashAlgorithm: hashAlgorithm.name,\n salt: BufferSourceConverter.toArrayBuffer(this.macData.macSalt.valueBlock.valueHexView),\n iterationCount: this.macData.iterations || 1,\n contentToVerify: authSafeContent,\n signatureToVerify: BufferSourceConverter.toArrayBuffer(this.macData.mac.digest.valueBlock.valueHexView),\n });\n if (!result) {\n throw new Error(\"Integrity for the PKCS#12 data is broken!\");\n }\n }\n }\n break;\n case ContentInfo.SIGNED_DATA:\n {\n this.parsedValue.integrityMode = 1;\n const cmsSigned = new SignedData({ schema: this.authSafe.content });\n const eContent = cmsSigned.encapContentInfo.eContent;\n ParameterError.assert(eContent, \"eContent\", \"cmsSigned.encapContentInfo\");\n ArgumentError.assert(eContent, \"eContent\", asn1js.OctetString);\n const data = eContent.getValue();\n this.parsedValue.authenticatedSafe = AuthenticatedSafe.fromBER(data);\n const ok = await cmsSigned.verify({ signer: 0, checkChain: false }, crypto);\n if (!ok) {\n throw new Error(\"Integrity for the PKCS#12 data is broken!\");\n }\n }\n break;\n default:\n throw new Error(`Incorrect value for \"this.authSafe.contentType\": ${this.authSafe.contentType}`);\n }\n }\n}\nPFX.CLASS_NAME = \"PFX\";\n\nconst STATUS$1 = \"status\";\nconst STATUS_STRINGS = \"statusStrings\";\nconst FAIL_INFO = \"failInfo\";\nconst CLEAR_PROPS$2 = [\n STATUS$1,\n STATUS_STRINGS,\n FAIL_INFO\n];\nvar PKIStatus;\n(function (PKIStatus) {\n PKIStatus[PKIStatus[\"granted\"] = 0] = \"granted\";\n PKIStatus[PKIStatus[\"grantedWithMods\"] = 1] = \"grantedWithMods\";\n PKIStatus[PKIStatus[\"rejection\"] = 2] = \"rejection\";\n PKIStatus[PKIStatus[\"waiting\"] = 3] = \"waiting\";\n PKIStatus[PKIStatus[\"revocationWarning\"] = 4] = \"revocationWarning\";\n PKIStatus[PKIStatus[\"revocationNotification\"] = 5] = \"revocationNotification\";\n})(PKIStatus || (PKIStatus = {}));\nclass PKIStatusInfo extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.status = pvutils.getParametersValue(parameters, STATUS$1, PKIStatusInfo.defaultValues(STATUS$1));\n if (STATUS_STRINGS in parameters) {\n this.statusStrings = pvutils.getParametersValue(parameters, STATUS_STRINGS, PKIStatusInfo.defaultValues(STATUS_STRINGS));\n }\n if (FAIL_INFO in parameters) {\n this.failInfo = pvutils.getParametersValue(parameters, FAIL_INFO, PKIStatusInfo.defaultValues(FAIL_INFO));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case STATUS$1:\n return 2;\n case STATUS_STRINGS:\n return [];\n case FAIL_INFO:\n return new asn1js.BitString();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case STATUS$1:\n return (memberValue === PKIStatusInfo.defaultValues(memberName));\n case STATUS_STRINGS:\n return (memberValue.length === 0);\n case FAIL_INFO:\n return (memberValue.isEqual(PKIStatusInfo.defaultValues(memberName)));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || EMPTY_STRING),\n value: [\n new asn1js.Integer({ name: (names.status || EMPTY_STRING) }),\n new asn1js.Sequence({\n optional: true,\n value: [\n new asn1js.Repeated({\n name: (names.statusStrings || EMPTY_STRING),\n value: new asn1js.Utf8String()\n })\n ]\n }),\n new asn1js.BitString({\n name: (names.failInfo || EMPTY_STRING),\n optional: true\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$2);\n const asn1 = asn1js.compareSchema(schema, schema, PKIStatusInfo.schema({\n names: {\n status: STATUS$1,\n statusStrings: STATUS_STRINGS,\n failInfo: FAIL_INFO\n }\n }));\n AsnError.assertSchema(asn1, this.className);\n const _status = asn1.result.status;\n if ((_status.valueBlock.isHexOnly === true) ||\n (_status.valueBlock.valueDec < 0) ||\n (_status.valueBlock.valueDec > 5))\n throw new Error(\"PKIStatusInfo \\\"status\\\" has invalid value\");\n this.status = _status.valueBlock.valueDec;\n if (STATUS_STRINGS in asn1.result)\n this.statusStrings = asn1.result.statusStrings;\n if (FAIL_INFO in asn1.result)\n this.failInfo = asn1.result.failInfo;\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.status }));\n if (this.statusStrings) {\n outputArray.push(new asn1js.Sequence({\n optional: true,\n value: this.statusStrings\n }));\n }\n if (this.failInfo) {\n outputArray.push(this.failInfo);\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n status: this.status\n };\n if (this.statusStrings) {\n res.statusStrings = Array.from(this.statusStrings, o => o.toJSON());\n }\n if (this.failInfo) {\n res.failInfo = this.failInfo.toJSON();\n }\n return res;\n }\n}\nPKIStatusInfo.CLASS_NAME = \"PKIStatusInfo\";\n\nconst VERSION = \"version\";\nconst MESSAGE_IMPRINT = \"messageImprint\";\nconst REQ_POLICY = \"reqPolicy\";\nconst NONCE = \"nonce\";\nconst CERT_REQ = \"certReq\";\nconst EXTENSIONS = \"extensions\";\nconst TIME_STAMP_REQ = \"TimeStampReq\";\nconst TIME_STAMP_REQ_VERSION = `${TIME_STAMP_REQ}.${VERSION}`;\nconst TIME_STAMP_REQ_MESSAGE_IMPRINT = `${TIME_STAMP_REQ}.${MESSAGE_IMPRINT}`;\nconst TIME_STAMP_REQ_POLICY = `${TIME_STAMP_REQ}.${REQ_POLICY}`;\nconst TIME_STAMP_REQ_NONCE = `${TIME_STAMP_REQ}.${NONCE}`;\nconst TIME_STAMP_REQ_CERT_REQ = `${TIME_STAMP_REQ}.${CERT_REQ}`;\nconst TIME_STAMP_REQ_EXTENSIONS = `${TIME_STAMP_REQ}.${EXTENSIONS}`;\nconst CLEAR_PROPS$1 = [\n TIME_STAMP_REQ_VERSION,\n TIME_STAMP_REQ_MESSAGE_IMPRINT,\n TIME_STAMP_REQ_POLICY,\n TIME_STAMP_REQ_NONCE,\n TIME_STAMP_REQ_CERT_REQ,\n TIME_STAMP_REQ_EXTENSIONS,\n];\nclass TimeStampReq extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.version = pvutils.getParametersValue(parameters, VERSION, TimeStampReq.defaultValues(VERSION));\n this.messageImprint = pvutils.getParametersValue(parameters, MESSAGE_IMPRINT, TimeStampReq.defaultValues(MESSAGE_IMPRINT));\n if (REQ_POLICY in parameters) {\n this.reqPolicy = pvutils.getParametersValue(parameters, REQ_POLICY, TimeStampReq.defaultValues(REQ_POLICY));\n }\n if (NONCE in parameters) {\n this.nonce = pvutils.getParametersValue(parameters, NONCE, TimeStampReq.defaultValues(NONCE));\n }\n if (CERT_REQ in parameters) {\n this.certReq = pvutils.getParametersValue(parameters, CERT_REQ, TimeStampReq.defaultValues(CERT_REQ));\n }\n if (EXTENSIONS in parameters) {\n this.extensions = pvutils.getParametersValue(parameters, EXTENSIONS, TimeStampReq.defaultValues(EXTENSIONS));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case VERSION:\n return 0;\n case MESSAGE_IMPRINT:\n return new MessageImprint();\n case REQ_POLICY:\n return EMPTY_STRING;\n case NONCE:\n return new asn1js.Integer();\n case CERT_REQ:\n return false;\n case EXTENSIONS:\n return [];\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case VERSION:\n case REQ_POLICY:\n case CERT_REQ:\n return (memberValue === TimeStampReq.defaultValues(memberName));\n case MESSAGE_IMPRINT:\n return ((MessageImprint.compareWithDefault(\"hashAlgorithm\", memberValue.hashAlgorithm)) &&\n (MessageImprint.compareWithDefault(\"hashedMessage\", memberValue.hashedMessage)));\n case NONCE:\n return (memberValue.isEqual(TimeStampReq.defaultValues(memberName)));\n case EXTENSIONS:\n return (memberValue.length === 0);\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || TIME_STAMP_REQ),\n value: [\n new asn1js.Integer({ name: (names.version || TIME_STAMP_REQ_VERSION) }),\n MessageImprint.schema(names.messageImprint || {\n names: {\n blockName: TIME_STAMP_REQ_MESSAGE_IMPRINT\n }\n }),\n new asn1js.ObjectIdentifier({\n name: (names.reqPolicy || TIME_STAMP_REQ_POLICY),\n optional: true\n }),\n new asn1js.Integer({\n name: (names.nonce || TIME_STAMP_REQ_NONCE),\n optional: true\n }),\n new asn1js.Boolean({\n name: (names.certReq || TIME_STAMP_REQ_CERT_REQ),\n optional: true\n }),\n new asn1js.Constructed({\n optional: true,\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: [new asn1js.Repeated({\n name: (names.extensions || TIME_STAMP_REQ_EXTENSIONS),\n value: Extension.schema()\n })]\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS$1);\n const asn1 = asn1js.compareSchema(schema, schema, TimeStampReq.schema());\n AsnError.assertSchema(asn1, this.className);\n this.version = asn1.result[TIME_STAMP_REQ_VERSION].valueBlock.valueDec;\n this.messageImprint = new MessageImprint({ schema: asn1.result[TIME_STAMP_REQ_MESSAGE_IMPRINT] });\n if (TIME_STAMP_REQ_POLICY in asn1.result)\n this.reqPolicy = asn1.result[TIME_STAMP_REQ_POLICY].valueBlock.toString();\n if (TIME_STAMP_REQ_NONCE in asn1.result)\n this.nonce = asn1.result[TIME_STAMP_REQ_NONCE];\n if (TIME_STAMP_REQ_CERT_REQ in asn1.result)\n this.certReq = asn1.result[TIME_STAMP_REQ_CERT_REQ].valueBlock.value;\n if (TIME_STAMP_REQ_EXTENSIONS in asn1.result)\n this.extensions = Array.from(asn1.result[TIME_STAMP_REQ_EXTENSIONS], element => new Extension({ schema: element }));\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(new asn1js.Integer({ value: this.version }));\n outputArray.push(this.messageImprint.toSchema());\n if (this.reqPolicy)\n outputArray.push(new asn1js.ObjectIdentifier({ value: this.reqPolicy }));\n if (this.nonce)\n outputArray.push(this.nonce);\n if ((CERT_REQ in this) && (TimeStampReq.compareWithDefault(CERT_REQ, this.certReq) === false))\n outputArray.push(new asn1js.Boolean({ value: this.certReq }));\n if (this.extensions) {\n outputArray.push(new asn1js.Constructed({\n idBlock: {\n tagClass: 3,\n tagNumber: 0\n },\n value: Array.from(this.extensions, o => o.toSchema())\n }));\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n version: this.version,\n messageImprint: this.messageImprint.toJSON()\n };\n if (this.reqPolicy !== undefined)\n res.reqPolicy = this.reqPolicy;\n if (this.nonce !== undefined)\n res.nonce = this.nonce.toJSON();\n if ((this.certReq !== undefined) && (TimeStampReq.compareWithDefault(CERT_REQ, this.certReq) === false))\n res.certReq = this.certReq;\n if (this.extensions) {\n res.extensions = Array.from(this.extensions, o => o.toJSON());\n }\n return res;\n }\n}\nTimeStampReq.CLASS_NAME = \"TimeStampReq\";\n\nconst STATUS = \"status\";\nconst TIME_STAMP_TOKEN = \"timeStampToken\";\nconst TIME_STAMP_RESP = \"TimeStampResp\";\nconst TIME_STAMP_RESP_STATUS = `${TIME_STAMP_RESP}.${STATUS}`;\nconst TIME_STAMP_RESP_TOKEN = `${TIME_STAMP_RESP}.${TIME_STAMP_TOKEN}`;\nconst CLEAR_PROPS = [\n TIME_STAMP_RESP_STATUS,\n TIME_STAMP_RESP_TOKEN\n];\nclass TimeStampResp extends PkiObject {\n constructor(parameters = {}) {\n super();\n this.status = pvutils.getParametersValue(parameters, STATUS, TimeStampResp.defaultValues(STATUS));\n if (TIME_STAMP_TOKEN in parameters) {\n this.timeStampToken = pvutils.getParametersValue(parameters, TIME_STAMP_TOKEN, TimeStampResp.defaultValues(TIME_STAMP_TOKEN));\n }\n if (parameters.schema) {\n this.fromSchema(parameters.schema);\n }\n }\n static defaultValues(memberName) {\n switch (memberName) {\n case STATUS:\n return new PKIStatusInfo();\n case TIME_STAMP_TOKEN:\n return new ContentInfo();\n default:\n return super.defaultValues(memberName);\n }\n }\n static compareWithDefault(memberName, memberValue) {\n switch (memberName) {\n case STATUS:\n return ((PKIStatusInfo.compareWithDefault(STATUS, memberValue.status)) &&\n ((\"statusStrings\" in memberValue) === false) &&\n ((\"failInfo\" in memberValue) === false));\n case TIME_STAMP_TOKEN:\n return ((memberValue.contentType === EMPTY_STRING) &&\n (memberValue.content instanceof asn1js.Any));\n default:\n return super.defaultValues(memberName);\n }\n }\n static schema(parameters = {}) {\n const names = pvutils.getParametersValue(parameters, \"names\", {});\n return (new asn1js.Sequence({\n name: (names.blockName || TIME_STAMP_RESP),\n value: [\n PKIStatusInfo.schema(names.status || {\n names: {\n blockName: TIME_STAMP_RESP_STATUS\n }\n }),\n ContentInfo.schema(names.timeStampToken || {\n names: {\n blockName: TIME_STAMP_RESP_TOKEN,\n optional: true\n }\n })\n ]\n }));\n }\n fromSchema(schema) {\n pvutils.clearProps(schema, CLEAR_PROPS);\n const asn1 = asn1js.compareSchema(schema, schema, TimeStampResp.schema());\n AsnError.assertSchema(asn1, this.className);\n this.status = new PKIStatusInfo({ schema: asn1.result[TIME_STAMP_RESP_STATUS] });\n if (TIME_STAMP_RESP_TOKEN in asn1.result)\n this.timeStampToken = new ContentInfo({ schema: asn1.result[TIME_STAMP_RESP_TOKEN] });\n }\n toSchema() {\n const outputArray = [];\n outputArray.push(this.status.toSchema());\n if (this.timeStampToken) {\n outputArray.push(this.timeStampToken.toSchema());\n }\n return (new asn1js.Sequence({\n value: outputArray\n }));\n }\n toJSON() {\n const res = {\n status: this.status.toJSON()\n };\n if (this.timeStampToken) {\n res.timeStampToken = this.timeStampToken.toJSON();\n }\n return res;\n }\n async sign(privateKey, hashAlgorithm, crypto = getCrypto(true)) {\n this.assertContentType();\n const signed = new SignedData({ schema: this.timeStampToken.content });\n return signed.sign(privateKey, 0, hashAlgorithm, undefined, crypto);\n }\n async verify(verificationParameters = { signer: 0, trustedCerts: [], data: EMPTY_BUFFER }, crypto = getCrypto(true)) {\n this.assertContentType();\n const signed = new SignedData({ schema: this.timeStampToken.content });\n return signed.verify(verificationParameters, crypto);\n }\n assertContentType() {\n if (!this.timeStampToken) {\n throw new Error(\"timeStampToken is absent in TSP response\");\n }\n if (this.timeStampToken.contentType !== id_ContentType_SignedData) {\n throw new Error(`Wrong format of timeStampToken: ${this.timeStampToken.contentType}`);\n }\n }\n}\nTimeStampResp.CLASS_NAME = \"TimeStampResp\";\n\nfunction initCryptoEngine() {\n if (typeof self !== \"undefined\") {\n if (\"crypto\" in self) {\n let engineName = \"webcrypto\";\n if (\"webkitSubtle\" in self.crypto) {\n engineName = \"safari\";\n }\n setEngine(engineName, new CryptoEngine({ name: engineName, crypto: crypto }));\n }\n }\n else if (typeof crypto !== \"undefined\" && \"webcrypto\" in crypto) {\n const name = \"NodeJS ^15\";\n const nodeCrypto = crypto.webcrypto;\n setEngine(name, new CryptoEngine({ name, crypto: nodeCrypto }));\n }\n}\n\ninitCryptoEngine();\n\nexport { AbstractCryptoEngine, AccessDescription, Accuracy, AlgorithmIdentifier, AltName, ArgumentError, AsnError, AttCertValidityPeriod, Attribute, AttributeCertificateInfoV1, AttributeCertificateInfoV2, AttributeCertificateV1, AttributeCertificateV2, AttributeTypeAndValue, AuthenticatedSafe, AuthorityKeyIdentifier, BasicConstraints, BasicOCSPResponse, CAVersion, CRLBag, CRLDistributionPoints, CertBag, CertID, Certificate, CertificateChainValidationEngine, CertificatePolicies, CertificateRevocationList, CertificateSet, CertificateTemplate, CertificationRequest, ChainValidationCode, ChainValidationError, ContentInfo, CryptoEngine, DigestInfo, DistributionPoint, ECCCMSSharedInfo, ECNamedCurves, ECPrivateKey, ECPublicKey, EncapsulatedContentInfo, EncryptedContentInfo, EncryptedData, EnvelopedData, ExtKeyUsage, Extension, ExtensionValueFactory, Extensions, GeneralName, GeneralNames, GeneralSubtree, HASHED_MESSAGE, HASH_ALGORITHM, Holder, InfoAccess, IssuerAndSerialNumber, IssuerSerial, IssuingDistributionPoint, KEKIdentifier, KEKRecipientInfo, KeyAgreeRecipientIdentifier, KeyAgreeRecipientInfo, KeyBag, KeyTransRecipientInfo, MICROS, MILLIS, MacData, MessageImprint, NameConstraints, OCSPRequest, OCSPResponse, ObjectDigestInfo, OriginatorIdentifierOrKey, OriginatorInfo, OriginatorPublicKey, OtherCertificateFormat, OtherKeyAttribute, OtherPrimeInfo, OtherRecipientInfo, OtherRevocationInfoFormat, PBES2Params, PBKDF2Params, PFX, PKCS8ShroudedKeyBag, PKIStatus, PKIStatusInfo, POLICY_IDENTIFIER, POLICY_QUALIFIERS, ParameterError, PasswordRecipientinfo, PkiObject, PolicyConstraints, PolicyInformation, PolicyMapping, PolicyMappings, PolicyQualifierInfo, PrivateKeyInfo, PrivateKeyUsagePeriod, PublicKeyInfo, QCStatement, QCStatements, RDN, RSAESOAEPParams, RSAPrivateKey, RSAPublicKey, RSASSAPSSParams, RecipientEncryptedKey, RecipientEncryptedKeys, RecipientIdentifier, RecipientInfo, RecipientKeyIdentifier, RelativeDistinguishedNames, Request, ResponseBytes, ResponseData, RevocationInfoChoices, RevokedCertificate, SECONDS, SafeBag, SafeBagValueFactory, SafeContents, SecretBag, Signature, SignedAndUnsignedAttributes, SignedCertificateTimestamp, SignedCertificateTimestampList, SignedData, SignedDataVerifyError, SignerInfo, SingleResponse, SubjectDirectoryAttributes, TBSRequest, TSTInfo, TYPE$4 as TYPE, TYPE_AND_VALUES, Time, TimeStampReq, TimeStampResp, TimeType, V2Form, VALUE$5 as VALUE, VALUE_BEFORE_DECODE, checkCA, createCMSECDSASignature, createECDSASignatureFromCMS, engine, getAlgorithmByOID, getAlgorithmParameters, getCrypto, getEngine, getHashAlgorithm, getOIDByAlgorithm, getRandomValues, id_AnyPolicy, id_AuthorityInfoAccess, id_AuthorityKeyIdentifier, id_BaseCRLNumber, id_BasicConstraints, id_CRLBag_X509CRL, id_CRLDistributionPoints, id_CRLNumber, id_CRLReason, id_CertBag_AttributeCertificate, id_CertBag_SDSICertificate, id_CertBag_X509Certificate, id_CertificateIssuer, id_CertificatePolicies, id_ContentType_Data, id_ContentType_EncryptedData, id_ContentType_EnvelopedData, id_ContentType_SignedData, id_ExtKeyUsage, id_FreshestCRL, id_InhibitAnyPolicy, id_InvalidityDate, id_IssuerAltName, id_IssuingDistributionPoint, id_KeyUsage, id_MicrosoftAppPolicies, id_MicrosoftCaVersion, id_MicrosoftCertTemplateV1, id_MicrosoftCertTemplateV2, id_MicrosoftPrevCaCertHash, id_NameConstraints, id_PKIX_OCSP_Basic, id_PolicyConstraints, id_PolicyMappings, id_PrivateKeyUsagePeriod, id_QCStatements, id_SignedCertificateTimestampList, id_SubjectAltName, id_SubjectDirectoryAttributes, id_SubjectInfoAccess, id_SubjectKeyIdentifier, id_ad, id_ad_caIssuers, id_ad_ocsp, id_eContentType_TSTInfo, id_pkix, id_sha1, id_sha256, id_sha384, id_sha512, kdf, setEngine, stringPrep, verifySCTsForCertificate };\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nexport function bufferToString(buffer: Uint8Array): string {\n\treturn String.fromCharCode(...buffer)\n}\n\nexport function stringToBuffer(str: string): Uint8Array {\n\treturn Uint8Array.from(str, c => c.charCodeAt(0))\n}\n\nexport function bufferToBase64(buffer: Uint8Array): string {\n\treturn btoa(bufferToString(buffer))\n}\n\nexport function bufferToHex(buffer: Uint8Array): string {\n\treturn Array.from(buffer).map(byte => byte.toString(16).padStart(2, '0')).join('')\n}\n\nexport function base64ToBuffer(base64Str: string): Uint8Array {\n\treturn stringToBuffer(atob(base64Str))\n}\n\nexport function pemToBuffer(pem: string): Uint8Array {\n\tconst pemContents = pem\n\t\t.replace(/-----BEGIN ((PRIVATE KEY)|(PUBLIC KEY)|(CERTIFICATE))-----/, '')\n\t\t.replace(/-----END ((PRIVATE KEY)|(PUBLIC KEY)|(CERTIFICATE))-----/, '')\n\t\t.replace(/\\n/g, '')\n\n\treturn base64ToBuffer(pemContents)\n}","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { X509Certificate } from '@peculiar/x509'\nimport { Certificate, CryptoEngine, SignedData, ContentInfo } from 'pkijs'\n\nimport { bufferToHex, pemToBuffer } from './bufferUtils'\nimport type { UserWithAccess } from '../models'\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nexport async function encryptWithAES(content: BufferSource, key: CryptoKey, options: Partial = {}) {\n\tconst iv = self.crypto.getRandomValues(new Uint8Array(16))\n\n\tconst encryptedContent = await self.crypto.subtle.encrypt(\n\t\t{ name: 'AES-GCM', iv, ...options },\n\t\tkey,\n\t\tcontent,\n\t)\n\n\treturn {\n\t\tencryptedContent: new Uint8Array(encryptedContent),\n\t\tiv,\n\t}\n}\n\nexport async function decryptWithAES(content: BufferSource, key: CryptoKey, options: Partial = {}): Promise {\n\treturn await self.crypto.subtle.decrypt(\n\t\t{ name: 'AES-GCM', ...options },\n\t\tkey,\n\t\tcontent,\n\t)\n}\n\nexport async function decryptWithRSA(content: BufferSource, key: CryptoKey): Promise {\n\treturn await self.crypto.subtle.decrypt(\n\t\t{ name: 'RSA-OAEP' },\n\t\tkey,\n\t\tcontent,\n\t)\n}\n\nexport async function loadAESPrivateKey(key: Uint8Array): Promise {\n\treturn await self.crypto.subtle.importKey(\n\t\t'raw',\n\t\tkey,\n\t\t{\n\t\t\tname: 'AES-GCM',\n\t\t\tlength: 128,\n\t\t},\n\t\ttrue,\n\t\t['decrypt', 'encrypt'],\n\t)\n}\n\nexport async function loadServerPublicKey(key: Uint8Array, hash: 'SHA-1'|'SHA-256'): Promise {\n\treturn await self.crypto.subtle.importKey(\n\t\t'spki',\n\t\tkey,\n\t\t{\n\t\t\tname: 'RSASSA-PKCS1-v1_5',\n\t\t\thash,\n\t\t},\n\t\ttrue,\n\t\t['verify'],\n\t)\n}\n\nexport async function loadRSAPrivateKey(key: Uint8Array): Promise {\n\treturn await self.crypto.subtle.importKey(\n\t\t'pkcs8',\n\t\tkey,\n\t\t{\n\t\t\tname: 'RSA-OAEP',\n\t\t\thash: 'SHA-256',\n\t\t},\n\t\ttrue,\n\t\t['decrypt'],\n\t)\n}\n\nexport async function exportRSAKey(key: CryptoKey): Promise {\n\tif (key.type === 'public') {\n\t\treturn new Uint8Array(await self.crypto.subtle.exportKey('spki', key))\n\t} else {\n\t\treturn new Uint8Array(await self.crypto.subtle.exportKey('pkcs8', key))\n\t}\n}\n\nexport async function exportAESKey(key: CryptoKey): Promise {\n\treturn new Uint8Array(await self.crypto.subtle.exportKey('raw', key))\n}\n\nexport async function sha256Hash(buffer: Uint8Array): Promise {\n\tconst hashBuffer = await self.crypto.subtle.digest('SHA-256', buffer)\n\treturn bufferToHex(new Uint8Array(hashBuffer))\n}\n\nexport async function validateCertificateSignature(certificate: string, publicKeyPEM: string): Promise {\n\tconst cert = new X509Certificate(certificate)\n\tconst publicKey = await loadServerPublicKey(\n\t\tpemToBuffer(publicKeyPEM),\n\t\tcert.signatureAlgorithm.hash.name as 'SHA-1'|'SHA-256',\n\t)\n\n\treturn cert.verify({ publicKey }, getPatchedCrypto())\n}\n\n// Return a patched crypto because x509's default does not give the correct data type to the subtle.verify method\nfunction getPatchedCrypto(): Crypto {\n\treturn {\n\t\t...self.crypto,\n\t\tsubtle: {\n\t\t\t...self.crypto.subtle,\n\t\t\tasync verify(algorithm: globalThis.AlgorithmIdentifier | RsaPssParams | EcdsaParams, key: CryptoKey, signature: ArrayBuffer, data: ArrayBuffer): Promise {\n\t\t\t\treturn self.crypto.subtle.verify(algorithm, key, new Uint8Array(signature), new Uint8Array(data))\n\t\t\t},\n\t\t},\n\t}\n}\n\nexport async function validateCMSSignature(signedData: Uint8Array, cmsBuffer: Uint8Array, users: UserWithAccess[]): Promise {\n\t// Parse the CMS buffer\n\tconst cmsContent = ContentInfo.fromBER(cmsBuffer)\n\tconst originalSignedData = new SignedData({ schema: cmsContent.content })\n\n\t// Get the signer certificate from the users array\n\tconst signerInfo = originalSignedData.signerInfos[0]\n\tconst signerUserId = signerInfo.sid.issuer.typesAndValues.find(({ type }) => type === '2.5.4.3' /** Common name OID */).value.valueBlock.value\n\tconst signer = users.find(({ userId }) => userId === signerUserId)\n\tif (signer === undefined) {\n\t\tthrow new Error('Signer not found in the users array')\n\t}\n\tconst signerCertificate = Certificate.fromBER(pemToBuffer(signer.certificate))\n\n\tconst verificationResult = await originalSignedData.verify(\n\t\t{\n\t\t\tsigner: 0,\n\t\t\ttrustedCerts: [signerCertificate],\n\t\t\tdata: signedData as unknown as ArrayBuffer,\n\t\t\tcheckChain: true,\n\t\t},\n\t\tgetPatchedCryptoEngine(),\n\t)\n\n\treturn verificationResult\n}\n\nclass CustomCryptoEngine extends CryptoEngine {\n\n\tverify(algorithm: globalThis.AlgorithmIdentifier | RsaPssParams | EcdsaParams, key: CryptoKey, signature: BufferSource, data: ArrayBuffer): Promise {\n\t\treturn super.verify(algorithm, key, signature, new Uint8Array(data))\n\t}\n\n}\n\n// Return a patched crypto engine because pkijs' default engine does not give the correct data type to the subtle.verify method\nfunction getPatchedCryptoEngine() {\n\treturn new CustomCryptoEngine({ crypto: self.crypto })\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nimport logger from './logger.ts'\nimport type { PrivateKeyInfo } from '../models.ts'\nimport { decryptWithAES, loadRSAPrivateKey } from './crypto.ts'\nimport { bufferToString, pemToBuffer } from './bufferUtils.ts'\n\nexport async function decryptPrivateKey(privateKeyInfo: PrivateKeyInfo, mnemonic: string): Promise {\n\tlogger.debug('Decrypting private key', { privateKeyInfo, mnemonic })\n\n\t// We need to support the old mnemonic formats for backwards compatibility\n\tconst mnemonicPrivateKeys = await Promise.all([\n\t\tawait mnemonicToPrivateKey(mnemonic, privateKeyInfo.salt, { hash: 'SHA-256', iterations: 600000 }),\n\t\tawait mnemonicToPrivateKey(mnemonic, privateKeyInfo.salt, { hash: 'SHA-1', iterations: 1024 }),\n\t\tawait mnemonicToPrivateKey(mnemonic, privateKeyInfo.salt, { hash: 'SHA-1', iterations: 600000 }),\n\t])\n\n\tfor (const mnemonicPrivateKey of mnemonicPrivateKeys) {\n\t\ttry {\n\t\t\tconst rawPrivateKey = await decryptWithAES(\n\t\t\t\tprivateKeyInfo.encryptedPrivateKey,\n\t\t\t\tmnemonicPrivateKey,\n\t\t\t\t{ iv: privateKeyInfo.iv, tagLength: 128 },\n\t\t\t)\n\n\t\t\tconst pemKey = atob(bufferToString(new Uint8Array(rawPrivateKey)))\n\t\t\treturn loadRSAPrivateKey(pemToBuffer(pemKey))\n\t\t} catch {\n\t\t}\n\t}\n\n\tthrow new Error('Failed to decrypt private key')\n}\n\nasync function mnemonicToPrivateKey(mnemonic: string, salt: Uint8Array, params: Partial): Promise {\n\tconst keyMaterial = await crypto.subtle.importKey(\n\t\t'raw',\n\t\tnew TextEncoder().encode(mnemonic.replaceAll(' ', '')),\n\t\t{ name: 'PBKDF2' },\n\t\tfalse,\n\t\t['deriveKey'],\n\t)\n\n\treturn await crypto.subtle.deriveKey(\n\t\t{\n\t\t\tname: 'PBKDF2',\n\t\t\tsalt,\n\t\t\t...params,\n\t\t},\n\t\tkeyMaterial,\n\t\t{ name: 'AES-GCM', length: 256 },\n\t\ttrue,\n\t\t['decrypt', 'encrypt'],\n\t)\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable jsdoc/require-jsdoc */\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport type { PrivateKeyInfo } from '../models.ts'\nimport { base64ToBuffer, pemToBuffer } from './bufferUtils.ts'\nimport { loadServerPublicKey } from './crypto.ts'\n\n// API: https://github.com/nextcloud/end_to_end_encryption/blob/master/doc/api.md\n\nconst API_ROOT = 'apps/end_to_end_encryption/api/v2'\nconst Url = {\n\tPrivateKey: API_ROOT + '/private-key',\n\tMetadata: API_ROOT + '/meta-data/{fileId}',\n\tServerKey: API_ROOT + '/server-key',\n}\n\nexport async function getPrivateKey(): Promise {\n\tconst response = await axios.get>(\n\t\tgenerateOcsUrl(Url.PrivateKey),\n\t\t{ headers: { 'X-E2EE-SUPPORTED': 'true' } },\n\t)\n\tconst encryptedPrivateKeyInfo = response.data.ocs.data['private-key']\n\tconst [encryptedPrivateKey, iv, salt] = encryptedPrivateKeyInfo.split('|')\n\treturn {\n\t\tencryptedPrivateKey: base64ToBuffer(encryptedPrivateKey),\n\t\tiv: base64ToBuffer(iv),\n\t\tsalt: base64ToBuffer(salt),\n\t}\n}\n\nexport async function getServerPublicKey(): Promise {\n\tconst response = await axios.get>(\n\t\tgenerateOcsUrl(Url.ServerKey),\n\t\t{ headers: { 'X-E2EE-SUPPORTED': 'true' } },\n\t)\n\n\treturn await response.data.ocs.data['public-key']\n}\n","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"AlertCircleOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon alert-circle-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst AlertCircle = __component__.exports;\nexport {\n AlertCircle as A\n};\n","import '../assets/NcInputField-CUsdr7lV.css';\nimport NcButton from \"../Components/NcButton.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-CMooMQt0.mjs\";\nimport { A as AlertCircle } from \"./AlertCircleOutline-DBxbepLy.mjs\";\nimport { C as Check } from \"./Check-BkThHPH7.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcInputField\",\n components: {\n NcButton,\n AlertCircle,\n Check\n },\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n * @deprecated\n */\n value: {\n type: [String, Number],\n default: void 0\n },\n /**\n * The value of the input field\n * If type is 'number' and a number is passed as value than the type of `update:modelValue` will also be 'number'\n */\n modelValue: {\n type: [String, Number],\n default: void 0\n },\n /**\n * The type of the input element\n */\n type: {\n type: String,\n default: \"text\",\n validator: (value) => [\n \"text\",\n \"password\",\n \"email\",\n \"tel\",\n \"url\",\n \"search\",\n \"number\"\n ].includes(value)\n },\n /**\n * The input label, always provide one for accessibility purposes.\n * This will also be used as a placeholder unless the placeholder\n * prop is populated with a different string.\n *\n * Note: If the background color is not `--color-main-background` consider using an external label instead (see `labelOutside`).\n */\n label: {\n type: String,\n default: void 0\n },\n /**\n * Pass in true if you want to use an external label. This is useful\n * if you need a label that looks different from the one provided by\n * this component\n */\n labelOutside: {\n type: Boolean,\n default: false\n },\n /**\n * The placeholder of the input. This defaults as the string that's\n * passed into the label prop. In order to remove the placeholder,\n * pass in an empty string.\n */\n placeholder: {\n type: String,\n default: void 0\n },\n /**\n * Controls whether to display the trailing button.\n */\n showTrailingButton: {\n type: Boolean,\n default: false\n },\n /**\n * Label of the trailing button\n *\n * Required when showTrailingButton is set\n */\n trailingButtonLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Toggles the success state of the component. Adds a checkmark icon.\n * this cannot be used together with canClear.\n */\n success: {\n type: Boolean,\n default: false\n },\n /**\n * Toggles the error state of the component. Adds an error icon.\n * this cannot be used together with canClear.\n */\n error: {\n type: Boolean,\n default: false\n },\n /**\n * Additional helper text message\n *\n * This will be displayed beneath the input field. In case the field is\n * also marked as having an error, the text will be displayed in red.\n */\n helperText: {\n type: String,\n default: \"\"\n },\n /**\n * Disable the input field\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Specifies whether the input should have a pill form.\n * By default, input has rounded corners.\n */\n pill: {\n type: Boolean,\n default: false\n },\n /**\n * Class to add to the input field.\n * Necessary to use NcInputField in the NcActionInput component.\n */\n inputClass: {\n type: [Object, String],\n default: \"\"\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"trailing-button-click\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\", true);\n return {\n model\n };\n },\n computed: {\n computedId() {\n return this.$attrs.id && this.$attrs.id !== \"\" ? this.$attrs.id : this.inputName;\n },\n inputName() {\n return \"input\" + GenRandomId();\n },\n hasLeadingIcon() {\n return this.$slots.default;\n },\n hasTrailingIcon() {\n return this.success;\n },\n hasPlaceholder() {\n return this.placeholder !== \"\" && this.placeholder !== void 0;\n },\n computedPlaceholder() {\n return this.hasPlaceholder ? this.placeholder : this.label;\n },\n isValidLabel() {\n const isValidLabel = this.label || this.labelOutside;\n if (!isValidLabel) {\n console.warn(\"You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\");\n }\n return isValidLabel;\n },\n ariaDescribedby() {\n const ariaDescribedby = [];\n if (this.helperText.length > 0) {\n ariaDescribedby.push(`${this.inputName}-helper-text`);\n }\n if (this.$attrs[\"aria-describedby\"]) {\n ariaDescribedby.push(this.$attrs[\"aria-describedby\"]);\n }\n return ariaDescribedby.join(\" \") || null;\n }\n },\n methods: {\n /**\n * Focus the input element\n *\n * @public\n */\n focus() {\n this.$refs.input.focus();\n },\n /**\n * Select all the text in the input\n *\n * @public\n */\n select() {\n this.$refs.input.select();\n },\n handleInput(event) {\n const newValue = this.type === \"number\" && typeof this.model === \"number\" ? parseFloat(event.target.value, 10) : event.target.value;\n this.model = newValue;\n },\n handleTrailingButtonClick(event) {\n this.$emit(\"trailing-button-click\", event);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"input-field\", class: {\n \"input-field--disabled\": _vm.disabled,\n \"input-field--label-outside\": _vm.labelOutside || !_vm.isValidLabel,\n \"input-field--leading-icon\": _vm.hasLeadingIcon,\n \"input-field--trailing-icon\": _vm.showTrailingButton || _vm.hasTrailingIcon,\n \"input-field--pill\": _vm.pill\n } }, [_c(\"div\", { staticClass: \"input-field__main-wrapper\" }, [_c(\"input\", _vm._g(_vm._b({ ref: \"input\", staticClass: \"input-field__input\", class: [\n _vm.inputClass,\n {\n \"input-field__input--success\": _vm.success,\n \"input-field__input--error\": _vm.error\n }\n ], attrs: { \"id\": _vm.computedId, \"type\": _vm.type, \"disabled\": _vm.disabled, \"placeholder\": _vm.computedPlaceholder, \"aria-describedby\": _vm.ariaDescribedby, \"aria-live\": \"polite\" }, domProps: { \"value\": _vm.model?.toString() }, on: { \"input\": _vm.handleInput } }, \"input\", _vm.$attrs, false), _vm.$listeners)), !_vm.labelOutside && _vm.isValidLabel ? _c(\"label\", { staticClass: \"input-field__label\", attrs: { \"for\": _vm.computedId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e(), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.hasLeadingIcon, expression: \"hasLeadingIcon\" }], staticClass: \"input-field__icon input-field__icon--leading\" }, [_vm._t(\"default\")], 2), _vm.showTrailingButton ? _c(\"NcButton\", { staticClass: \"input-field__trailing-button\", attrs: { \"type\": \"tertiary-no-background\", \"aria-label\": _vm.trailingButtonLabel, \"disabled\": _vm.disabled }, on: { \"click\": _vm.handleTrailingButtonClick }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"trailing-button-icon\")];\n }, proxy: true }], null, true) }) : _vm.success || _vm.error ? _c(\"div\", { staticClass: \"input-field__icon input-field__icon--trailing\" }, [_vm.success ? _c(\"Check\", { staticStyle: { \"color\": \"var(--color-success-text)\" }, attrs: { \"size\": 20 } }) : _vm.error ? _c(\"AlertCircle\", { staticStyle: { \"color\": \"var(--color-error-text)\" }, attrs: { \"size\": 20 } }) : _vm._e()], 1) : _vm._e()], 1), _vm.helperText.length > 0 ? _c(\"p\", { staticClass: \"input-field__helper-text-message\", class: {\n \"input-field__helper-text-message--error\": _vm.error,\n \"input-field__helper-text-message--success\": _vm.success\n }, attrs: { \"id\": `${_vm.inputName}-helper-text` } }, [_vm.success ? _c(\"Check\", { staticClass: \"input-field__helper-text-message__icon\", attrs: { \"size\": 18 } }) : _vm.error ? _c(\"AlertCircle\", { staticClass: \"input-field__helper-text-message__icon\", attrs: { \"size\": 18 } }) : _vm._e(), _vm._v(\" \" + _vm._s(_vm.helperText) + \" \")], 1) : _vm._e()]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"e4fac465\"\n);\nconst NcInputField = __component__.exports;\nexport {\n NcInputField as N\n};\n","import { N as NcInputField } from \"./NcInputField-ixTTHy3h.mjs\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport { A as ArrowRight } from \"./ArrowRight-CY2b9hgN.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { r as register, d as t47, e as t16, a as t } from \"./_l10n-C6OUA0Ge.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nconst _sfc_main$1 = {\n name: \"UndoVariantIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon undo-variant-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst Undo = __component__$1.exports;\nregister(t16, t47);\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props));\nconst _sfc_main = {\n name: \"NcTextField\",\n components: {\n NcInputField,\n Close,\n ArrowRight,\n Undo\n },\n // Allow forwarding all attributes\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {},\n // Reuse all the props from NcInputField for better typing and documentation\n ...NcInputField.props,\n /**\n * The `aria-label` to set on the trailing button\n * If no explicit value is set it will default to the one matching the `trailingButtonIcon`:\n * @default 'Clear text'|'Save changes'|'Undo changes'\n */\n trailingButtonLabel: {\n type: String,\n default: \"\"\n },\n // Custom props\n /**\n * Specifies which material design icon should be used for the trailing\n * button.\n * @type {'close'|'arrowRight'|'undo'}\n */\n trailingButtonIcon: {\n type: String,\n default: \"close\",\n validator: (value) => [\n \"close\",\n \"arrowRight\",\n \"undo\"\n ].includes(value)\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model\n };\n },\n computed: {\n propsAndAttrsToForward() {\n const predefinedLabels = {\n undo: t(\"Undo changes\"),\n close: t(\"Clear text\"),\n arrowRight: t(\"Save changes\")\n };\n return {\n // Proxy all the HTML attributes\n ...this.$attrs,\n // Proxy original NcInputField's props\n ...Object.fromEntries(\n Object.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key))\n ),\n // Adjust aria-label for predefined trailing buttons\n trailingButtonLabel: this.trailingButtonLabel || predefinedLabels[this.trailingButtonIcon]\n };\n }\n },\n methods: {\n /**\n * Focus the input element\n *\n * @public\n */\n focus() {\n this.$refs.inputField.focus();\n },\n /**\n * Select all the text in the input\n *\n * @public\n */\n select() {\n this.$refs.inputField.select();\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcInputField\", _vm._g(_vm._b({ ref: \"inputField\", scopedSlots: _vm._u([_vm.type !== \"search\" ? { key: \"trailing-button-icon\", fn: function() {\n return [_vm.trailingButtonIcon === \"close\" ? _c(\"Close\", { attrs: { \"size\": 20 } }) : _vm.trailingButtonIcon === \"arrowRight\" ? _c(\"ArrowRight\", { attrs: { \"size\": 20 } }) : _vm.trailingButtonIcon === \"undo\" ? _c(\"Undo\", { attrs: { \"size\": 20 } }) : _vm._e()];\n }, proxy: true } : null], null, true) }, \"NcInputField\", _vm.propsAndAttrsToForward, false), _vm.$listeners), [_vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcTextField = __component__.exports;\nexport {\n NcTextField as N\n};\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nimport { spawnDialog } from '@nextcloud/dialogs'\nimport '@nextcloud/dialogs/style.css'\n\nimport MnemonicPromptDialog from '../components/MnemonicPromptDialog.vue'\n\nexport async function promptUserForMnemonic(): Promise {\n\tconst promiseWithResolvers = Promise.withResolvers()\n\n\tspawnDialog(\n\t\tMnemonicPromptDialog,\n\t\tundefined,\n\t\t(mnemonic) => {\n\t\t\tif (mnemonic !== undefined) {\n\t\t\t\tpromiseWithResolvers.resolve(mnemonic as string)\n\t\t\t} else {\n\t\t\t\tpromiseWithResolvers.reject()\n\t\t\t}\n\t\t},\n\t)\n\n\treturn promiseWithResolvers.promise\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Metadata, MetadataInfo } from '../models'\nimport logger from './logger.ts'\nimport { base64ToBuffer } from './bufferUtils.ts'\nimport { decryptWithAES, decryptWithRSA, exportAESKey, loadAESPrivateKey, sha256Hash } from './crypto.ts'\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nexport async function decryptMetadataInfo(metadata: Metadata, metadataPrivateKey: CryptoKey): Promise {\n\tlogger.debug('Decrypting metadata info', { metadata })\n\n\tconst [encryptedMetadata, iv] = metadata.metadata.ciphertext.split('|')\n\n\tconst compressedMetadataInfo = await decryptWithAES(\n\t\tbase64ToBuffer(encryptedMetadata),\n\t\tmetadataPrivateKey,\n\t\t{ iv: base64ToBuffer(iv) },\n\t)\n\n\tconst metadataInfo = JSON.parse(await unzipBuffer(compressedMetadataInfo)) as MetadataInfo\n\n\tvalidateKeyChecksums(metadataInfo, metadata)\n\tawait validateMetadataKeyChecksum(metadataInfo, metadataPrivateKey)\n\n\treturn metadataInfo\n}\n\nfunction validateKeyChecksums(metadataInfo: MetadataInfo, metadata: Metadata): void {\n\tif (metadataInfo.keyChecksums?.length !== metadata.users?.length) {\n\t\tthrow new Error('Key checksums length does not match users length')\n\t}\n}\n\nasync function validateMetadataKeyChecksum(metadataInfo: MetadataInfo, metadataPrivateKey: CryptoKey): Promise {\n\tif (metadataInfo.keyChecksums === undefined) {\n\t\treturn\n\t}\n\n\tconst privateKeyBuffer = await exportAESKey(metadataPrivateKey)\n\tconst privateKeyHash = await sha256Hash(privateKeyBuffer)\n\n\tif (!metadataInfo.keyChecksums.includes(privateKeyHash)) {\n\t\tthrow new Error('Key checksum is not in keyChecksums')\n\t}\n}\n\nasync function unzipBuffer(buffer: ArrayBuffer): Promise {\n\tconst stream = new ReadableStream({\n\t\tstart(controller) {\n\t\t\tcontroller.enqueue(new Uint8Array(buffer))\n\t\t\tcontroller.close()\n\t\t},\n\t})\n\n\tconst decompressedStream = stream.pipeThrough(new DecompressionStream('gzip'))\n\treturn await new Response(decompressedStream).text()\n}\n\nexport async function getMetadataPrivateKey(metadata: Metadata, userId: string, privateKey: CryptoKey): Promise {\n\tlogger.debug('Getting metadata private key', { metadata, userId })\n\n\tconst userInfo = metadata.users?.find(user => user.userId === userId)\n\n\tif (!userInfo) {\n\t\tthrow new Error('User not found in metadata')\n\t}\n\n\tconst encryptedMetadataPrivateKey = base64ToBuffer(userInfo.encryptedMetadataKey)\n\tconst rawMetadataPrivateKey = await decryptWithRSA(encryptedMetadataPrivateKey, privateKey)\n\treturn await loadAESPrivateKey(new Uint8Array(rawMetadataPrivateKey))\n}\n","/* eslint-disable jsdoc/require-jsdoc */\n/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Metadata, RootMetadata } from '../models'\nimport { validateCertificateSignature, validateCMSSignature } from './crypto.ts'\nimport { base64ToBuffer, stringToBuffer } from './bufferUtils.ts'\n\nexport async function validateMetadataSignature(metadata: Metadata, signature: string, rootMetadata: RootMetadata): Promise {\n\tconst signedData = JSON.stringify(metadata, (key, value) => {\n\t\tif (key === 'filedrop') {\n\t\t\treturn undefined\n\t\t}\n\t\treturn value\n\t})\n\n\tconst verificationResult = await validateCMSSignature(\n\t\tstringToBuffer(btoa(signedData)),\n\t\tbase64ToBuffer(signature),\n\t\trootMetadata.users,\n\t)\n\n\tif (!verificationResult) {\n\t\tthrow new Error('Metadata signature verification failed')\n\t}\n\n\treturn verificationResult\n}\n\nexport async function validateUserCertificates(metadata: RootMetadata, serverPublicKeyPEM: string): Promise {\n\tconst verifications = metadata.users.map(async ({ userId, certificate }) => {\n\t\tconst result = await validateCertificateSignature(certificate, serverPublicKeyPEM)\n\n\t\tif (!result) {\n\t\t\tthrow new Error(`Certificate verification failed for user ${userId}`)\n\t\t}\n\n\t\treturn result\n\t})\n\n\treturn await Promise.all(verifications)\n}\n","/* eslint-disable jsdoc/require-jsdoc */\n/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { dirname } from 'path'\nimport type { WebDAVClient } from 'webdav'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getClient, getDefaultPropfind } from '@nextcloud/files/dav'\n\nimport { isRootMetadata, type Metadata, type MetadataInfo, type RootMetadata } from '../models.ts'\nimport { decryptPrivateKey } from './privateKeyUtils'\nimport { getPrivateKey, getServerPublicKey } from './api.ts'\nimport { promptUserForMnemonic } from './mnemonicDialogs.ts'\nimport { decryptMetadataInfo, getMetadataPrivateKey } from './metadataUtils.ts'\nimport logger from './logger.ts'\nimport { validateMetadataSignature, validateUserCertificates } from './security.ts'\n\nconst davClient = getClient() as WebDAVClient\n\nexport const state = {\n\t_userPrivateKey: undefined as CryptoKey | undefined,\n\t_serverPublicKey: undefined as string | undefined,\n\t_metadataCache: {} as Record,\n\n\tasync getUserPrivateKey(): Promise {\n\t\tthis._userPrivateKey ??= await decryptPrivateKey(await getPrivateKey(), await promptUserForMnemonic())\n\t\treturn this._userPrivateKey\n\t},\n\n\tasync getServerPublicKeyPEM(): Promise {\n\t\tthis._serverPublicKey ??= await getServerPublicKey()\n\t\treturn this._serverPublicKey\n\t},\n\n\tasync getMetadata(path: string): Promise {\n\t\tif (this._metadataCache[path]) {\n\t\t\tlogger.debug('Found metadata in cache', { path, state })\n\t\t\treturn this._metadataCache[path]\n\t\t}\n\n\t\t// The PROPFIND will be intercepted by the WebDAV proxy, and the metadata will be saved in the cache.\n\t\t// Hence, we can directly return the content of the cache.\n\t\tlogger.debug('Fetching PROPFIND for metadata', { path, state })\n\t\tawait davClient.stat(decodeURI(path).replace('remote.php/dav/', ''), { details: true, data: getDefaultPropfind() })\n\n\t\tif (this._metadataCache[path]) {\n\t\t\tlogger.debug('Found metadata in cache after PROPFIND', { path, state })\n\t\t\treturn this._metadataCache[path]\n\t\t}\n\n\t\tthrow new Error(`Could not find metadata for ${path}`)\n\t},\n\n\tasync setMetadata(path: string, rawMetadata: string, metadataSignature: string): Promise {\n\t\tconst metadata = JSON.parse(rawMetadata) as Metadata\n\n\t\tif (isRootMetadata(metadata)) {\n\t\t\tawait validateMetadataSignature(metadata, metadataSignature, metadata)\n\t\t\tawait validateUserCertificates(metadata, await this.getServerPublicKeyPEM())\n\t\t} else {\n\t\t\tawait validateMetadataSignature(metadata, metadataSignature, await this.getRootMetadata(dirname(path)))\n\t\t}\n\n\t\tthis._metadataCache[path] = metadata\n\t\tlogger.debug('Added metadata in cache', { path, state })\n\t},\n\n\tasync getMetadataInfo(path: string): Promise {\n\t\tconst metadata = await this.getMetadata(path)\n\t\tconst rootMetadata = await this.getRootMetadata(path)\n\n\t\tconst currentUser = getCurrentUser()\n\t\tif (currentUser === null) {\n\t\t\tthrow new Error('No user logged in')\n\t\t}\n\n\t\treturn decryptMetadataInfo(\n\t\t\tmetadata,\n\t\t\tawait getMetadataPrivateKey(rootMetadata, currentUser.uid, await state.getUserPrivateKey()),\n\t\t)\n\t},\n\n\tasync getRootMetadata(path: string): Promise {\n\t\tconst cachedRootMetadata = Object.entries(state._metadataCache)\n\t\t\t.filter(([metadataPath]) => path.startsWith(metadataPath))\n\t\t\t.map(([, metadata]) => metadata)\n\t\t\t.find(metadata => isRootMetadata(metadata))\n\n\t\tif (cachedRootMetadata) {\n\t\t\tlogger.debug('Found root metadata in cache', { path, state })\n\t\t\treturn cachedRootMetadata\n\t\t}\n\n\t\tlogger.debug('Looking for root metadata', { path, state })\n\t\twhile (path !== '/') {\n\t\t\tconst metadata = await state.getMetadata(path)\n\n\t\t\tif (isRootMetadata(metadata)) {\n\t\t\t\tlogger.debug('Fetched root metadata', { path, state })\n\t\t\t\treturn metadata\n\t\t\t}\n\n\t\t\tpath = dirname(path)\n\t\t}\n\n\t\tthrow new Error(`Found no root metadata for ${path}`)\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nimport { type DAVResult, parseStat, parseXML } from 'webdav'\nimport { XMLBuilder } from 'fast-xml-parser'\nimport { basename, dirname } from 'path'\n\nimport { state } from './state.ts'\nimport { isRootMetadata, type FileEncryptionInfo, type MetadataInfo } from '../models'\nimport logger from './logger.ts'\nimport { decryptWithAES, loadAESPrivateKey } from './crypto.ts'\nimport { base64ToBuffer } from './bufferUtils.ts'\n\nlet originalFetch: typeof window.fetch\n\nexport function setupWebDavDecryptionProxy() {\n\toriginalFetch = window.fetch\n\tlogger.debug('Setting up WebDAV decryption proxy')\n\n\twindow.fetch = async (input: RequestInfo | URL, config: RequestInit = {}): Promise => {\n\t\tlet request = new Request(input, config)\n\n\t\tif (!(request.url.includes('/remote.php/dav/files/') && (request.method === 'GET' || request.method === 'PROPFIND'))) {\n\t\t\treturn originalFetch(request)\n\t\t}\n\n\t\tlogger.debug(`Proxying ${request.method} ${request.url}`, { request })\n\n\t\tconst headers = new Headers(request.headers)\n\t\theaders.set('X-E2EE-SUPPORTED', 'true')\n\t\trequest = new Request(request, { headers })\n\n\t\tswitch (request.method) {\n\t\tcase 'PROPFIND':\n\t\t\treturn handlePropFind(request)\n\t\tcase 'GET':\n\t\tdefault:\n\t\t\treturn handleGet(request)\n\t\t}\n\t}\n}\n\nasync function handleGet(request: Request): Promise {\n\tconst path = new URL(request.url).pathname\n\tconst responsePromise = originalFetch(request)\n\n\ttry {\n\t\t// TODO: Optimize, this will make a propfind request for every GET request even when not encrypted.\n\t\tconst metadataInfo = await state.getMetadataInfo(dirname(path))\n\n\t\tconst fileInfo = metadataInfo.files[basename(request.url)]\n\t\tif (fileInfo === undefined) {\n\t\t\tlogger.debug('Could not find file in metadata', { path, metadataInfo })\n\t\t\tthrow new Error('Could not find file in metadata')\n\t\t}\n\n\t\treturn await decryptFile(await responsePromise, fileInfo)\n\t} catch (error) {\n\t\treturn await responsePromise\n\t}\n}\n\nasync function handlePropFind(request: Request) {\n\tlogger.debug('Fetching raw PROPFIND', { request })\n\tconst response = await originalFetch(request)\n\tconst path = new URL(request.url).pathname\n\tconst body = await response.text()\n\tconst xml = await parseXML(body)\n\tconst stat = parseStat(xml, path, true)\n\n\tif (stat.props?.['e2ee-is-encrypted'] !== 1) {\n\t\tlogger.debug('Node is not e2ee', { xml })\n\t\treturn new Response(body, response)\n\t}\n\n\tif (stat.type === 'directory') {\n\t\tconst rawMetadata = stat.props['e2ee-metadata'] as string|undefined\n\t\tconst metadataSignature = stat.props['e2ee-metadata-signature'] as string|undefined\n\t\tif (rawMetadata !== undefined && metadataSignature !== undefined) {\n\t\t\tawait state.setMetadata(\n\t\t\t\tpath,\n\t\t\t\trawMetadata,\n\t\t\t\tmetadataSignature,\n\t\t\t)\n\t\t}\n\n\t\tconst metadata = await state.getMetadata(path)\n\t\tconst metadataInfo = await state.getMetadataInfo(path)\n\n\t\tif (isRootMetadata(metadata)) {\n\t\t\treplacePlaceholdersInPropfind(xml, path, metadataInfo)\n\t\t} else {\n\t\t\tconst parentMetadataInfo = await state.getMetadataInfo(dirname(path))\n\t\t\treplacePlaceholdersInPropfind(xml, path, metadataInfo, parentMetadataInfo)\n\t\t}\n\t} else if (stat.type === 'file') {\n\t\tconst parentMetadataInfo = await state.getMetadataInfo(dirname(path))\n\n\t\tif (parentMetadataInfo === undefined) {\n\t\t\tlogger.debug('Cannot find metadata for parent folder', { path })\n\t\t\treturn new Response(body, response)\n\t\t}\n\n\t\treplacePlaceholdersInPropfind(xml, path, undefined, parentMetadataInfo)\n\t}\n\n\treturn new Response(new XMLBuilder().build(xml), response)\n}\n\nexport function replacePlaceholdersInPropfind(xml: DAVResult, path: string, decryptedMetadata?: MetadataInfo, decryptedParentMetadata?: MetadataInfo): void {\n\tlogger.debug('Updating PROPFIND info', { path, decryptedMetadata, decryptedParentMetadata, xml })\n\n\txml.multistatus.response.forEach((childNode) => {\n\t\tif (childNode.propstat === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\tconst relevantMetadataInfo = childNode.href === path ? decryptedParentMetadata : decryptedMetadata\n\n\t\tconst identifier = childNode.propstat.prop.displayname\n\t\tlet name = identifier\n\n\t\tif (relevantMetadataInfo !== undefined) {\n\t\t\tif (relevantMetadataInfo.files[identifier]) {\n\t\t\t\tname = relevantMetadataInfo.files[identifier].filename\n\t\t\t\tchildNode.propstat.prop.getcontenttype = relevantMetadataInfo.files[identifier].mimetype\n\t\t\t} else if (relevantMetadataInfo.folders[identifier]) {\n\t\t\t\tname = relevantMetadataInfo.folders[identifier]\n\t\t\t\tchildNode.propstat.prop.getcontenttype = 'httpd/unix-directory'\n\t\t\t}\n\t\t}\n\n\t\tchildNode.propstat.prop.displayname = name\n\t\t// TODO: Enable more feature by keeping permissions\n\t\tchildNode.propstat.prop.permissions = (childNode.propstat.prop.permissions as string).replace(/(R)|(D)|(N)|(V)|(W)|(CK)/g, '')\n\t})\n}\n\nexport async function decryptFile(response: Response, fileEncryptionInfo: FileEncryptionInfo): Promise {\n\tlogger.debug('Decrypting encrypted file', { response, fileEncryptionInfo })\n\tconst decryptedFileContent = await decryptWithAES(\n\t\tnew Uint8Array(await response.arrayBuffer()),\n\t\tawait loadAESPrivateKey(base64ToBuffer(fileEncryptionInfo.key)),\n\t\t{ iv: base64ToBuffer(fileEncryptionInfo.nonce) },\n\t)\n\n\tconst headers = new Headers(response.headers)\n\theaders.set('Content-Type', fileEncryptionInfo.mimetype)\n\n\treturn new Response(decryptedFileContent, { ...response, headers })\n}\n","export default \"\"","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport type { Node } from '@nextcloud/files'\nimport type { ShareAttribute } from './sharing.ts'\n\nimport { Permission } from '@nextcloud/files'\n\n/**\n * Check permissions on the node if it can be downloaded\n * @param node The node to check\n * @return True if downloadable, false otherwise\n */\nexport function isDownloadable(node: Node): boolean {\n\tif ((node.permissions & Permission.READ) === 0) {\n\t\treturn false\n\t}\n\n\t// If the mount type is a share, ensure it got download permissions.\n\tif (node.attributes['share-attributes']) {\n\t\tconst shareAttributes = JSON.parse(node.attributes['share-attributes'] || '[]') as Array\n\t\tconst downloadAttribute = shareAttributes.find(({ scope, key }: ShareAttribute) => scope === 'permissions' && key === 'download')\n\t\tif (downloadAttribute !== undefined) {\n\t\t\treturn downloadAttribute.value === true\n\t\t}\n\t}\n\n\treturn true\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nimport ArrowDownSvg from '@mdi/svg/svg/arrow-down.svg?raw'\n\nimport { t } from '@nextcloud/l10n'\nimport { FileAction, Node, FileType, DefaultType } from '@nextcloud/files'\n\nimport { isDownloadable } from './permissions.ts'\n\nasync function downloadNodes([file]: Node[]) {\n\t// Decryption happens in the proxy.\n\tconst response = await fetch(file.encodedSource)\n\tconst decryptedFileContent = await response.arrayBuffer()\n\tconst blob = new Blob([decryptedFileContent], { type: file.mime })\n\n\tconst link = document.createElement('a')\n\tlink.href = window.URL.createObjectURL(blob)\n\tlink.download = file.displayname\n\tlink.click()\n}\n\nexport default new FileAction({\n\tid: 'download_unencrypted',\n\tdefault: DefaultType.DEFAULT,\n\n\tdisplayName: () => t('files', 'Download unencrypted'),\n\ticonSvgInline: () => ArrowDownSvg,\n\n\tenabled(nodes: Node[]) {\n\t\tif (nodes.length !== 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tif (nodes.some(node => node.attributes['e2ee-is-encrypted'] !== 1)) {\n\t\t\treturn false\n\t\t}\n\n\t\t// We can only download dav ressource\n\t\tif (nodes.some(node => !node.isDavRessource)) {\n\t\t\treturn false\n\t\t}\n\n\t\t// We can only download files\n\t\tif (nodes.some(node => node.type !== FileType.File)) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn nodes.every(isDownloadable)\n\t},\n\n\tasync exec(node: Node) {\n\t\tdownloadNodes([node])\n\t\treturn null\n\t},\n\n\torder: 30,\n})\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/* eslint-disable jsdoc/require-jsdoc */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { registerFileAction, getFileActions, Node, View } from '@nextcloud/files'\nimport { registerDavProperty } from '@nextcloud/files/dav'\n\nimport { setupWebDavDecryptionProxy } from './services/webDavProxy.ts'\nimport downloadUnencryptedAction from './services/downloadUnencryptedAction.ts'\nimport logger from './services/logger.ts'\n\nconst userConfig = loadState('end_to_end_encryption', 'userConfig', { e2eeInBrowserEnabled: false })\n\nif (userConfig.e2eeInBrowserEnabled) {\n\tsetupWebDavDecryptionProxy()\n\tregisterDavProperty('nc:e2ee-is-encrypted', { nc: 'http://nextcloud.org/ns' })\n\tregisterDavProperty('nc:e2ee-metadata', { nc: 'http://nextcloud.org/ns' })\n\tregisterDavProperty('nc:e2ee-metadata-signature', { nc: 'http://nextcloud.org/ns' })\n\tregisterFileAction(downloadUnencryptedAction)\n\tdisableFileAction('download')\n\tdisableFileAction('move-copy')\n}\n\nfunction disableFileAction(actionId: string) {\n\tlogger.debug(`Inhibiting ${actionId} actions for e2ee files`)\n\tconst actions = getFileActions()\n\n\tconst action = actions.find(action => action.id === actionId) as unknown as { _action: { enabled: (nodes: Node[], view: View) => boolean } }\n\tconst originalEnabled = action._action.enabled\n\n\taction._action.enabled = (nodes: Node[], view: View) => {\n\t\tif (nodes.some(node => node.attributes['e2ee-is-encrypted'] === 1)) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn originalEnabled(nodes, view)\n\t}\n}\n"],"names":["_defineProperty","obj","key","value","_classPrivateFieldInitSpec","privateMap","_checkPrivateRedeclaration","privateCollection","_classPrivateFieldGet","receiver","descriptor","_classExtractFieldDescriptor","_classApplyDescriptorGet","_classPrivateFieldSet","_classApplyDescriptorSet","action","toStringTag","_internals","_promise","CancelablePromiseInternal","_ref","executor","internals","defaultInternals","promise","resolve","reject","onCancel","onfulfilled","onrejected","makeCancelable","createCallback","onfinally","runWhenCanceled","callback","callbacks","err","CancelablePromise","iterable","makeAllCancelable","cancelable","reason","isCancelablePromise","onResult","arg","result","resolvable","t","e","o","n","i","r","s","a","u","c","l","global","d","m","g","y","v","h","b","w","p","f","x","N","P","A","O","E","T","j","S","$","C","I","k","process","en","F","oe","ne","re","Xt","ie","R","L","_","M","U","D","B","W","V","z","G","q","H","X","Z","Y","K","et","J","Q","tt","nt","rt","ot","it","st","at","ut","ct","lt","ht","pt","ft","dt","gt","mt","yt","vt","__privateAdd","_lt_instances","__publicField","#t","#e","#n","#r","#o","#i","#s","#a","#u","#c","#l","__privateSet","__privateGet","_a","_b","_c","#p","__privateMethod","#h","#f","#d","_lt_static","_lt","bt","Gt","wt","xt","Nt","Pt","At","Ot","Et","Tt","jt","St","$t","Ct","It","kt","Rt","Ut","Lt","Ft","_t","Mt","Dt","define_process_env_default","Bt","Wt","Vt","zt","qt","Ht","Zt","Yt","Kt","Jt","Qt","te","ee","se","ae","ue","ce","le","fe","me","de","ge","pe","ye","__spreadProps","__spreadValues","he","ve","be","we","xe","Ne","Pe","Ae","Oe","Ee","Te","je","Ie","Se","$e","Ce","ke","Re","Le","_e","Me","Ue","Fe","De","Be","We","Ve","ze","Ge","qe","He","Xe","Ze","Je","Ye","Ke","Qe","tn","an","un","cn","ln","isPublicShare","loadState","getSharingToken","logger","getLoggerBuilder","Permission","Permission2","FileType","FileType2","defaultDavProperties","defaultDavNamespaces","registerDavProperty","prop","namespace","namespaces","search","ns","getDavProperties","getDavNameSpaces","getDefaultPropfind","getRootPath","getCurrentUser","getRemoteURL","url","generateRemoteUrl","defaultRemoteURL","getClient","remoteURL","headers","client","createClient","setHeaders","token","onRequestTokenUpdate","getRequestToken","getPatcher","options","headers2","DefaultType","DefaultType2","FileAction","registerFileAction","getFileActions","util$3","exports","nameStartChar","nameChar","nameRegexp","regexName","getAllMatches","string","regex","matches","match","allmatches","len","index","isName","target","a2","arrayMode","keys","i2","debug$1","args","debug_1","SEMVER_SPEC_VERSION","MAX_LENGTH$1","MAX_SAFE_INTEGER$1","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","constants","re$1","module","MAX_SAFE_COMPONENT_LENGTH2","MAX_SAFE_BUILD_LENGTH2","MAX_LENGTH2","debug2","re2","safeRe","src","t3","LETTERDASHNUMBER","safeRegexReplacements","makeSafeRegex","max","createToken","name","isGlobal","safe","util","require$$0","defaultOptions","validator","xmlData","tags","tagFound","reachedRoot","readPI","tagStartPos","readCommentAndCDATA","closingTag","tagName","validateTagName","msg","getErrorObject","getLineNumberForPosition","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","otg","openPos","afterAmp","validateAmpersand","isWhiteSpace","char","start","tagname","angleBracketsCount","doubleQuote","singleQuote","startChar","tagClosed","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","validateNumberAmpersand","count","code","message","lineNumber","lines","val","jPath","attrs","buildOptions","OptionsBuilder","XmlNode","node","xmlNode","readDocType","entities","hasBody","comment","exp","isEntity","entityName","readEntityExp","validateEntityName","isElement","isAttlist","isNotation","isComment","DocTypeReader","hexRegex","numRegex","consider","toNumber","str","trimmedStr","sign","leadingZeros","numTrimmedByZeros","trimZeros","eNotation","num","numStr","strnum","getIgnoreAttributesFn","ignoreAttributes","pattern","require$$1","require$$2","require$$3","require$$4","OrderedObjParser$1","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","replaceEntitiesValue","readStopNodeData","saveTextToParentTag","addChild","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","newval","parseValue","prefix","attrsRegx","oldVal","aName","newVal","attrCollection","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","lastTagName","propIndex","tagData","readTagExp","childNode","endIndex","tagExp","rawTagName","attrExpPresent","lastTag","tagContent","entity","stopNodes","currentTagName","allNodesExp","stopNodePath","stopNodeExp","tagExpWithClosingIndex","closingChar","attrBoundary","ch","errMsg","closingIndex","removeNSPrefix","separatorIndex","startIndex","openTagCount","shouldParse","OrderedObjParser_1","OrderedObjParser","prettify","compress","arr","text","compressedObj","tagObj","property","propName","newJpath","isLeaf","isLeafTag","assignAttributes","attrMap","jpath","atrrName","textNodeName","propCount","node2json","XMLParser$1","validationOption","orderedObjParser","orderedResult","XMLParser_1","XMLParser","EOL","toXml","jArray","indentation","arrToStr","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","attr","attrVal","textValue","orderedJs2Xml","buildFromOrderedJs","Builder","isAttribute","processTextOrObjNode","indentate","jObj","level","ajPath","arrLen","listTagVal","listTagAttr","item","Ks","object","tagEndExp","piClosingChar","closeTag","json2xml","XMLBuilder","fxp","isRootMetadata","metadata","getLogger","user","ByteStream","parameters","array","stringLength","length","hexString","hexMap","temp","end","size","buffer","view","stream","initialSize","streamViewLength","subarrayView","start_","length_","backward_","backward","patternLength","patternArray","equal","equalStart","patterns","position","valid","patternFound","currentLength","firstIn","firstNotIn","leftPattern","rightPattern","currentPositionLeft","leftPatterns","rightPatterns","inputLeftPatterns","inputRightPatterns","searchPattern","replacePattern","findAllResult","output","element","patternDifference","changedBuffer","changedView","currentPosition","pow2_24","SeqStream","gap","number","changeLength","block","negative","isBytes","abytes","lengths","aexists","instance","checkFinished","aoutput","out","min","createView","rotr","word","shift","rotl","utf8ToBytes","toBytes","data","Hash","wrapConstructor","hashCons","hashC","tmp","setBigUint64","byteOffset","isLE","_32n","_u32_max","wh","wl","Chi","Maj","HashMD","blockLen","outputLen","padOffset","pos","take","dataView","oview","outLen","state","res","to","finished","destroyed","SHA1_IV","SHA1_W","offset","sha1","SHA1","SHA256_K","SHA256_IV","SHA256_W","W15","W2","s0","s1","sigma1","T1","T2","sha256","SHA256","U32_MASK64","fromBig","split","lst","Ah","Al","toBig","shrSH","_l","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","rotr32H","_h","rotr32L","rotlSH","rotlSL","rotlBH","rotlBL","add","Bh","Bl","add3L","Cl","add3H","low","Ch","add4L","Dl","add4H","Dh","add5L","El","add5H","Eh","u64","SHA512_Kh","SHA512_Kl","SHA512_W_H","SHA512_W_L","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","s0l","W2h","W2l","s1h","s1l","SUMl","SUMh","sigma1h","sigma1l","CHIh","CHIl","T1ll","T1h","T1l","sigma0h","sigma0l","MAJh","MAJl","All","SHA512","sha512","sha384","SHA384","EMPTY_BUFFER","EMPTY_STRING","ArgumentError","type","types","typeNames","ParameterError","params","fields","field","AsnError","asn1","asn","PkiObject","raw","asn1js.fromBER","memberName","encoding","schema","pvtsutils.Convert","stringPrep","inputString","isSpace","cutResult","TYPE$5","VALUE$6","AttributeTypeAndValue","pvutils.getParametersValue","names","asn1js.Sequence","asn1js.ObjectIdentifier","asn1js.Any","pvutils.clearProps","asn1js.compareSchema","_object","compareTo","stringBlockNames","asn1js.Utf8String","asn1js.BmpString","asn1js.UniversalString","asn1js.NumericString","asn1js.PrintableString","asn1js.TeletexString","asn1js.VideotexString","asn1js.IA5String","asn1js.GraphicString","asn1js.VisibleString","asn1js.GeneralString","asn1js.CharacterString","pvtsutils.BufferSourceConverter","isStringPair","thisName","value1","value2","TYPE_AND_VALUES","VALUE_BEFORE_DECODE","RDN","RelativeDistinguishedNames","memberValue","asn1js.Repeated","asn1js.Set","typeAndValue","pvutils.isEqualBuffer","TYPE$4","VALUE$5","builtInStandardAttributes","optional","asn1js.Constructed","asn1js.Choice","asn1js.Primitive","builtInDomainDefinedAttributes","extensionAttributes","GeneralName","valueBER","asnValue","asn1js.OctetString","ACCESS_METHOD","ACCESS_LOCATION","CLEAR_PROPS$1v","AccessDescription","SECONDS","MILLIS","MICROS","Accuracy","asn1js.Integer","intMillis","intMicros","outputArray","ALGORITHM_ID","ALGORITHM_PARAMS","ALGORITHM$2","PARAMS","CLEAR_PROPS$1u","AlgorithmIdentifier","algorithmIdentifier","ALT_NAMES","CLEAR_PROPS$1t","AltName","TYPE$3","VALUES$1","CLEAR_PROPS$1s","Attribute","NOT_BEFORE_TIME","NOT_AFTER_TIME","CLEAR_PROPS$1r","AttCertValidityPeriod","asn1js.GeneralizedTime","NAMES","GENERAL_NAMES","GeneralNames","id_SubjectDirectoryAttributes","id_SubjectKeyIdentifier","id_KeyUsage","id_PrivateKeyUsagePeriod","id_SubjectAltName","id_IssuerAltName","id_BasicConstraints","id_CRLNumber","id_BaseCRLNumber","id_CRLReason","id_InvalidityDate","id_IssuingDistributionPoint","id_CertificateIssuer","id_NameConstraints","id_CRLDistributionPoints","id_FreshestCRL","id_CertificatePolicies","id_AnyPolicy","id_MicrosoftAppPolicies","id_PolicyMappings","id_AuthorityKeyIdentifier","id_PolicyConstraints","id_ExtKeyUsage","id_InhibitAnyPolicy","id_AuthorityInfoAccess","id_SubjectInfoAccess","id_SignedCertificateTimestampList","id_MicrosoftCertTemplateV2","id_MicrosoftCaVersion","id_QCStatements","id_ContentType_Data","id_ContentType_SignedData","id_ContentType_EnvelopedData","id_ContentType_EncryptedData","id_eContentType_TSTInfo","id_CertBag_X509Certificate","id_CertBag_SDSICertificate","id_CertBag_AttributeCertificate","id_CRLBag_X509CRL","id_pkix","id_ad","id_PKIX_OCSP_Basic","KEY_IDENTIFIER$1","AUTHORITY_CERT_ISSUER","AUTHORITY_CERT_SERIAL_NUMBER","CLEAR_PROPS$1q","AuthorityKeyIdentifier","PATH_LENGTH_CONSTRAINT","CA","BasicConstraints","asn1js.Boolean","CERTIFICATE_INDEX","KEY_INDEX","CAVersion","valueView","tempValue","keyIndexBuffer","keyIndexView8","keyIndexView16","certificateIndexBuffer","certificateIndexView8","certificateIndexView16","certificateIndexView","keyIndexView","pvutils.utilConcatBuf","POLICY_QUALIFIER_ID","QUALIFIER","CLEAR_PROPS$1p","PolicyQualifierInfo","POLICY_IDENTIFIER","POLICY_QUALIFIERS","CLEAR_PROPS$1o","PolicyInformation","CERTIFICATE_POLICIES","CLEAR_PROPS$1n","CertificatePolicies","TEMPLATE_ID","TEMPLATE_MAJOR_VERSION","TEMPLATE_MINOR_VERSION","CLEAR_PROPS$1m","CertificateTemplate","DISTRIBUTION_POINT$1","DISTRIBUTION_POINT_NAMES$1","REASONS","CRL_ISSUER","CRL_ISSUER_NAMES","CLEAR_PROPS$1l","DistributionPoint","asn1js.BitString","internalValue","DISTRIBUTION_POINTS","CLEAR_PROPS$1k","CRLDistributionPoints","KEY_PURPOSES","CLEAR_PROPS$1j","ExtKeyUsage","ACCESS_DESCRIPTIONS","InfoAccess","DISTRIBUTION_POINT","DISTRIBUTION_POINT_NAMES","ONLY_CONTAINS_USER_CERTS","ONLY_CONTAINS_CA_CERTS","ONLY_SOME_REASON","INDIRECT_CRL","ONLY_CONTAINS_ATTRIBUTE_CERTS","CLEAR_PROPS$1i","IssuingDistributionPoint","BASE","MINIMUM","MAXIMUM","CLEAR_PROPS$1h","GeneralSubtree","valueMinimum","valueMaximum","PERMITTED_SUBTREES","EXCLUDED_SUBTREES","CLEAR_PROPS$1g","NameConstraints","REQUIRE_EXPLICIT_POLICY","INHIBIT_POLICY_MAPPING","CLEAR_PROPS$1f","PolicyConstraints","field1","ber1","int1","field2","ber2","int2","ISSUER_DOMAIN_POLICY","SUBJECT_DOMAIN_POLICY","CLEAR_PROPS$1e","PolicyMapping","MAPPINGS","CLEAR_PROPS$1d","PolicyMappings","NOT_BEFORE$1","NOT_AFTER$1","CLEAR_PROPS$1c","PrivateKeyUsagePeriod","localNotBefore","localNotAfter","ID","TYPE$2","VALUES","QC_STATEMENT_CLEAR_PROPS","QC_STATEMENTS_CLEAR_PROPS","QCStatement","asn1js.Null","QCStatements","ECNamedCurves","id","nameOrId","NAMED_CURVE$1","ECPublicKey","asn1js.RawData","schema1","BufferSourceConverter","namedCurve","coordinateLength","pvutils.toBase64","pvutils.arrayBufferToString","json","xConvertBuffer","pvutils.stringToArrayBuffer","pvutils.fromBase64","convertBufferView","yConvertBuffer","MODULUS$1","PUBLIC_EXPONENT$1","CLEAR_PROPS$1b","RSAPublicKey","pvutils.nearestPowerOf2","ALGORITHM$1","SUBJECT_PUBLIC_KEY","CLEAR_PROPS$1a","PublicKeyInfo","publicKeyASN1","parsedKey","jwk","publicKeyJWK","publicKey","crypto","getCrypto","exportedKey","VERSION$l","PRIVATE_KEY$1","NAMED_CURVE","PUBLIC_KEY$1","CLEAR_PROPS$19","ECPrivateKey","publicKeyData","curve","privateKeyJSON","publicKeyJSON","convertBuffer","PRIME","EXPONENT","COEFFICIENT$1","CLEAR_PROPS$18","OtherPrimeInfo","VERSION$k","MODULUS","PUBLIC_EXPONENT","PRIVATE_EXPONENT","PRIME1","PRIME2","EXPONENT1","EXPONENT2","COEFFICIENT","OTHER_PRIME_INFOS","CLEAR_PROPS$17","RSAPrivateKey","VERSION$j","PRIVATE_KEY_ALGORITHM","PRIVATE_KEY","ATTRIBUTES$5","PARSED_KEY","CLEAR_PROPS$16","PrivateKeyInfo","privateKeyASN1","CONTENT_TYPE$1","CONTENT_ENCRYPTION_ALGORITHM","ENCRYPTED_CONTENT","CLEAR_PROPS$15","PIECE_SIZE","EncryptedContentInfo","constrString","valueHex","pieceView","_array","_view","sequenceLengthBlock","encryptedValue","HASH_ALGORITHM$4","MASK_GEN_ALGORITHM$1","SALT_LENGTH","TRAILER_FIELD","CLEAR_PROPS$14","RSASSAPSSParams","SALT","ITERATION_COUNT","KEY_LENGTH","PRF","CLEAR_PROPS$13","PBKDF2Params","KEY_DERIVATION_FUNC","ENCRYPTION_SCHEME","CLEAR_PROPS$12","PBES2Params","AbstractCryptoEngine","makePKCS12B2Key","hashAlgorithm","keyLength","password","salt","iterationCount","md","originalPassword","decodedPassword","byte","passwordTransformed","passwordView","saltView","iRound","chunk","prepareAlgorithm","CryptoEngine","format","keyData","algorithm","extractable","keyUsages","_d","_f","alg","publicKeyInfo","privateKeyInfo","inputFormat","outputFormat","oid","safety","algorithmName","operation","signatureAlgorithm","contentEncryptionOID","pbkdf2OID","hmacOID","ivBuffer","ivView","saltBuffer","contentView","pbkdf2Params","pbkdfKey","derivedKey","encryptedData","pbes2Parameters","contentEncryptionAlgorithm","hmacHashAlgorithm","dataBuffer","hmacAlgorithm","pkcsKey","hmacKey","privateKey","paramsObject","hashAlgorithmOID","pssParameters","signature","createCMSECDSASignature","shaAlgorithm","algorithmId","algorithmObject","publicKeyAlgorithm","publicKeyAlgorithmParams","curveObject","publicKeyInfoBuffer","algorithmParamsChecked","signatureValue","createECDSASignatureFromCMS","hashAlgo","engine","isCryptoEngine","setEngine","cryptoArg","subtleArg","getEngine","_engine","signatureBuffer","rBuffer","rInteger","sBuffer","sInteger","cmsSignature","pointSize","rValueView","sValueView","kdfWithCounter","hashFunction","zBuffer","Counter","SharedInfo","counterBuffer","counterView","combinedBuffer","kdf","Zbuffer","keydatalen","hashLength","maxCounter","quotient","incomingResult","currentCounter","found","newBuffer","newView","combinedView","VERSION$i","LOG_ID","EXTENSIONS$6","TIMESTAMP","HASH_ALGORITHM$3","SIGNATURE_ALGORITHM$8","SIGNATURE$7","NONE","MD5","SHA224","ANONYMOUS","RSA","DSA","ECDSA","SignedCertificateTimestamp","seqStream","bs.SeqStream","bs.ByteStream","blockLength","pvutils.utilFromBase","extensionsLength","signatureLength","signatureData","timeBuffer","timeView","baseArray","pvutils.utilToBase","_hashAlgorithm","_signatureAlgorithm","_signature","pvutils.bufferToHexCodes","logs","dataType","logId","publicKeyBase64","log","pki","TIMESTAMPS","SignedCertificateTimestampList","overallLength","timestampsData","timestamp","timestampStream","ATTRIBUTES$4","CLEAR_PROPS$11","SubjectDirectoryAttributes","ExtensionValueFactory","EXTN_ID","CRITICAL","EXTN_VALUE","PARSED_VALUE$5","CLEAR_PROPS$10","Extension","parsedValue","EXTENSIONS$5","CLEAR_PROPS$$","Extensions","ISSUER$5","SERIAL_NUMBER$6","ISSUER_UID","CLEAR_PROPS$_","IssuerSerial","VERSION$h","BASE_CERTIFICATE_ID$2","SUBJECT_NAME","ISSUER$4","SIGNATURE$6","SERIAL_NUMBER$5","ATTR_CERT_VALIDITY_PERIOD$1","ATTRIBUTES$3","ISSUER_UNIQUE_ID$2","EXTENSIONS$4","CLEAR_PROPS$Z","AttributeCertificateInfoV1","ACINFO$1","SIGNATURE_ALGORITHM$7","SIGNATURE_VALUE$4","CLEAR_PROPS$Y","AttributeCertificateV1","DIGESTED_OBJECT_TYPE","OTHER_OBJECT_TYPE_ID","DIGEST_ALGORITHM$2","OBJECT_DIGEST","CLEAR_PROPS$X","ObjectDigestInfo","asn1js.Enumerated","ISSUER_NAME","BASE_CERTIFICATE_ID$1","OBJECT_DIGEST_INFO$1","CLEAR_PROPS$W","V2Form","BASE_CERTIFICATE_ID","ENTITY_NAME","OBJECT_DIGEST_INFO","CLEAR_PROPS$V","Holder","VERSION$g","HOLDER","ISSUER$3","SIGNATURE$5","SERIAL_NUMBER$4","ATTR_CERT_VALIDITY_PERIOD","ATTRIBUTES$2","ISSUER_UNIQUE_ID$1","EXTENSIONS$3","CLEAR_PROPS$U","AttributeCertificateInfoV2","ACINFO","SIGNATURE_ALGORITHM$6","SIGNATURE_VALUE$3","CLEAR_PROPS$T","AttributeCertificateV2","CONTENT_TYPE","CONTENT","CLEAR_PROPS$S","ContentInfo","TYPE$1","VALUE$4","UTC_TIME_NAME","GENERAL_TIME_NAME","CLEAR_PROPS$R","TimeType","Time","asn1js.UTCTime","TBS$4","VERSION$f","SERIAL_NUMBER$3","SIGNATURE$4","ISSUER$2","NOT_BEFORE","NOT_AFTER","SUBJECT$1","SUBJECT_PUBLIC_KEY_INFO","ISSUER_UNIQUE_ID","SUBJECT_UNIQUE_ID","EXTENSIONS$2","SIGNATURE_ALGORITHM$5","SIGNATURE_VALUE$2","TBS_CERTIFICATE","TBS_CERTIFICATE_VERSION","TBS_CERTIFICATE_SERIAL_NUMBER","TBS_CERTIFICATE_SIGNATURE","TBS_CERTIFICATE_ISSUER","TBS_CERTIFICATE_NOT_BEFORE","TBS_CERTIFICATE_NOT_AFTER","TBS_CERTIFICATE_SUBJECT","TBS_CERTIFICATE_SUBJECT_PUBLIC_KEY","TBS_CERTIFICATE_ISSUER_UNIQUE_ID","TBS_CERTIFICATE_SUBJECT_UNIQUE_ID","TBS_CERTIFICATE_EXTENSIONS","CLEAR_PROPS$Q","tbsCertificate","Certificate","encodeFlag","tbsSchema","signatureParameters","issuerCertificate","subjectPublicKeyInfo","checkCA","cert","signerCert","isCA","extension","CERT_ID$1","CERT_VALUE","PARSED_VALUE$4","CLEAR_PROPS$P","CertBag","certValueHex","USER_CERTIFICATE","REVOCATION_DATE","CRL_ENTRY_EXTENSIONS","CLEAR_PROPS$O","RevokedCertificate","TBS$3","VERSION$e","SIGNATURE$3","ISSUER$1","THIS_UPDATE$1","NEXT_UPDATE$1","REVOKED_CERTIFICATES","CRL_EXTENSIONS","SIGNATURE_ALGORITHM$4","SIGNATURE_VALUE$1","TBS_CERT_LIST","TBS_CERT_LIST_VERSION","TBS_CERT_LIST_SIGNATURE","TBS_CERT_LIST_ISSUER","TBS_CERT_LIST_THIS_UPDATE","TBS_CERT_LIST_NEXT_UPDATE","TBS_CERT_LIST_REVOKED_CERTIFICATES","TBS_CERT_LIST_EXTENSIONS","CLEAR_PROPS$N","tbsCertList","WELL_KNOWN_EXTENSIONS","CertificateRevocationList","certificate","revokedCertificate","CRL_ID","CRL_VALUE","PARSED_VALUE$3","CLEAR_PROPS$M","CRLBag","VERSION$d","ENCRYPTED_CONTENT_INFO$1","UNPROTECTED_ATTRS$1","CLEAR_PROPS$L","EncryptedData","encryptParams","decryptParams","ENCRYPTION_ALGORITHM","ENCRYPTED_DATA","PARSED_VALUE$2","CLEAR_PROPS$K","PKCS8ShroudedKeyBag","decryptedData","cmsEncrypted","SECRET_TYPE_ID","SECRET_VALUE","CLEAR_PROPS$J","SecretBag","SafeBagValueFactory","SafeContents","BAG_ID","BAG_VALUE","BAG_ATTRIBUTES","CLEAR_PROPS$I","SafeBag","bagType","SAFE_BUGS","OTHER_CERT_FORMAT","OTHER_CERT","CLEAR_PROPS$H","OtherCertificateFormat","CERTIFICATES$1","CLEAR_PROPS$G","CertificateSet","initialTagNumber","elementSequence","OTHER_REV_INFO_FORMAT","OTHER_REV_INFO","CLEAR_PROPS$F","OtherRevocationInfoFormat","CRLS$3","OTHER_REVOCATION_INFOS","CLEAR_PROPS$E","RevocationInfoChoices","CERTS$3","CRLS$2","CLEAR_PROPS$D","OriginatorInfo","sequenceValue","ISSUER","SERIAL_NUMBER$2","CLEAR_PROPS$C","IssuerAndSerialNumber","VARIANT$3","VALUE$3","CLEAR_PROPS$B","RecipientIdentifier","VERSION$c","RID$1","KEY_ENCRYPTION_ALGORITHM$3","ENCRYPTED_KEY$3","RECIPIENT_CERTIFICATE$1","CLEAR_PROPS$A","KeyTransRecipientInfo","ALGORITHM","PUBLIC_KEY","CLEAR_PROPS$z","OriginatorPublicKey","VARIANT$2","VALUE$2","CLEAR_PROPS$y","OriginatorIdentifierOrKey","_schema","KEY_ATTR_ID","KEY_ATTR","CLEAR_PROPS$x","OtherKeyAttribute","SUBJECT_KEY_IDENTIFIER","DATE$1","OTHER$1","CLEAR_PROPS$w","RecipientKeyIdentifier","VARIANT$1","VALUE$1","CLEAR_PROPS$v","KeyAgreeRecipientIdentifier","RID","ENCRYPTED_KEY$2","CLEAR_PROPS$u","RecipientEncryptedKey","ENCRYPTED_KEYS","RECIPIENT_ENCRYPTED_KEYS","CLEAR_PROPS$t","RecipientEncryptedKeys","VERSION$b","ORIGINATOR","UKM","KEY_ENCRYPTION_ALGORITHM$2","RECIPIENT_ENCRYPTED_KEY","RECIPIENT_CERTIFICATE","RECIPIENT_PUBLIC_KEY","CLEAR_PROPS$s","KeyAgreeRecipientInfo","KEY_IDENTIFIER","DATE","OTHER","CLEAR_PROPS$r","KEKIdentifier","VERSION$a","KEK_ID","KEY_ENCRYPTION_ALGORITHM$1","ENCRYPTED_KEY$1","PER_DEFINED_KEK","CLEAR_PROPS$q","KEKRecipientInfo","VERSION$9","KEY_DERIVATION_ALGORITHM","KEY_ENCRYPTION_ALGORITHM","ENCRYPTED_KEY","PASSWORD","CLEAR_PROPS$p","PasswordRecipientinfo","ORI_TYPE","ORI_VALUE","CLEAR_PROPS$o","OtherRecipientInfo","VARIANT","VALUE","CLEAR_PROPS$n","RecipientInfo","blockSequence","HASH_ALGORITHM$2","MASK_GEN_ALGORITHM","P_SOURCE_ALGORITHM","CLEAR_PROPS$m","RSAESOAEPParams","KEY_INFO","ENTITY_U_INFO","SUPP_PUB_INFO","CLEAR_PROPS$l","ECCCMSSharedInfo","VERSION$8","ORIGINATOR_INFO","RECIPIENT_INFOS","ENCRYPTED_CONTENT_INFO","UNPROTECTED_ATTRS","CLEAR_PROPS$k","defaultEncryptionParams","curveLengthByName","EnvelopedData","variant","encryptionParameters","algorithmParams","hashOID","keyInfo","recipientIdentifier","preDefinedData","keyIdentifierBuffer","keyIdentifierView","kekOID","keyId","extraRecipientInfoParams","encryptedKey","aesKWoid","aesKW","ecdhOID","ukmBuffer","ukmView","recipientInfoParams","contentToEncrypt","sessionKey","encryptedContent","exportedSessionKey","SubKeyAgreeRecipientInfo","recipientInfo","recipientCurve","recipientPublicKey","recipientCurveLength","ecdhKeys","exportedECDHPublicKey","derivedBits","aesKWAlgorithm","kwAlgorithm","kwLength","kwLengthBuffer","kwLengthView","encodedInfo","ecdhAlgorithm","derivedKeyRaw","awsKW","wrappedKey","originator","SubKeyTransRecipientInfo","algorithmParameters","rsaOAEPParams","SubKEKRecipientInfo","kekAlgorithm","kekKey","SubPasswordRecipientinfo","derivationKey","iterations","recipientIndex","decryptionParameters","curveOID","ecdhPrivateKey","keyCrypto","ecdhPublicKey","sharedSecret","applyKDF","includeAlgorithmParams","keyInfoAlgorithm","kdfResult","importAesKwKey","aesKwKey","unwrapSessionKey","importedKey","pbkdf2Key","unwrappedKey","SAFE_CONTENTS","PARSED_VALUE$1","CONTENT_INFOS","AuthenticatedSafe","content","safeContent","errorTarget","authSafeContent","cmsEnveloped","envelopedData","recipientCertificate","recipientKey","decrypted","contentBuffer","currentParameters","encryptionAlgorithm","HASH_ALGORITHM$1","ISSUER_NAME_HASH","ISSUER_KEY_HASH","SERIAL_NUMBER$1","CLEAR_PROPS$j","CertID","certID","certificateID","hashIssuerName","issuerKeyBuffer","hashIssuerKey","CERT_ID","CERT_STATUS","THIS_UPDATE","NEXT_UPDATE","SINGLE_EXTENSIONS","CLEAR_PROPS$i","SingleResponse","TBS$2","VERSION$7","RESPONDER_ID","PRODUCED_AT","RESPONSES","RESPONSE_EXTENSIONS","RESPONSE_DATA","RESPONSE_DATA_VERSION","RESPONSE_DATA_RESPONDER_ID","RESPONSE_DATA_PRODUCED_AT","RESPONSE_DATA_RESPONSES","RESPONSE_DATA_RESPONSE_EXTENSIONS","CLEAR_PROPS$h","ResponseData","TRUSTED_CERTS","CERTS$2","CRLS$1","OCSPS$1","CHECK_DATE","FIND_ORIGIN","FIND_ISSUER","ChainValidationCode","ChainValidationError","isTrusted","trustedList","CertificateChainValidationEngine","validationEngine","localCert","trustedCert","keyIdentifier","authorityCertIssuer","authorityCertSerialNumber","checkCertificate","possibleIssuer","extensionFound","authorityCertSerialNumberEqual","intermediateCert","passedWhenNotRevValues","localCerts","buildPath","checkUnique","unique","findIssuerResult","buildPathResult","copy","findCRL","issuerCertificates","crls","crlsAndCertificates","crl","findOCSP","checkForCA","needToCheckCRL","mustBeCA","keyUsagePresent","cRLSign","basicCheck","path","checkDate","ocspResult","crlResult","leafCert","certificatePath","shortestLength","shortestIndex","compareDNSName","constraint","namePrepared","constraintPrepared","nameSplitted","constraintSplitted","nameLen","constrLen","compareRFC822Name","cs","compareUniformResourceIdentifier","compareIPAddress","nameView","constraintView","compareDirectoryName","nameStart","localResult","initialPolicySet","initialExplicitPolicy","initialPolicyMappingInhibit","initialInhibitPolicy","initialPermittedSubtreesSet","initialExcludedSubtreesSet","initialRequiredNameForms","explicitPolicyIndicator","policyMappingInhibitIndicator","inhibitAnyPolicyIndicator","pendingConstraints","explicitPolicyPending","policyMappingInhibitPending","inhibitAnyPolicyPending","permittedSubtrees","excludedSubtrees","requiredNameForms","pathDepth","allPolicies","policiesAndCerts","anyPolicyArray","ii","policyMappings","certPolicies","explicitPolicyStart","policyIndex","policyId","certArray","searchAnyPolicy","issuerDomainPolicyIndex","subjectDomainPolicyIndex","authConstrPolicies","anyPolicyFound","userConstrPolicies","policyResult","subjectAltNames","certPermittedSubtrees","certExcludedSubtrees","formFound","constrGroups","groupPermitted","valueExists","group","excluded","error","TBS_RESPONSE_DATA","SIGNATURE_ALGORITHM$3","SIGNATURE$2","CERTS$1","BASIC_OCSP_RESPONSE","BASIC_OCSP_RESPONSE_TBS_RESPONSE_DATA","BASIC_OCSP_RESPONSE_SIGNATURE_ALGORITHM","BASIC_OCSP_RESPONSE_SIGNATURE","BASIC_OCSP_RESPONSE_CERTS","CLEAR_PROPS$g","BasicOCSPResponse","comparisonResult","hashesObject","certIDs","response","signatureParams","certIndex","trustedCerts","hash","additionalCerts","caCert","TBS$1","VERSION$6","SUBJECT","SPKI","ATTRIBUTES$1","SIGNATURE_ALGORITHM$2","SIGNATURE_VALUE","CSR_INFO","CSR_INFO_VERSION","CSR_INFO_SUBJECT","CSR_INFO_SPKI","CSR_INFO_ATTRS","CLEAR_PROPS$f","CertificationRequestInfo","CertificationRequest","DIGEST_ALGORITHM$1","DIGEST","CLEAR_PROPS$e","DigestInfo","E_CONTENT_TYPE","E_CONTENT","CLEAR_PROPS$d","EncapsulatedContentInfo","viewHex","MAC","MAC_SALT","ITERATIONS","CLEAR_PROPS$c","MacData","HASH_ALGORITHM","HASHED_MESSAGE","CLEAR_PROPS$b","MessageImprint","hashedMessage","REQ_CERT","SINGLE_REQUEST_EXTENSIONS","CLEAR_PROPS$a","Request","TBS","VERSION$5","REQUESTOR_NAME","REQUEST_LIST","REQUEST_EXTENSIONS","TBS_REQUEST$1","TBS_REQUEST_VERSION","TBS_REQUEST_REQUESTOR_NAME","TBS_REQUEST_REQUESTS","TBS_REQUEST_REQUEST_EXTENSIONS","CLEAR_PROPS$9","TBSRequest","SIGNATURE_ALGORITHM$1","SIGNATURE$1","CERTS","Signature","TBS_REQUEST","OPTIONAL_SIGNATURE","CLEAR_PROPS$8","OCSPRequest","tbs","RESPONSE_TYPE","RESPONSE","CLEAR_PROPS$7","ResponseBytes","RESPONSE_STATUS","RESPONSE_BYTES","OCSPResponse","basicResponse","asn1Basic","TYPE","ATTRIBUTES","ENCODED_VALUE","CLEAR_PROPS$6","SignedAndUnsignedAttributes","encodedView","VERSION$4","SID","DIGEST_ALGORITHM","SIGNED_ATTRS","SIGNATURE_ALGORITHM","SIGNATURE","UNSIGNED_ATTRS","SIGNER_INFO","SIGNER_INFO_VERSION","SIGNER_INFO_SID","SIGNER_INFO_DIGEST_ALGORITHM","SIGNER_INFO_SIGNED_ATTRS","SIGNER_INFO_SIGNATURE_ALGORITHM","SIGNER_INFO_SIGNATURE","SIGNER_INFO_UNSIGNED_ATTRS","CLEAR_PROPS$5","SignerInfo","currentSid","VERSION$3","POLICY","MESSAGE_IMPRINT$1","SERIAL_NUMBER","GEN_TIME","ORDERING","NONCE$1","ACCURACY","TSA","EXTENSIONS$1","TST_INFO","TST_INFO_VERSION","TST_INFO_POLICY","TST_INFO_MESSAGE_IMPRINT","TST_INFO_SERIAL_NUMBER","TST_INFO_GEN_TIME","TST_INFO_ACCURACY","TST_INFO_ORDERING","TST_INFO_NONCE","TST_INFO_TSA","TST_INFO_EXTENSIONS","CLEAR_PROPS$4","TSTInfo","VERSION$2","DIGEST_ALGORITHMS","ENCAP_CONTENT_INFO","CERTIFICATES","CRLS","SIGNER_INFOS","OCSPS","SIGNED_DATA","SIGNED_DATA_VERSION","SIGNED_DATA_DIGEST_ALGORITHMS","SIGNED_DATA_ENCAP_CONTENT_INFO","SIGNED_DATA_CERTIFICATES","SIGNED_DATA_CRLS","SIGNED_DATA_SIGNER_INFOS","CLEAR_PROPS$3","SignedDataVerifyError","date","signatureVerified","signerCertificate","signerCertificateVerified","timestampSerial","SignedData","certificateSet","signerInfoSchema","certificateSetSchema","crlSchema","signerInfo","signer","checkChain","extendedMode","findOrigin","findIssuer","messageDigestValue","sid","digest","tstInfo","certs","chainParams","chainEngine","verificationResult","signerInfoHashAlgorithm","eContent","foundContentType","foundMessageDigest","attribute","messageDigest","verifyResult","signerIndex","VERSION$1","AUTH_SAFE","MAC_DATA","PARSED_VALUE","CLERA_PROPS","PFX","toBeSigned","cmsSigned","signedAttr","STATUS$1","STATUS_STRINGS","FAIL_INFO","CLEAR_PROPS$2","PKIStatus","PKIStatusInfo","_status","VERSION","MESSAGE_IMPRINT","REQ_POLICY","NONCE","CERT_REQ","EXTENSIONS","TIME_STAMP_REQ","TIME_STAMP_REQ_VERSION","TIME_STAMP_REQ_MESSAGE_IMPRINT","TIME_STAMP_REQ_POLICY","TIME_STAMP_REQ_NONCE","TIME_STAMP_REQ_CERT_REQ","TIME_STAMP_REQ_EXTENSIONS","CLEAR_PROPS$1","TimeStampReq","STATUS","TIME_STAMP_TOKEN","TIME_STAMP_RESP","TIME_STAMP_RESP_STATUS","TIME_STAMP_RESP_TOKEN","CLEAR_PROPS","TimeStampResp","verificationParameters","initCryptoEngine","engineName","nodeCrypto","bufferToString","stringToBuffer","bufferToHex","base64ToBuffer","base64Str","pemToBuffer","pem","pemContents","decryptWithAES","decryptWithRSA","loadAESPrivateKey","loadServerPublicKey","loadRSAPrivateKey","exportAESKey","sha256Hash","hashBuffer","validateCertificateSignature","publicKeyPEM","X509Certificate","getPatchedCrypto","validateCMSSignature","signedData","cmsBuffer","users","cmsContent","originalSignedData","signerUserId","userId","getPatchedCryptoEngine","CustomCryptoEngine","decryptPrivateKey","mnemonic","mnemonicPrivateKeys","mnemonicToPrivateKey","mnemonicPrivateKey","rawPrivateKey","pemKey","keyMaterial","API_ROOT","Url","getPrivateKey","encryptedPrivateKeyInfo","axios","generateOcsUrl","encryptedPrivateKey","iv","getServerPublicKey","_sfc_main","_sfc_render","_vm","$event","_sfc_staticRenderFns","__component__","normalizeComponent","AlertCircle","NcButton","Check","useModelMigration","GenRandomId","isValidLabel","ariaDescribedby","event","newValue","NcInputField","_sfc_main$1","_sfc_render$1","_sfc_staticRenderFns$1","__component__$1","Undo","register","t16","t47","NcInputFieldProps","Close","ArrowRight","predefinedLabels","NcTextField","dialogRef","ref","confirmToggle","isFormValid","computed","submit","emit","buttons","promptUserForMnemonic","promiseWithResolvers","spawnDialog","MnemonicPromptDialog","decryptMetadataInfo","metadataPrivateKey","encryptedMetadata","compressedMetadataInfo","metadataInfo","unzipBuffer","validateKeyChecksums","validateMetadataKeyChecksum","privateKeyBuffer","privateKeyHash","decompressedStream","controller","getMetadataPrivateKey","userInfo","encryptedMetadataPrivateKey","rawMetadataPrivateKey","validateMetadataSignature","rootMetadata","validateUserCertificates","serverPublicKeyPEM","verifications","davClient","rawMetadata","metadataSignature","dirname","currentUser","cachedRootMetadata","metadataPath","originalFetch","setupWebDavDecryptionProxy","input","config","request","handlePropFind","handleGet","responsePromise","fileInfo","basename","decryptFile","body","xml","parseXML","stat","parseStat","replacePlaceholdersInPropfind","parentMetadataInfo","decryptedMetadata","decryptedParentMetadata","relevantMetadataInfo","identifier","fileEncryptionInfo","decryptedFileContent","ArrowDownSvg","isDownloadable","downloadAttribute","scope","downloadNodes","file","blob","link","downloadUnencryptedAction","nodes","userConfig","disableFileAction","actionId","originalEnabled"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,29,34,35,36,43]} \ No newline at end of file