@metricinsights/pp-dev 0.11.0-beta.4 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/CHANGELOG.md +14 -0
- package/dist/cjs/cli.js +1 -1
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/{index-DGgPiX1I.js → index-PGyyLU5v.js} +2 -2
- package/dist/cjs/{index-DGgPiX1I.js.map → index-PGyyLU5v.js.map} +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/plugin-MI3iLFaG.js +2 -0
- package/dist/cjs/plugin-MI3iLFaG.js.map +1 -0
- package/dist/cjs/plugin.js +1 -1
- package/dist/esm/cli.js +1 -1
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/{index-DMOFygHY.js → index-BaGUuU8M.js} +2 -2
- package/dist/esm/{index-DMOFygHY.js.map → index-BaGUuU8M.js.map} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/plugin-B8BKv3mo.js +2 -0
- package/dist/esm/plugin-B8BKv3mo.js.map +1 -0
- package/dist/esm/plugin.js +1 -1
- package/dist/types/index.d.ts +62 -3
- package/package.json +1 -1
- package/dist/cjs/plugin-CqSS_2nh.js +0 -2
- package/dist/cjs/plugin-CqSS_2nh.js.map +0 -1
- package/dist/esm/plugin-qc60R-dL.js +0 -2
- package/dist/esm/plugin-qc60R-dL.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const e=require("http-proxy-middleware"),t=require("vite"),r=require("picocolors"),s=require("axios"),a=require("jsdom"),n=require("https"),i=require("memory-cache"),o=require("path"),c=require("fs"),l=require("url"),p=require("crypto"),d=require("process"),h=require("child_process"),u=require("console"),g=require("zlib"),f=require("express");var m="undefined"!=typeof document?document.currentScript:null;function w(e){const t=Object.create(null);if(e)for(const r in e)if("default"!==r){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}return t.default=e,Object.freeze(t)}const y=w(i),v=w(o),b=w(p),k=w(d),x=w(h),P=w(u),T=(e,t,r)=>{const s=new RegExp(`(!!)?(https?(:(\\\\)?/(\\\\)?/)${e})`,"gi");return r.replace(s,((e,...r)=>e.startsWith("!!")?r[1]:`http${r[2]}${t}`))},A=(e,t,r)=>{e.setHeader("location",t),e.statusCode=r,e.end()};const $=new Map,I="default",S=(e="info",r=I)=>{if($.has(r))return $.get(r);if(r===I){const s=t.createLogger(e);return $.set(r,s),s}const s=t.createLogger(e);return $.set(r,s),s},E=r.createColors(),L=function(){const e={personal:{placeholder:"API Token",caption:`You can get the API Token\n <a href="https://${host}/api-token" target="_blank" \n style="color: #007bff; text-decoration: none;">here</a>`,endpoint:"/@api/login"},regular:{placeholder:"Legacy Token",caption:`You can get the Legacy Token\n <a href="https://${host}/api/get_token" target="_blank" \n style="color: #007bff; text-decoration: none;">here</a>`,endpoint:"/@api/login"}};function t(t,r,s){const a=e[t];a&&(r.placeholder=a.placeholder,s.innerHTML=a.caption)}function r(e,t){t.textContent=e,t.classList.add("show")}function s(e){e.classList.remove("show")}function a(e,t,a,n){a.addEventListener("click",(async a=>{if(a.preventDefault(),s(n),!t.value.trim())return r(`${t.placeholder} is required`,n),void t.focus();const i=document.getElementById("token-type-switcher"),o=i?.querySelector(".token-type-option.active"),c=o?.dataset.value||"personal";await async function(e,t,s,a){try{s.classList.add("loading");const n=await fetch("/@api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:e,tokenType:t}),redirect:"follow"}),i=n.url&&new URL(n.url,window.location.origin);if(!i||i.pathname.startsWith("/login")||i.pathname.startsWith("/@api/"))try{const e=await n.json();r(`Login failed: ${e?.error||"Unknown error occurred"}`,a)}catch(e){r("Login failed: Unable to parse response",a)}else window.location.href=n.url}catch(e){r("Login failed: Network error. Please check your connection.",a)}finally{s.classList.remove("loading")}}(t.value.trim(),c,e,n)})),t.addEventListener("keydown",(e=>{"Enter"===e.key&&(e.preventDefault(),a.click())})),t.addEventListener("input",(()=>{s(n)}))}function n(e){const r=e.firstChild;if(!r)return;const s=r.lastChild?.cloneNode(!0);if(!s)return;s.innerHTML="";const n=s.cloneNode(!0);n.innerText="OR",n.setAttribute("role","separator"),n.setAttribute("aria-label","Alternative login method");const i=s.cloneNode(!0),o=document.createElement("div"),c=document.createElement("style");c.textContent="\n.helper-login-wrapper {\n font-family: Arial, sans-serif;\n color: #222;\n padding: 8px;\n background-color: #f8f9fa;\n border-radius: 8px;\n border: 1px solid #ddd;\n width: 100%;\n max-width: 400px;\n margin: 0 auto;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.helper-login-wrapper .title {\n font-weight: bold;\n font-size: 18px;\n margin-bottom: 12px;\n text-align: center;\n}\n\n.helper-login-wrapper .control {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.helper-login-wrapper .control input {\n border: 1px solid #ddd;\n border-radius: 4px;\n width: 100%;\n box-sizing: border-box;\n text-align: center;\n height: 26px;\n padding: 0 8px;\n font-size: 14px;\n}\n\n.helper-login-wrapper .control input:focus {\n outline: none;\n border-color: #007bff;\n box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);\n}\n\n.helper-login-wrapper .control .caption {\n font-size: 12px;\n color: #666;\n text-align: center;\n}\n\n.helper-login-wrapper .footer {\n margin-top: 16px;\n text-align: center;\n}\n\n.helper-login-wrapper .footer .btn.submit {\n background-color: #007bff;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n width: 100%;\n font-size: 14px;\n transition: background-color 0.3s;\n height: 26px;\n font-weight: 500;\n}\n\n.helper-login-wrapper .footer .btn.submit:hover {\n background-color: #0056b3;\n}\n\n.helper-login-wrapper .footer .btn.submit:disabled {\n background-color: #6c757d;\n cursor: not-allowed;\n}\n\n.helper-login-wrapper .token-type-switcher {\n display: flex;\n border: 1px solid #ccc;\n border-radius: 4px;\n overflow: hidden;\n margin-bottom: 12px;\n width: 100%;\n}\n\n.helper-login-wrapper .token-type-option {\n padding: 4px 8px;\n cursor: pointer;\n background-color: #f8f9fa;\n color: #666;\n font-size: 12px;\n text-align: center;\n transition: background-color 0.2s, color 0.2s;\n border-right: 1px solid #ccc;\n flex: 1;\n user-select: none;\n}\n\n.helper-login-wrapper .token-type-option:last-child {\n border-right: none;\n}\n\n.helper-login-wrapper .token-type-option.active {\n background-color: #007bff;\n color: white;\n font-weight: bold;\n}\n\n.helper-login-wrapper .token-type-option:not(.active):hover {\n background-color: #e9ecef;\n}\n\n.helper-login-wrapper .error-message {\n color: #dc3545;\n font-size: 12px;\n text-align: center;\n margin-top: 8px;\n display: none;\n}\n\n.helper-login-wrapper .error-message.show {\n display: block;\n}\n\n.helper-login-wrapper .loading {\n opacity: 0.6;\n pointer-events: none;\n}\n",document.head.appendChild(c),o.innerHTML=`\n<div class="helper-login-wrapper" role="form" aria-label="PP Dev Helper Login">\n <div class="title" role="heading" aria-level="2">PP Dev Helper</div>\n\n <div class="token-type-switcher" id="token-type-switcher" role="tablist" aria-label="Token type selection">\n <div class="token-type-option active" data-value="personal" role="tab" aria-selected="true" tabindex="0">\n API Token\n </div>\n <div class="token-type-option" data-value="regular" role="tab" aria-selected="false" tabindex="0">\n Legacy Token\n </div>\n </div>\n\n <div class="control">\n <input \n type="password" \n id="helper-token" \n placeholder="API Token"\n aria-label="Token input"\n aria-describedby="token-caption"\n >\n <span class="caption" id="token-caption">\n You can get the API Token\n <a href="https://${host}/api-token" target="_blank" style="color: #007bff; text-decoration: none;">here</a>\n </span>\n </div>\n\n <div class="error-message" id="error-message" role="alert" aria-live="polite"></div>\n\n <div class="footer">\n <button id="helper-token-submit" class="btn submit" type="button">\n Token Login\n </button>\n </div>\n</div>`,i.appendChild(o),r.appendChild(n),r.appendChild(i);const l=document.getElementById("token-type-switcher"),p=document.getElementById("helper-token"),d=document.getElementById("token-caption"),h=document.getElementById("helper-token-submit"),u=document.getElementById("error-message"),g=o.querySelector(".helper-login-wrapper");l&&p&&d&&h&&u&&g?(!function(e,r,s){const a=e.querySelectorAll(".token-type-option"),n=e=>{const n=e.dataset.value;a.forEach((e=>{e.classList.remove("active"),e.setAttribute("aria-selected","false"),e.setAttribute("tabindex","-1")})),e.classList.add("active"),e.setAttribute("aria-selected","true"),e.setAttribute("tabindex","0"),t(n,r,s)};a.forEach((e=>{e.addEventListener("click",(e=>{const t=e.currentTarget;n(t)})),e.addEventListener("keydown",(t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),n(e))}))}))}(l,p,d),a(g,p,h,u),t("personal",p,d)):console.error("Failed to find required form elements")}const i=new MutationObserver((e=>{for(const t of e)if("childList"===t.type){const e=document.querySelector("#mi-react-root form");if(e){i.disconnect(),n(e);break}}}));i.observe(document.body,{childList:!0,subtree:!0});const o=document.querySelector("#mi-react-root form");o&&(i.disconnect(),n(o))},R=/^(https?:\/\/)([^/]+)(\/.*)?$/i,C="X-PP-Proxy";function D(t){const{rewritePath:r=/^\/(?!pt).*/i,baseURL:s="",disableSSLValidation:a=!1,miAPI:n}=t;if(!s)throw new Error("Base url is required");const i=s.replace(R,"$2"),o=s.replace(R,"$1$2"),c=import("file-type"),l=S();return e.createProxyMiddleware({selfHandleResponse:!0,pathFilter:(e,s)=>!(t.proxyIgnore||[]).some((t=>"string"==typeof t?e.startsWith(t):"function"!=typeof t.test||t.test(e)))&&("string"==typeof r?e.startsWith(r):Array.isArray(r)?r.some((t=>e.startsWith(t))):"function"==typeof r.test&&r.test(e)),target:s,changeOrigin:!0,autoRewrite:!0,cookieDomainRewrite:{[i]:"localhost"},logger:{info:()=>{},log:()=>{},error:()=>{},warn:()=>{}},secure:!a,headers:{host:i,origin:o},on:{proxyReq(e,t,r){const a=t.headers.host,i=e.getHeader("referer");return l.info(`${E.blue("Proxies request:")} ${E.green(t.method)} ${t.url} -> ${E.green(e.method)} ${e.protocol}//${e.host}${e.path}`),a&&i&&"string"==typeof i&&e.setHeader("referer",i.replace(new RegExp(`https?://${a}`),s)),n.personalAccessToken&&e.setHeader("Authorization",`Bearer ${n.personalAccessToken}`),t.socket.on("close",(()=>{setTimeout((()=>{e.destroyed||e.destroy()}),200)})),e},proxyRes:(t,r,s)=>{if(t.headers["content-type"]?.includes("text/event-stream")||t.headers["transfer-encoding"]?.includes("chunked")&&"no"===t.headers["x-accel-buffering"]){l.info(`${E.blue("Start streaming for request:")} ${E.green(r.method)} ${r.url}`);const e=async(e,t,r)=>{r.setHeader(C,1),r.setHeaders(new Map(Object.entries(e.headers))),e.pipe(r)};return e(t,r,s)}const a=e.responseInterceptor((async(e,t,r,s)=>{s.setHeader(C,1);if(await(await c).fileTypeFromBuffer(e))return e;{let t=e.toString("utf8");try{const e=new URL(r.url??"",`http://${i}`);if(e.searchParams&&e.searchParams.has("proxyRedirect")){const e=function(){const e="pp-dev::redirectCount",t="pp-dev::lastRedirect";let r=+(localStorage.getItem(e)??0);localStorage.getItem(t);Number.isNaN(r)&&(r=0);let s=window.location.href;const a=function(){const n=new URLSearchParams(window.location.search);if(!n.has("proxyRedirect"))return console.debug("No proxyRedirect param. Cleaning up."),void localStorage.removeItem(e);s!==window.location.href?(s=window.location.href,setTimeout(a,r<3?3e3:5e3)):window.location.href=n.get("proxyRedirect"),localStorage.setItem(e,""+ ++r),localStorage.setItem(t,(new Date).toISOString())};setTimeout(a,3e3)};t+=`<script>(${e.toString()})()<\/script>`}e.pathname.startsWith("/login")&&(t+=`<script>const host = "${i}";\n(${L.toString()})()<\/script>`)}catch{}const s=r.headers.host??"";return((e,t,r)=>{const s=new RegExp(`${e.replace(/\\*\//gi,"\\\\/")}`,"gi"),a=new RegExp(`${e}`,"gi"),n=r.replace(s,t);return n===r?n.replace(a,t):n})("/auth/saml/login","/login",T(i,s,t))}}));return a(t,r,s)},error(e,t,r){const s=`Proxy error: "${e.message}" when trying to "${t.method} ${t.url}"\n\n${e.stack}`;l.error(s),r.writable&&r.writeHead(500,{"Content-Type":"text/plain"}),r.end(s)}}})}class O{axios;constructor(e){this.axios=e}async checkAuth(e){return this.axios.get("/data/page/index/auth/info",{headers:Object.assign({},e,{accept:"text/html"}),maxRedirects:0}).then((()=>!0)).catch((()=>!1))}}class F extends O{formdataModulePromise=import("formdata-node");constructor(e){super(e)}getDownloadUrl(e){return`/admin/page/downloadassets/id/${e}`}getDownloadTemplateUrl(e){return`/admin/pagetemplate/downloadassets/id/${e}`}getUploadUrl(e){return`/admin/page/uploadassets/id/${e}`}getUploadTemplateUrl(e){return`/admin/pagetemplate/uploadassets/id/${e}`}async downloadPageAssets(e,t){return this.axios.get(this.getDownloadUrl(e),{withCredentials:!0,headers:Object.assign({},t,{accept:"*/*"}),responseType:"arraybuffer"}).then((e=>e.data))}async uploadPageAssets(e,t,r){const s=new(await this.formdataModulePromise).FormData,{File:a}=await this.formdataModulePromise,n=new a([t],"file.zip",{type:"application/zip"});s.append("file",n);const i=this.getUploadUrl(e);return this.axios.post(i,s,{withCredentials:!0,headers:Object.assign({},r,{accept:"application/json","Content-Type":"multipart/form-data",Referer:this.axios.getUri({url:i})})}).then((e=>e.data))}async downloadTemplateAssets(e,t){return this.axios.get(this.getDownloadTemplateUrl(e),{withCredentials:!0,headers:Object.assign({},t,{accept:"*/*"}),responseType:"arraybuffer"}).then((e=>e.data))}async uploadTemplateAssets(e,t,r){const s=new(await this.formdataModulePromise).FormData,{File:a}=await this.formdataModulePromise,n=new a([t],"file.zip",{type:"application/zip"});s.append("file",n,"file.zip");const i=this.getUploadTemplateUrl(e);return this.axios.post(i,s,{withCredentials:!0,headers:Object.assign({},r,{accept:"application/json","Content-Type":"multipart/form-data",Referer:this.axios.getUri({url:i})})}).then((e=>e.data))}}class N extends F{getDownloadUrl(e){return`/api/page/id/${e}/asset/download`}getDownloadTemplateUrl(e){return`/api/page_template/id/${e}/asset/download`}getUploadUrl(e){return`/api/page/id/${e}/asset/upload`}getUploadTemplateUrl(e){return`/api/page_template/id/${e}/asset/upload`}}class U extends O{async getAll(e){return(await this.axios.get("/api/page",{withCredentials:!0,headers:Object.assign({},e,{Accept:"application/json","Content-Type":"application/json","Cache-Control":"no-cache",Pragma:"no-cache",Expires:"0"})})).data.pages}async get(e,t){return(await this.axios.get(`/api/page/id/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data.page}async getPageContent(e,t){return(await this.axios.get(`/p/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"text/html","content-type":"application/json"})})).data}async create(e,t){return(await this.axios.post("/api/page",e,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data.page}}class M extends O{async getAll(e,t){return(await this.axios.get("/api/page_template",{withCredentials:!0,headers:Object.assign({},t,{Accept:"application/json","Content-Type":"application/json","Cache-Control":"no-cache",Pragma:"no-cache",Expires:"0"}),params:{internal_name:e}})).data.page_templates}async get(e,t){return(await this.axios.get(`/api/page_template/id/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data.page_template}}function j(e){const t=e.response?.status||0,r=e.response?.data?.message||e.message||"Unknown error";switch(t){case 412:return r.toLowerCase().includes("session expired")?{status:t,message:r,code:"SESSION_EXPIRED",userFriendlyMessage:"Your session has expired",suggestions:["Refresh your token in the portal","Re-authenticate with the portal","Check if your token has been revoked","Ensure your token has the correct permissions"]}:{status:t,message:r,code:"AUTH_FAILED",userFriendlyMessage:"Authentication failed",suggestions:["Verify your token is correct","Check token permissions","Ensure the token hasn't expired","Try generating a new token"]};case 401:return{status:t,message:r,code:"UNAUTHORIZED",userFriendlyMessage:"Unauthorized access",suggestions:["Check if your token is valid","Verify you have the required permissions","Ensure the token hasn't been revoked","Try logging in again"]};case 403:return{status:t,message:r,code:"FORBIDDEN",userFriendlyMessage:"Access forbidden",suggestions:["Check your user permissions","Verify the portal page ID is correct","Ensure your token has the right scope","Contact your administrator"]};default:return{status:t,message:r,code:"UNKNOWN_ERROR",userFriendlyMessage:"An unexpected error occurred",suggestions:["Check your network connection","Verify the portal URL is correct","Try again in a few moments","Check the portal status"]}}}const B="[DEV PAGE. DO NOT DELETE]",H=new Map;class z{#e;#t;#r=null;#s;#a;#n;#i;#o;#c;#l;portalPageId;templateLess;assetsApi;pageApi;pageTemplateApi;logger;constructor(e,t){const{headers:r={},portalPageId:a,templateLess:i=!0,disableSSLValidation:o=!1,v7Features:c=!1,personalAccessToken:l}=t||{};this.#e=r,this.#a=[],this.#s="",this.#n=c,this.#i=l,this.#o=!1,this.#c=Promise.resolve(!1);const p=`${e}:${o}`;H.has(p)?this.#t=H.get(p):(o&&(s.defaults.httpsAgent=new n.Agent({rejectUnauthorized:!1})),this.#t=s.create({baseURL:e,headers:r,timeout:3e4,maxRedirects:5,httpAgent:new n.Agent({keepAlive:!0,maxSockets:10}),httpsAgent:new n.Agent({keepAlive:!0,maxSockets:10})}),H.set(p,this.#t)),this.portalPageId=a,this.templateLess=i,this.assetsApi=new(c?N:F)(this.#t),this.pageApi=new U(this.#t),this.pageTemplateApi=new M(this.#t),this.logger=S()}async isTemplateLoaded(){return this.#c}get isV710OrHigher(){return this.#o}#p(e){const t=Object.assign({},e,{host:void 0,referer:void 0});return Object.keys(t).forEach((e=>void 0===t[e]&&delete t[e])),this.#e=t,!t.authorization&&this.#i&&(t.authorization=`Bearer ${this.#i}`),t}get personalAccessToken(){return this.#i}set personalAccessToken(e){this.#i=e}updateHeaders(e){this.#p(e)}get localTemplateHTML(){return'<!DOCTYPE html>\n <html lang="en">\n <head>\n <meta charset="UTF-8" />\n <title>%%PAGE TITLE%%</title>\n <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>\n <meta name="theme-color" content="rgba(255, 255, 255, 1)"/>\n <link rel="shortcut icon" type="image/x-icon" sizes="any" href="/img/favicon/favicon.ico"/>\n <link rel="icon" type="image/png" sizes="16x16" href="/img/favicon/favicon-16x16.png"/>\n <link rel="icon" type="image/png" sizes="32x32" href="/img/favicon/favicon-32x32.png"/>\n <link rel="icon" type="image/png" sizes="48x48" href="/img/favicon/favicon-48x48.png"/>\n <meta name="msapplication-config" content="/auth/browserconfig.xml"/>\n <link rel="apple-touch-icon" sizes="180x180" href="/img/favicon/apple-touch-icon.png"/>\n <link rel="manifest" href="/auth/site.webmanifest"/>\n <link rel="manifest" href="/auth/manifest.json"/>\n <link rel="stylesheet" type="text/css" href="/auth/theme-vars.css"/>\n <link rel="icon" type="image/svg+xml" href="/favicon.ico" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <script src="/js/libs/underscore-latest.min.js" charset="utf-8"><\/script>\n <script src="/js/jquery/jquery-latest.min.js" charset="utf-8"><\/script>\n <script src="/js/application/rating_component.js" charset="utf-8"><\/script>\n </head>\n <body>\n <div id="mi-react-root"></div>\n <script src="/auth/info.js"><\/script>\n <script src="/js/main.js" defer><\/script>\n <link rel="stylesheet" href="/css/main.css" />\n </body>\n </html>'}async getPageTemplate(e){if(await this.#c||this.#r||(this.#c=new Promise((e=>{this.#l=e}))),this.#r)return Promise.resolve(this.#r);if(void 0===this.templateLess&&(this.templateLess=!1),this.#n){const t=await this.pageApi.get(this.portalPageId,this.#p(e)).then((e=>(this.logger.info(E.green("Page fetched")),e))).catch((async t=>{throw this.#l(!1),await this.pageApi.checkAuth(this.#p(e))?(this.logger.error(E.red(`Error fetching page data: ${t.message}\n${t.stack}`)),new Error("The current user does not have access to this page. Check your configuration to ensure the portalPageId is correct.")):t}));return void 0!==t.template_id&&(this.#o=!0),this.#r=this.localTemplateHTML,this.#r=this.#r.replace(/%%PAGE TITLE%%/g,t.name||"Local template"),this.logger.info(E.green("Local page template fetched")),this.#l(!0),this.#r}let t=(await this.pageApi.getAll(this.#p(e)).then((e=>(this.logger.info(E.green("Page list fetched")),e))).catch((async t=>{throw this.#l(!1),await this.pageApi.checkAuth(this.#p(e))?(this.logger.error(E.red(`Error fetching page list: ${t.message}\n${t.stack}`)),new Error("Current user does not have access to page list")):t}))).find((e=>e.name===B));return t||(this.logger.warn(E.yellow("Creating dev page template...")),t=await this.pageApi.create({enabled:"Y",name:B,internal_name:"dev-page-template",visible_in_homepage:"Y"},this.#p(e)).then((e=>(this.logger.info(E.green("Dev page created")),e))).catch((e=>{throw this.logger.error(E.red(`Error creating dev page: ${e.message}`)),this.#l(!1),new Error(`Error when creating dev page.\n That can be caused by missing permissions or page with name "${B}" already exists`)}))),await this.pageApi.getPageContent(t.internal_name,this.#p(e)).then((e=>(this.#r=e,e))).then((e=>(this.#l(!0),this.logger.info(E.green("Page template fetched")),e))).catch((e=>{throw this.#l(!1),this.logger.error(E.red(`Error fetching page template: ${e.message}`)),new Error("Error fetching page template")}))}async getPageVariables(e,t){return this.#r=await this.getPageTemplate(t),this.portalPageId||(this.portalPageId=e,this.templateLess=!1),await this.pageApi.get(e,this.#p(t)).then((e=>{const{tags:t="[]",name:r,template:s}=e;if(s&&t){const e=JSON.parse(t);return this.#a=e,this.#s=r,e}return this.#a=[],this.#s=r,[]})).catch((t=>{if(this.logger.error(E.red(`Error fetching page variables: ${t.message}`)),404===t.response?.status)throw new Error(`Portal Page with id "${e}" not found on instance ${this.#t.getUri()}`);if(401===t.response?.status)throw new Error(`Current user does not have access to page with id "${e}" on instance ${this.#t.getUri()}`);throw t}))}async getPageInfo(e,t){this.portalPageId||(this.portalPageId=e);const r=this.#p(t),s=this.portalPageId;try{return this.#n?await this.#d(s,r):await this.#h(s,r)}catch(e){this.#u(e,s)}}async#d(e,t){const r=await this.pageApi.get(e,t);return this.logger.info(E.green("Page fetched")),void 0!==r.template_id&&(this.#o=!0),r}async#h(e,t){return await this.pageApi.get(e,t)}#u(e,t){if(this.#n&&e.message?.includes("access"))throw new Error("The current user does not have access to this page. Check your configuration to ensure the portalPageId is correct.");if(404===e.response?.status)throw new Error(`Portal Page with id "${t}" not found on instance ${this.#t.getUri()}`);throw 401===e.response?.status&&this.logger.error(E.red(`Current user does not have access to page with id "${t}" on instance ${this.#t.getUri()}`)),e}buildPage(e,t=!1){let r="string"==typeof e?e:e.toString("utf-8");for(const e of this.#a)r=r.replace(new RegExp(`\\[${e.name}\\]`,"g"),e.value);const s=new a.JSDOM(t?r:this.#r),n="%%PLACEHOLDER%%";if(!t){const e=s.window.document.createElement("div");e.innerHTML=n;const t=s.window.document.querySelector(".main-side");if(t){const r=t.querySelectorAll("script");r.length?t.insertBefore(e,r.item(r.length-1)):t.append(e)}else{const t=s.window.document.createElement("div");t.append(e),s.window.document.body.append(t)}const r=s.window.document.querySelector("head"),a=r.querySelector("title");a?a.text=this.#s:r.innerHTML+=`<title>${this.#s}</title>`}return s.serialize().replace(new RegExp(`<div>\\s*${n}\\s*<\\/div>`,"i"),r)}async getAssets(){if(this.portalPageId){if(this.templateLess)return await this.assetsApi.downloadPageAssets(this.portalPageId,this.#e);{const e=await this.pageApi.get(this.portalPageId,this.#e);if(this.#o){const t=await this.pageTemplateApi.get(e.template_id,this.#e);return await this.assetsApi.downloadTemplateAssets(t.id,this.#e)}if(e.template)return await this.assetsApi.downloadTemplateAssets(e.template,this.#e)}}}async updateAssets(e){if(this.portalPageId){if(this.templateLess)return await this.assetsApi.uploadPageAssets(this.portalPageId,e,this.#e);{const t=await this.pageApi.get(this.portalPageId,this.#e);if(this.#o){const r=await this.pageTemplateApi.get(t.template_id,this.#e);return await this.assetsApi.uploadTemplateAssets(r.id,e,this.#e)}if(t.template)return await this.assetsApi.uploadTemplateAssets(t.template,e,this.#e)}}}async validateCredentials(e){try{const t=e||this.#e;return await this.get("/api/user",t,!0),{isValid:!0}}catch(e){const t=j(e);return{isValid:!1,error:t.userFriendlyMessage,code:t.code}}}async get(e,t,r=!1){const s=r?t:Object.assign({},this.#p(this.#e),t);try{return await this.#t.get(e,{headers:s})}catch(e){if("UNKNOWN_ERROR"!==j(e).code){const t=j(e);throw this.logger.error(E.red(`API request failed: ${t.userFriendlyMessage}`)),function(e,t,r){const s=j(t),a=`[${r}] `;e.error(E.red(`${a}${s.userFriendlyMessage}`)),e.error(E.red(`Status: ${s.status} (${s.code})`)),e.error(E.red(`Details: ${s.message}`)),s.suggestions.length>0&&(e.info(E.yellow("Suggestions:")),s.suggestions.forEach(((t,r)=>{e.info(E.yellow(` ${r+1}. ${t}`))})))}(this.logger,e,"API Request"),e.response||(e.response={status:t.status,data:{message:t.message}}),e.tokenErrorInfo=t,e}throw e}}}class V{server;opts;eventMap;logger;constructor(e,t){this.server=e,this.opts=t||{},this.eventMap=new Map,this.eventMap.set("info-data:request",this.onInfoDataRequest.bind(this)),this.eventMap.set("template:sync",this.onTemplateSync.bind(this)),this.logger=S(),this.init()}init(){const{ws:e}=this.server;for(const[t,r]of this.eventMap)e.on(t,r)}onInfoDataRequest(){this.server.ws.send({type:"custom",event:"info-data:response",data:{}})}async onTemplateSync(){if(!this.opts.distService||!this.opts.miAPI)return this.server.ws.send("template:sync:response",{error:"Dist service or MiAPI is not defined"}),void this.logger.error(E.red("Dist service or MiAPI is not defined"));{const{distService:e,miAPI:t}=this.opts;if(this.server.config.clientInjectionPlugin?.v7Features){if(!t?.isV710OrHigher)return void this.server.ws.send("template:sync:response",{error:"This feature is available only for MI v7.1.0 or higher",config:{canSync:!1}});this.server.ws.send("client:config:update",{config:{canSync:!0}})}const r=await(t?.getAssets().catch((async e=>{if(s.isAxiosError(e)){if("SESSION_EXPIRED"===j(e).code){this.logger.info(E.yellow("Session expired - attempting to validate credentials"));try{const e=await(t?.validateCredentials());e&&!e.isValid?(this.logger.error(E.red(`Authentication error: ${e.error}`)),this.server.ws.send("template:sync:response",{error:e.error,code:e.code,refresh:!0})):(this.logger.info(E.yellow("Session expired")),this.server.ws.send("template:sync:response",{error:"Session expired",code:"SESSION_EXPIRED",refresh:!0}))}catch(e){this.logger.info(E.yellow("Session expired")),this.server.ws.send("template:sync:response",{error:"Session expired",code:"SESSION_EXPIRED",refresh:!0})}return e}if(e.cause instanceof Error&&("ECONNRESET"===e.cause.code||"ENOTFOUND"===e.cause.code))return this.logger.info(E.yellow("Server in maintenance mode, VPN connection is needed or no internet connection")),this.server.ws.send("template:sync:response",{error:"Server in maintenance mode, VPN connection is needed or no internet connection",code:"CONNECTION_ERROR"}),e}throw e})));if(r instanceof Error)return;const a=r?await(e?.saveBackupAndBuild(r).catch((e=>{if("Backup file is not a ZIP file"===e.message)return this.logger.error(E.red("Backup file is not a ZIP file")),e}))):await(e?.buildNewAssets());if(!(a&&a instanceof Buffer))return a instanceof Error?(this.server.ws.send("template:sync:response",{error:a.message}),void this.logger.error(E.red(a.message))):(this.server.ws.send("template:sync:response",{error:"Failed to build new assets"}),void this.logger.error(E.red("Failed to build new assets")));{const r=await(t?.updateAssets(a));if("OK"===r?.status){const t=e?.getBackupMeta(),{lastBackupName:r,lastBackupHash:s,lastBackupDate:a}=t||{lastBackupName:"",lastBackupHash:"",lastBackupDate:(new Date).toISOString()};this.server.ws.send("template:sync:response",{syncedAt:new Date(a),currentHash:s,backupFilename:r}),this.logger.info(E.green("Template synced"))}else this.server.ws.send("template:sync:response",{error:"Failed to update assets"}),this.logger.error(E.red("Failed to update assets"))}}}}const _=/\.(?:[a-z0-9]+)$/i,q=6e5,Z=104857600,W=1e3;class X extends y.Cache{totalSize=0;maxSize;maxItems;constructor(e,t){super(),this.maxSize=e,this.maxItems=t}put(e,t,r){const s=this.get(e);s&&(this.totalSize-=s.size);const a=super.put(e,t,r);return this.totalSize+=t.size,this.cleanup(),a}cleanup(){const e=this.keys();if(e.length>this.maxItems){const t=e.length-this.maxItems,r=e.sort(((e,t)=>{const r=this.get(e),s=this.get(t);return(r?.timestamp||0)-(s?.timestamp||0)}));for(let e=0;e<t;e++){const t=r[e],s=this.get(t);s&&(this.totalSize-=s.size,this.del(t))}}for(;this.totalSize>this.maxSize&&e.length>0;){const t=e.sort(((e,t)=>{const r=this.get(e),s=this.get(t);return(r?.timestamp||0)-(s?.timestamp||0)}))[0];if(t){const e=this.get(t);e&&(this.totalSize-=e.size,this.del(t))}}}getTotalSize(){return this.totalSize}getItemCount(){return this.keys().length}}const Y=new X(Z,W);function K(e){if(0===e.length)return Buffer.alloc(0);if(1===e.length)return e[0];const t=e.reduce(((e,t)=>e+t.length),0),r=Buffer.allocUnsafe(t);let s=0;for(const t of e)t.copy(r,s),s+=t.length;return r}function J(e){const{devServer:t,ttl:r=q,maxSize:s=Z,maxItems:a=W}=e,n=S();return s===Z&&a===W||(Y.maxSize=s,Y.maxItems=a),t.cache=Y,(e,t,s)=>{const a=e.originalUrl||e.url||"",i=function(e){const t=e.split("?")[0];return _.test(t)?t.includes("/auth/info.js")?"":e:""}(a);if(!i)return s();const o=Y.get(i);if(o)return n.info(`${E.blue("Proxies request:")} ${E.green(e.method)} ${a} -> ${E.blue("Cache")} ${i}`),function(e,t){try{for(const[r,s]of Object.entries(t))null!=s&&e.setHeader(r,s)}catch(e){console.warn("Failed to set some response headers:",e)}}(t,o.headers),t.write(o.content),void t.end();const c=t.end,l=t.write,p=[];t.write=function(e,r,s){if(!t.hasHeader(C))return l.call(this,e,r,s);if("string"==typeof e){const t=r||"utf8";p.push(Buffer.from(e,t))}else Buffer.isBuffer(e)?p.push(e):null!=e&&p.push(Buffer.from(String(e),"utf8"));return!0},t.end=function(e,s,a){if(!t.hasHeader(C))return c.call(this,e,s,a);if(null!=e)if("string"==typeof e){const t=s||"utf8";p.push(Buffer.from(e,t))}else Buffer.isBuffer(e)?p.push(e):p.push(Buffer.from(String(e),"utf8"));let o;try{o=K(p);const e=o.length;if(e>0&&e<10485760){const s={headers:t.getHeaders(),content:o,timestamp:Date.now(),size:e};Y.put(i,s,r),n.info(`${E.blue("[Cached]")} ${i} (${(e/1024).toFixed(1)}KB)`)}}catch(e){n.error(`Failed to cache response for ${i}: ${e}`),o=K(p)}const l=s||"utf8";return c.call(this,o,l,a)},s()}}const G="pageName",Q="date",ee=v.dirname("undefined"!=typeof __filename&&__filename||l.fileURLToPath("undefined"==typeof document?require("url").pathToFileURL(__filename).href:m&&"SCRIPT"===m.tagName.toUpperCase()&&m.src||new URL("plugin-MI3iLFaG.js",document.baseURI).href)),te=v.resolve(ee,"..",".."),re=v.resolve(te,"..",".."),se=v.resolve(re,".pp-dev-meta"),ae=v.resolve(se,"sync-service.meta.json");class ne{backupFolder;backupNameTemplate;dateFormat;pageName;currentMeta=null;distZipFolder;distZipFilename;logger;constructor(e,t){this.pageName=e;const{backupFolder:r=v.resolve(k.cwd(),"backups"),distZipFolder:s=v.resolve(k.cwd(),"dist-zip"),distZipFilename:a=`${this.pageName}.zip`,backupNameTemplate:n=`{${G}}-{${Q}}.zip`,dateFormat:i=e=>e.toISOString().replace(/:/g,"-").replace(/\..*$/,"")}=t||{};this.backupFolder=r,this.backupNameTemplate=n,this.dateFormat=i,this.distZipFolder=s,this.distZipFilename=a,this.syncMeta(),this.logger=S()}async checkMeta(){try{await c.promises.stat(se)}catch{await c.promises.mkdir(se)}try{await c.promises.stat(this.backupFolder)}catch{await c.promises.mkdir(this.backupFolder)}}async readMetaFile(){return await this.checkMeta(),await c.promises.readFile(ae,{encoding:"utf-8"}).catch((()=>"{}"))}async writeMetaFile(e){return await this.checkMeta(),await c.promises.writeFile(ae,JSON.stringify(e,null,2),{encoding:"utf-8"})}async syncMeta(){this.currentMeta?await this.writeMetaFile(this.currentMeta):this.currentMeta=JSON.parse(await this.readMetaFile())}async getLatestSavedBackup(){const{lastBackupName:e}=this.currentMeta;if(!e)return null;const t=v.resolve(this.backupFolder,e);try{return await c.promises.stat(t),t}catch{return null}}backupName(e,t=new Date){return this.backupNameTemplate.replace(`{${G}}`,e).replace(`{${Q}}`,this.dateFormat(t))}getBackupMeta(){return this.currentMeta}async saveBackup(e){if("PK"!==e.toString("utf-8").slice(0,4))throw new Error("Backup file is not a ZIP file");const t=b.createHash("md5").update(e).digest("hex");if(await this.getLatestSavedBackup()){const{lastBackupHash:e}=this.currentMeta;if(e===t)return}const r=new Date,s=this.backupName(this.pageName,r);return this.currentMeta.lastBackupName=s,this.currentMeta.lastBackupHash=t,this.currentMeta.lastBackupDate=r.toISOString(),await this.syncMeta(),await c.promises.writeFile(v.resolve(this.backupFolder,s),e).finally((()=>{this.logger.info(`Backup saved to ${s}`)}))}async buildNewAssets(){const e=new Promise(((e,t)=>{let r="";this.logger.info(E.cyan("[DistService] Build started"));const s=x.spawn("node",[v.resolve(te,"./bin/pp-dev.js"),"build"],{cwd:k.cwd(),env:Object.assign({},k.env,{NODE_ENV:"production"}),stdio:"inherit"});s.on("message",(e=>{r+=e})),s.on("close",(s=>{0===s?e(r):t(new Error(`build command exited with code ${s}`))})),s.on("error",(e=>{t(e)}))}));try{await e.finally((()=>{this.logger.info(E.cyan("[DistService] Build finished"))}));const t=v.resolve(k.cwd(),this.distZipFolder,this.distZipFilename);if(!await c.promises.stat(t))throw new Error(`File ${t} not found`);return await c.promises.readFile(t)}catch(e){throw P.log(e),e}}async saveBackupAndBuild(e){return await this.saveBackup(e),await this.buildNewAssets()}}function ie(e,t){return async(r,s,a)=>{if(await e(r.url??"",r,s)){S().info(`Rewrite response for ${r.url}`);const e=s.end,a=[];s.write=function(e){return a.push(e),!0},s.end=function(n,i,o){"string"==typeof n&&a.push(Buffer.from(n));const c=s.getHeader("content-encoding"),l=function(e,t){switch(t){case"gzip":return g.unzipSync(e);case"br":return g.brotliDecompressSync(e);case"deflate":return g.deflateSync(e);default:return e}}(Buffer.from(Buffer.concat(a)),c),p="function"!=typeof i&&i?i:"utf-8",d="function"==typeof i?i:o;return e.call(this,function(e,t){switch(t){case"gzip":return g.gzipSync(e);case"br":return g.brotliCompressSync(e);case"deflate":return g.inflateSync(e);default:return e}}(t(l,r,s),c),p,d),this}}a()}}function oe(e,t){const r=(e=(e=e.startsWith("/")?e:`/${e}`).endsWith("/")?e:`${e}/`).endsWith("/")?e.slice(0,-1):e,s=S();return(a,n,i)=>{const o=new l.URL(a.url??"","http://localhost"),{pathname:c,search:p}=o,d=["/",r];if(t&&(d.push(`/pt/${t}`),d.push(`/pl/${t}`)),d.includes(c)){const t=`${e}${p}`;return s.info(E.yellow(`Redirecting to: ${t}`)),A(n,t,302)}i()}}class ce{state={isAuthenticated:!1,isRedirected:!1,lastChecked:0};listeners=new Set;getState(){return{...this.state}}isAuthenticated(){return this.state.isAuthenticated}isRedirected(){return this.state.isRedirected}setAuthenticated(e){this.state.isAuthenticated=e,this.state.lastChecked=Date.now(),this.notifyListeners()}setRedirected(e){this.state.isRedirected=e,this.notifyListeners()}updateState(e){void 0!==e.isAuthenticated&&(this.state.isAuthenticated=e.isAuthenticated),void 0!==e.isRedirected&&(this.state.isRedirected=e.isRedirected),this.state.lastChecked=Date.now(),this.notifyListeners()}reset(){this.state={isAuthenticated:!1,isRedirected:!1,lastChecked:0},this.notifyListeners()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notifyListeners(){this.listeners.forEach((e=>{try{e(this.getState())}catch(e){console.error("Error in auth state listener:",e)}}))}getDebugInfo(){return{...this.getState(),listenerCount:this.listeners.size}}}const le=new ce,pe=new Map;function de(e){const t=pe.get(e);return t?Date.now()-t.timestamp>18e4?(pe.delete(e),null):t.data:null}function he(e,t){pe.set(e,{timestamp:Date.now(),data:t})}const ue="/home?proxyRedirect=";function ge(e,t,r){const{templateLess:s=!1,miHudLess:a=!1,portalPageId:n,base:i,v7Features:o}=r,c=S();if(s&&a&&void 0===n)throw new Error("Portal page ID is required when both templateLess and miHudLess are true");let l=le.getState();return le.subscribe((e=>{l=e})),async(r,p,d)=>{try{const h=!(s&&a),u=e.test(function(e){return e.split("?")[0]}(r.url??""));if(!l.isAuthenticated&&!l.isRedirected&&r.url?.startsWith("/home")&&!r.url?.startsWith(ue)){c.info(E.blue("Trying to authenticate and redirect to base"));try{return h?await me(t,{templateLess:s,miHudLess:a,portalPageId:n,redirectUrl:o&&i?`${i}`:`${ue}${encodeURIComponent("/")}`},r,p,(()=>{}),c):await fe(t,{templateLess:s,miHudLess:a,portalPageId:n,redirectUrl:o&&i?`${i}`:`${ue}${encodeURIComponent("/")}`},r,p,(()=>{}),c),le.setRedirected(!0),c.info(E.blue("Successfully authenticated. Redirecting to base")),A(p,i??"/",302)}catch(e){return d()}}if(!u)return d();if(!h){return await fe(t,{templateLess:s,miHudLess:a,portalPageId:n,redirectUrl:o&&i?`${i}`:`${ue}${encodeURIComponent("/")}`},r,p,d,c)}return await me(t,{templateLess:s,miHudLess:a,portalPageId:n,redirectUrl:o&&i?`${i}`:`${ue}${encodeURIComponent("/")}`},r,p,d,c)}catch(e){return c.error(E.red(`Unexpected error in load-pp-data middleware: ${e instanceof Error?e.message:String(e)}`)),le.reset(),d(e)}}}async function fe(e,t,r,s,a,n){const{portalPageId:i,redirectOnAuthFailure:o,redirectUrl:c}=t;if(void 0===i){const e=new Error("Portal page ID is required for page info only mode");return n.error(E.red(e.message)),a(e)}const l=r.headers??{};n.info(E.green("Start loading page info"));try{const t=`pageInfo:${i}`;return de(t)?(n.info(E.green("Page info loaded from cache")),a()):(await e.getPageInfo(i,l),n.info(E.blue("Clearing proxy cache after successful login")),Y.clear(),he(t,{success:!0}),le.updateState({isAuthenticated:!0}),n.info(E.green("Page info loaded successfully")),a())}catch(e){return le.reset(),we(e,o??!0,c||`${ue}${encodeURIComponent("/")}`,s,a,n,"Page info")}}async function me(e,t,r,s,a,n){const{templateLess:i,portalPageId:o,redirectOnAuthFailure:c,redirectUrl:l}=t,p=r.headers??{};n.info(E.green("Start loading page data"));try{const t=`pageData:${i}:${o}`;if(de(t))return n.info(E.green("Page data loaded from cache")),a();const r=i||void 0===o?e.getPageTemplate(p):e.getPageVariables(o,p);return await r,n.info(E.blue("Clearing proxy cache after successful login")),Y.clear(),he(t,{success:!0}),n.info(E.green("Page data loaded successfully")),a()}catch(e){return le.reset(),we(e,c??!0,l||`${ue}${encodeURIComponent("/")}`,s,a,n,"Page data")}}function we(e,t,r,s,a,n,i){if(function(e){return null!==e&&"object"==typeof e&&"response"in e&&void 0!==e.response}(e)&&(n.info(E.red(`${i} loading failed. Not authorized`)),t)){const e=`${r}`;return n.info(E.yellow(`Redirecting to: ${e}`)),A(s,e,302)}const o=e instanceof Error?e.message:String(e);return n.info(E.red(`${i} loading failed. Error: ${o}`)),a(e)}const ye=f();function ve(e,t,r){return t(e)?{isValid:!0}:{isValid:!1,error:r}}ye.use(f.json()),ye.use(f.urlencoded({extended:!0})),exports.AuthProvider=ce,exports.MiAPI=z,exports.authProvider=le,exports.colors=E,exports.createLogger=S,exports.initLoadPPData=ge,exports.initPPRedirect=oe,exports.initProxy=D,exports.initProxyCache=J,exports.initRewriteResponse=ie,exports.internalServer=ye,exports.normalizeVitePPDevConfig=function(e){const t=function(e){const t=[ve(e,(e=>"object"==typeof e&&null!==e),"VitePPDevOptions must be an object"),ve(e.templateName,(e=>"string"==typeof e&&e.length>0),"VitePPDevOptions.templateName must be a non-empty string"),ve(e.backendBaseURL,(e=>void 0===e||"string"==typeof e&&e.length>0),"VitePPDevOptions.backendBaseURL must be a non-empty string if provided"),ve(e.portalPageId,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.portalPageId must be a positive number if provided"),ve(e.appId,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.appId must be a positive number if provided"),ve(e.proxyCacheTTL,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.proxyCacheTTL must be a positive number if provided"),ve(e.integrateMiTopBar,(t=>void 0===t||"boolean"==typeof t&&(!0!==t||!0===e.miHudLess)),"VitePPDevOptions.integrateMiTopBar can only be true when miHudLess is true")];return t.find((e=>!e.isValid))||{isValid:!0}}(e);if(!t.isValid)throw new Error(t.error);const r=e.appId??e.portalPageId,{enableProxyCache:s=!0,proxyCacheTTL:a=6e5,disableSSLValidation:n=!1,imageOptimizer:i=!0,miHudLess:o=!1,integrateMiTopBar:c=!1,templateLess:l=!1,outDir:p="dist",distZip:d=!0,syncBackupsDir:h="backups",v7Features:u=!1,personalAccessToken:g=process.env.MI_ACCESS_TOKEN}=e||{};let f=d;f=!0===f?{outFileName:`${e.templateName}.zip`,outDir:"dist-zip"}:"object"==typeof d&&{outFileName:"string"==typeof d.outFileName?d.outFileName.replace("[templateName]",e.templateName):`${e.templateName}.zip`,outDir:d.outDir??"dist-zip"};let m=i;return"boolean"==typeof i?!0===m&&(m={}):"object"!=typeof i&&(m=!1),{enableProxyCache:s,proxyCacheTTL:a,disableSSLValidation:n,imageOptimizer:m,templateLess:l,miHudLess:o,outDir:p,distZip:f,syncBackupsDir:h,v7Features:u,personalAccessToken:g,portalPageId:r,integrateMiTopBar:c,...e}},exports.urlReplacer=T,exports.vitePPDev=function(e){const{templateName:t,templateLess:r,backendBaseURL:s,miHudLess:a,portalPageId:n,enableProxyCache:i,proxyCacheTTL:o,disableSSLValidation:c,distZip:l,syncBackupsDir:p,v7Features:d,personalAccessToken:h}=e||{};let u=!0;return process.cwd(),{name:"vite-pp-dev",apply:"serve",config:e=>{const a=function(e){return[ve(e.base,(e=>"string"==typeof e&&e.length>0&&"/"!==e),'Server base path cannot be empty or "/"'),ve(e.port,(e=>void 0===e||"number"==typeof e&&e>0&&e<65536),"Server port must be a valid port number (1-65535)")].find((e=>!e.isValid))||{isValid:!0}}({base:e.base||"",...e.server});if(!a.isValid)throw new Error(a.error);return e.clientInjectionPlugin={backendBaseURL:s,portalPageId:n,templateLess:r,v7Features:d},d&&(e.base=`/pl/${t}`),e},transformIndexHtml:async(e,t)=>{const r={html:e,tags:[]};return u&&(u=!1,r.tags.push({tag:"script",injectTo:"body",children:`${Math.random()}`})),r},configureServer:u=>{let g=u.config.base;g.endsWith("/")||(g+="/");const f=g.substring(0,g.lastIndexOf("/"));if(u.middlewares.use(oe(g,t)),s){const w=new URL(s).host,y={headers:{host:w,referer:s,origin:s.replace(/^(https?:\/\/)([^/]+)(\/.*)?$/i,"$1$2")},portalPageId:n,appId:n,templateLess:r,disableSSLValidation:c,v7Features:d,personalAccessToken:h??process.env.MI_ACCESS_TOKEN},v=[ve((m=y).headers,(e=>"object"==typeof e&&"string"==typeof e.host&&"string"==typeof e.referer&&"string"==typeof e.origin),"MiAPI headers must be properly configured"),ve(m.portalPageId,(e=>void 0===e||"number"==typeof e&&e>0),"MiAPI portalPageId must be a positive number if provided"),ve(m.appId,(e=>void 0===e||"number"==typeof e&&e>0),"MiAPI appId must be a positive number if provided"),ve(m.personalAccessToken,(e=>void 0===e||"string"==typeof e),"MiAPI personalAccessToken must be a string if provided")].find((e=>!e.isValid))||{isValid:!0};if(!v.isValid)throw new Error(v.error);const b=new z(s,y);if(i){let e=+o;(!e||Number.isNaN(e)||e<0)&&(e=6e5);const t={devServer:u,ttl:e},r=function(e){return[ve(e.ttl,(e=>"number"==typeof e&&e>0),"Proxy cache TTL must be a positive number")].find((e=>!e.isValid))||{isValid:!0}}(t);if(!r.isValid)throw new Error(r.error);u.middlewares.use(J(t))}const k=new RegExp(`^((${g})|/)$`);u.middlewares.use(ge(k,b,Object.assign({},e))),u.middlewares.use(D({baseURL:s,proxyIgnore:["/@vite","/@metricinsights","/@",f],disableSSLValidation:c,miAPI:b}));const x=(e,t,r,s,a)=>{const n={error:r};s&&(n.details=s),a&&(n.code=a),e.status(t).json(n).end()},P=(e,t,r)=>{u.config.logger.error(`${r} token validation error:`,t);const s=j(t);if(t.tokenErrorInfo){const r=t.tokenErrorInfo;u.config.logger.info(`Using enhanced error info: ${r.code} - ${r.userFriendlyMessage}`);const s=r.status||500,a=r.code,n=r.userFriendlyMessage,i=r.message;x(e,s,n,i,a)}else{let t,a,n;switch(u.config.logger.info(`Using original error info: ${s.code} - ${s.userFriendlyMessage}`),s.code){case"SESSION_EXPIRED":t=412,a="personal"===r?"Personal access token expired":"Session expired",n="personal"===r?"PAT_EXPIRED":"SESSION_EXPIRED";break;case"UNAUTHORIZED":t=401,a="Unauthorized",n="UNAUTHORIZED";break;case"FORBIDDEN":t=403,a="Access forbidden",n="FORBIDDEN";break;default:t=500,a="Internal server error",n=s.code}const i="personal"===r&&"PAT_EXPIRED"===n?"Your personal access token has expired. Please generate a new token from the portal.":"regular"===r&&"SESSION_EXPIRED"===n?"Your portal session has expired. Please refresh your token or re-authenticate.":s.userFriendlyMessage;x(e,t,a,i,n)}return null};ye.post("/@api/login",(async(e,t,r)=>{const{token:s,tokenType:a}=e.body;if(s){if(u.config.logger.info(`Attempting to validate ${a} token...`),"personal"===a){if(!await b.get("/data/page/index/auth/info",{"Content-Type":"application/json",Accept:"application/json",Authorization:`Bearer ${s}`},!0).then((async e=>"number"==typeof e.data?.user?.user_id?(b.personalAccessToken=s,u.config.logger.info(`Personal access token validated successfully for user ${e.data.user.user_id}`),e):(x(t,400,"Token expired or invalid"),null))).catch((e=>P(t,e,"personal"))))return;A(t,"/",302)}else if("regular"===a){if(!await b.get("/api/user",{"Content-Type":"application/json",Accept:"application/json",Token:s},!0).then((e=>e.data?.users?.length?(b.personalAccessToken=void 0,u.config.logger.info(`Regular token validated successfully for ${e.data.users.length} user(s)`),t.setHeader("set-cookie",e.headers["set-cookie"]??""),e):(x(t,400,"Token expired or invalid"),null))).catch((e=>P(t,e,"regular"))))return;A(t,"/",302)}}else x(t,400,"Token is required")})),u.middlewares.use(ye);const $=!1!==l?new ne(t,Object.assign({backupDir:p},"object"==typeof l?{distZipFolder:l.outDir,distZipFilename:l.outFileName}:void 0)):void 0;return new V(u,{distService:$,miAPI:b}),()=>{u.middlewares.use(ie((e=>e.split("?")[0].endsWith("index.html")),((e,t)=>Buffer.from(T(w,t.headers.host??"",b.buildPage(e,a))))))}}var m}}};
|
|
2
|
+
//# sourceMappingURL=plugin-MI3iLFaG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-MI3iLFaG.js","sources":["../../../src/lib/helpers/url.helper.ts","../../../src/lib/logger.ts","../../../src/lib/helpers/color.helper.ts","../../../src/lib/helpers/login.helper.ts","../../../src/lib/proxy-pass.middleware.ts","../../../src/api/base.ts","../../../src/api/assets.ts","../../../src/api/assets-v7.ts","../../../src/api/page.ts","../../../src/api/page-template.ts","../../../src/lib/helpers/token.helper.ts","../../../src/lib/pp.middleware.ts","../../../src/lib/client.service.ts","../../../src/lib/proxy-cache.middleware.ts","../../../src/lib/dist.service.ts","../../../src/lib/rewrite-response.middleware.ts","../../../src/lib/helpers/content-encoding.helper.ts","../../../src/lib/pp-redirect.middleware.ts","../../../src/lib/auth.provider.ts","../../../src/lib/load-pp-data.middleware.ts","../../../src/lib/internal.middleware.ts","../../../src/plugin.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["urlReplacer","originalHost","destinationHost","content","urlReplaceRegExp","RegExp","replace","substring","args","startsWith","redirect","res","url","statusCode","setHeader","end","storage","Map","DEFAULT_LOGGER_KEY","createLogger","level","name","has","get","logger","cL","set","colors","createColors","tokenLoginFunction","TOKEN_TYPE_CONFIG","personal","placeholder","caption","host","endpoint","regular","updateTokenUI","type","tokenInput","tokenCaption","info","innerHTML","showError","message","errorElement","textContent","classList","add","hideError","remove","setupEventHandlers","formWrapper","submitButton","addEventListener","async","e","preventDefault","value","trim","focus","tokenTypeSwitcher","document","getElementById","activeOption","querySelector","tokenType","dataset","token","response","fetch","method","headers","body","JSON","stringify","URL","window","location","origin","pathname","json","error","parseError","href","networkError","handleFormSubmission","key","click","initializeLoginForm","loginForm","contentWrapper","firstChild","rowTemplate","lastChild","cloneNode","orRow","innerText","setAttribute","helperForm","formContent","createElement","styleElement","head","appendChild","tokenTypeOptions","querySelectorAll","handleTokenTypeChange","target","forEach","opt","option","currentTarget","setupTokenTypeSwitcher","console","observer","MutationObserver","mutations","mutation","disconnect","observe","childList","subtree","existingForm","hostOriginRegExp","PROXY_HEADER","initProxy","opts","rewritePath","baseURL","disableSSLValidation","miAPI","Error","fileType","import","createProxyMiddleware","selfHandleResponse","pathFilter","req","proxyIgnore","some","test","Array","isArray","rP","changeOrigin","autoRewrite","cookieDomainRewrite","log","warn","secure","on","proxyReq","referer","getHeader","blue","green","protocol","path","personalAccessToken","socket","setTimeout","destroyed","destroy","proxyRes","serverRes","includes","streamInterceptor","setHeaders","Object","entries","pipe","rewriteInterceptor","responseInterceptor","responseBuffer","fileTypeFromBuffer","toString","reqUrl","searchParams","redirectToFunction","storageKey","lastRedirectKey","redirectCount","localStorage","getItem","Number","isNaN","func","params","URLSearchParams","search","debug","removeItem","setItem","Date","toISOString","reqHost","urlPath","destinationPath","unescapedUrlReplaceRegExp","replacedContent","urlPathReplacer","err","errorMessage","stack","writable","writeHead","BaseAPI","axios","constructor","this","checkAuth","assign","accept","maxRedirects","then","catch","AssetsAPI","formdataModulePromise","super","getDownloadUrl","portalPageId","getDownloadTemplateUrl","templateId","getUploadUrl","getUploadTemplateUrl","downloadPageAssets","withCredentials","responseType","data","uploadPageAssets","file","formData","FormData","File","assetFile","append","post","Referer","getUri","downloadTemplateAssets","uploadTemplateAssets","AssetsV7API","PageAPI","getAll","Accept","Pragma","Expires","pages","id","page","getPageContent","internalPageName","create","PageTemplateAPI","internal_name","page_templates","page_template","getTokenErrorInfo","status","toLowerCase","code","userFriendlyMessage","suggestions","TEMPLATE_PAGE_NAME","axiosInstanceCache","MiAPI","pageTemplate","pageTitle","pageVars","v7Features","isV710OrHigher","templateLoaded","templateLoadedResolve","templateLess","assetsApi","pageApi","pageTemplateApi","Promise","resolve","cacheKey","defaults","httpsAgent","Agent","rejectUnauthorized","timeout","httpAgent","keepAlive","maxSockets","isTemplateLoaded","clearHeaders","obj","undefined","keys","authorization","updateHeaders","localTemplateHTML","getPageTemplate","red","template_id","find","p","yellow","enabled","visible_in_homepage","getPageVariables","pageId","tags","template","parsed","parse","reason","getPageInfo","pageIdToFetch","fetchV7Page","fetchLegacyPage","handlePageFetchError","buildPage","miHudLess","result","v","dom","JSDOM","placeholderText","container","scripts","length","insertBefore","item","title","text","serialize","getAssets","pageInfo","templateInfo","updateAssets","assets","validateCredentials","testHeaders","isValid","errorInfo","cleanup","normalizedHeaders","context","contextPrefix","suggestion","index","logTokenError","tokenErrorInfo","ClientService","server","eventMap","onInfoDataRequest","bind","onTemplateSync","init","ws","event","handler","send","distService","config","clientInjectionPlugin","canSync","currentAssets","isAxiosError","validation","refresh","validationError","cause","newAssets","saveBackupAndBuild","buildNewAssets","Buffer","updateResult","backupMeta","getBackupMeta","lastBackupName","backupFilename","lastBackupHash","currentHash","lastBackupDate","backupDate","syncedAt","FILE_EXTENSION_REGEX","DEFAULT_TTL","DEFAULT_MAX_SIZE","DEFAULT_MAX_ITEMS","EnhancedCache","memoryCache","Cache","totalSize","maxSize","maxItems","put","ttl","oldItem","size","itemsToRemove","sortedKeys","sort","a","b","itemA","itemB","timestamp","i","del","oldestKey","getTotalSize","getItemCount","cache","createResponseBuffer","chunks","alloc","totalLength","reduce","sum","chunk","allocUnsafe","offset","copy","initProxyCache","devServer","next","originalUrl","cleanUrl","split","generateCacheKey","cacheItem","header","setResponseHeaders","write","originalEnd","originalWrite","encoding","callback","hasHeader","call","safeEncoding","push","from","isBuffer","String","finalBuffer","responseSize","getHeaders","now","toFixed","finalEncoding","TEMPLATE_PART_PAGE_NAME","TEMPLATE_PART_DATE","DIRNAME","dirname","__filename","fileURLToPath","require","pathToFileURL","_documentCurrentScript","tagName","toUpperCase","src","baseURI","pluginPath","node_modules_path","metaDirPath","metaFilePath","DistService","backupFolder","backupNameTemplate","dateFormat","pageName","currentMeta","distZipFolder","distZipFilename","syncOptions","process","cwd","date","syncMeta","checkMeta","fs","promises","stat","mkdir","readMetaFile","readFile","writeMetaFile","meta","writeFile","getLatestSavedBackup","backupPath","backupName","saveBackup","backupFile","slice","backupFileHash","crypto","createHash","update","digest","filename","finally","buildCommand","reject","cyan","proc","child_process","spawn","env","NODE_ENV","stdio","msg","initRewriteResponse","predicate","rewrite","buffers","cb","contentEncoding","unzipSync","brotliDecompressSync","deflateSync","decodeContent","concat","bufferEncoding","endCallback","gzipSync","brotliCompressSync","inflateSync","encodeContent","initPPRedirect","base","templateName","baseWithoutTrailingSlash","endsWith","parsedUrl","findPaths","redirectUrl","AuthProvider","state","isAuthenticated","isRedirected","lastChecked","listeners","Set","getState","setAuthenticated","authenticated","notifyListeners","setRedirected","redirected","updateState","updates","reset","subscribe","listener","delete","getDebugInfo","listenerCount","authProvider","apiResponseCache","getCachedResponse","cached","setCachedResponse","DEFAULT_REDIRECT_URL","initLoadPPData","applyUrlRegExp","mi","authState","isNeedTemplateLoad","isApplyRequest","cutUrlParams","handleTemplateLoad","encodeURIComponent","handlePageInfoOnly","options","redirectOnAuthFailure","clear","success","handleLoadError","loadPageData","operationType","isAuthError","fullRedirectUrl","internalServer","express","validateConfigValue","validator","use","urlencoded","extended","validationResult","validations","c","backendBaseURL","appId","proxyCacheTTL","integrateMiTopBar","integrate","validateConfig","enableProxyCache","imageOptimizer","outDir","distZip","syncBackupsDir","MI_ACCESS_TOKEN","distZipConfig","outFileName","imageOptimizerConfig","isFirstRequest","apply","port","validateServerConfig","transformIndexHtml","html","ctx","tag","injectTo","children","Math","random","configureServer","lastIndexOf","middlewares","baseUrlHost","miConfig","cacheConfig","validateProxyCacheConfig","isIndexRegExp","proxyPassMiddleware","sendErrorResponse","details","handleTokenValidationError","enhancedErrorInfo","errorCode","Authorization","user","user_id","Token","users","backupDir"],"mappings":"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"}
|
package/dist/cjs/plugin.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=require("./plugin-
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=require("./plugin-MI3iLFaG.js");require("http-proxy-middleware"),require("vite"),require("picocolors"),require("axios"),require("jsdom"),require("https"),require("memory-cache"),require("path"),require("fs"),require("url"),require("crypto"),require("process"),require("child_process"),require("console"),require("zlib"),require("express"),exports.default=e.vitePPDev,exports.normalizeVitePPDevConfig=e.normalizeVitePPDevConfig;
|
|
2
2
|
//# sourceMappingURL=plugin.js.map
|
package/dist/esm/cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as e from"path";import*as t from"fs";import{performance as o}from"node:perf_hooks";import{cac as n}from"cac";import{loadConfigFromFile as i,loadEnv as s,mergeConfig as r,build as a,resolveConfig as l,optimizeDeps as c,preview as d}from"vite";import{g as p,V as f,i as h,s as m}from"./index-DMOFygHY.js";import{c as g,a as u,M as b,i as w,b as v,d as y,e as x,f as P,g as T,u as L}from"./plugin-qc60R-dL.js";import{parse as $}from"url";import*as S from"dir-compare";import F from"diff-match-patch";import{isBinaryFile as A}from"isbinaryfile";import*as D from"os";import*as j from"crypto";import k from"extract-zip";import E from"svgtofont";import"ejs";import"http-proxy-middleware";import"picocolors";import"axios";import"jsdom";import"https";import"memory-cache";import"process";import"child_process";import"console";import"zlib";import"express";function C(e){return null!=e&&!1!==e}const N=[{key:"r",description:"restart the server",async action(e){await e.restart()}},{key:"u",description:"show server url",action(e){e.config.logger.info(""),e.printUrls()}},{key:"o",description:"open in browser",action(e){e.openBrowser()}},{key:"c",description:"clear console",action(e){e.config.logger.clearScreen("error")}},{key:"q",description:"quit",async action(e){await e.close().finally((()=>process.exit()))}},{key:"C",description:"clear proxy cache",action(e){e.cache&&(e.cache.clear(),e.config.logger.info("Proxy cache cleared"))}}];const _=/(.+)(-[a-f0-9]{6,20})(\.[a-z0-9]+)$/i;class I{oldAssetsPath;newAssetsPath;destinationPath;changelogFilename;changelogTemplate='<!DOCTYPE html>\n <html lang="en">\n <head>\n <meta charset="UTF-8" />\n <title>Changelog Diff</title>\n <style>\n tr,\n td {\n padding: 0;\n }\n .diff-file {\n margin-top: 20px;\n border: 1px solid #e1e4e8;\n border-radius: 6px;\n }\n .diff-file-title {\n padding: 10px 20px;\n background-color: #f6f8fa;\n border-bottom: 1px solid #e1e4e8;\n border-radius: 6px 6px 0 0;\n font-weight: bold;\n }\n .diff-file-title .renamed {\n font-weight: normal;\n }\n .diff-file-title .renamed .from {\n color: #cb2431;\n }\n .diff-file-title .renamed .to {\n color: #22863a;\n }\n .diff-file-title .added {\n color: #22863a;\n }\n .diff-file-title .deleted {\n color: #cb2431;\n }\n .diff-file-content {\n }\n .diff-table {\n tab-size: 8;\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n }\n .blob-num {\n position: relative;\n color: #1f2328;\n width: 1%;\n min-width: 50px;\n padding: 0 10px;\n font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;\n font-size: 12px;\n line-height: 20px;\n text-align: right;\n white-space: nowrap;\n vertical-align: top;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n }\n .blob-num.addition {\n background-color: #ccffd8;\n border-color: #1f883e;\n }\n .blob-num.deletion {\n background-color: #ffd7d5;\n border-color: #cf222e;\n }\n .blob-num::before {\n content: attr(data-line-number);\n }\n .blob-code {\n position: relative;\n padding: 0 10px 0 22px;\n vertical-align: top;\n color: #1f2329;\n }\n .blob-code.code-addition {\n background-color: #e6ffec;\n }\n .blob-code.code-deletion {\n background-color: #ffebe9;\n }\n .blob-code.skip,\n .blob-code.message {\n text-align: center;\n }\n .blob-code.skip .blob-code-inner,\n .blob-code.message .blob-code-inner {\n font-weight: bold;\n color: #6a737d;\n padding: 10px 0;\n }\n .blob-code-inner {\n display: table-cell;\n overflow: visible;\n font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;\n font-size: 12px;\n word-wrap: anywhere;\n white-space: pre-wrap;\n }\n .blob-code-inner::before {\n content: attr(data-code-prefix);\n position: absolute;\n top: 1px;\n left: 8px;\n padding-right: 8px;\n }\n </style>\n </head>\n <body>\n <h1>Changelog Diff</h1>\n\n %FILES%\n </body>\n </html>';diffFileTemplateHandler;diffLineTemplateHandler;contextLines=3;logger;constructor(t){const{oldAssetsPath:o,newAssetsPath:n,destinationPath:i,changelogTemplate:s,diffFileTemplateHandler:r,diffLineTemplateHandler:a,changelogFilename:l,contextLines:c}=t;if(this.logger=g(),!o||!n||!i)throw new Error("Previous assets path, current assets path and destination path are required");if(o===n)throw new Error("Previous and current assets paths must be different");if(!this.isExists(o))throw new Error(`Previous assets path ${o} does not exist`);if(!this.isExists(n))throw new Error(`Current assets path ${n} does not exist`);if(this.isZipFile(o)){const t=e.resolve(D.tmpdir(),j.createHash("md5").update(o).digest("hex"));this.oldAssetsPath=this.unzipFile(o,t).then((()=>this.normalizeAssetFolderPath(t))).then((e=>{if(this.isEmptyFolder(e))throw new Error(`Previous assets path ${e} is empty`);return e}))}else{if(!this.isFolder(o))throw new Error(`Invalid previous assets path ${o}. It must be a folder or a zip file`);{const e=this.normalizeAssetFolderPath(o);if(this.isEmptyFolder(e))throw new Error(`Previous assets path ${e} is empty`);this.oldAssetsPath=Promise.resolve(e)}}if(this.isZipFile(n)){const t=e.resolve(D.tmpdir(),j.createHash("md5").update(n).digest("hex"));this.newAssetsPath=this.unzipFile(n,t).then((()=>this.normalizeAssetFolderPath(t))).then((e=>{if(this.isEmptyFolder(e))throw new Error(`Current assets path ${e} is empty`);return e}))}else{if(!this.isFolder(n))throw new Error(`Invalid current assets path ${n}. It must be a folder or a zip file`);{const e=this.normalizeAssetFolderPath(n);if(this.isEmptyFolder(e))throw new Error(`Current assets path ${n} is empty`);this.newAssetsPath=Promise.resolve(e)}}this.destinationPath=i,this.mkdirpSync(this.destinationPath),this.changelogFilename=l||"CHANGELOG.html",s&&(this.templateIsValid(s)?this.changelogTemplate=s:this.logger.warn(u.yellow("Invalid changelog template, using default"))),"function"==typeof r&&(this.diffFileTemplateHandler=r),"function"==typeof a&&(this.diffLineTemplateHandler=a),c&&(this.contextLines=c)}templateIsValid(e){return e.includes("%FILES%")}isExists(e){return t.existsSync(e)}isZipFile(e){return e.endsWith(".zip")}isFolder(e){return t.lstatSync(e).isDirectory()}isEmptyFolder(e){return 0===t.readdirSync(e,{withFileTypes:!0}).length}mkdirpSync(e){t.existsSync(e)||t.mkdirSync(e,{recursive:!0})}async unzipFile(e,o){return t.rmSync(o,{force:!0,recursive:!0}),k(e,{dir:o})}normalizeAssetFolderPath(o){const n=t.readdirSync(o);return 1===n.length&&t.lstatSync(e.join(o,n[0])).isDirectory()?this.normalizeAssetFolderPath(e.join(o,n[0])):o}pathToPosix(e){return e.replace(/\\/g,"/")}diffTableTemplate(e){return`<table class="diff-table">\n <tbody>\n ${e}\n </tbody>\n </table>`}getDiffTableHTML(e){const t=e.filter(((e,t,o)=>0!==e.lineType||(t>=0&&t<this.contextLines||t>o.length-(this.contextLines+1)&&t<=o.length-1||o.slice(t-this.contextLines,t+this.contextLines+1).some((e=>0!==e.lineType))))).map(((e,t,o)=>{if(t>0){const n=o[t-1];if(e.lineNumber-n.lineNumber>1)return[{lineNumber:-1,lineContent:"",lineType:0},e]}return[e]})).flat().map((e=>this.diffLineHTML(e))).join("");return this.diffTableTemplate(t)}diffLineMessageTemplate(e){return`<tr>\n <td class="blob-num"></td>\n <td class="blob-num"></td>\n <td class="blob-code message">\n <span class="blob-code-inner">${e}</span>\n </td>\n </tr>`}diffLineSkipTemplate(){return'<tr>\n <td class="blob-num"></td>\n <td class="blob-num"></td>\n <td class="blob-code skip">\n <span class="blob-code-inner">Skip</span>\n </td>\n </tr>'}diffLineTemplate(e){const{lineNumber:t,lineContent:o,lineType:n}=e,i=1===n?"addition":-1===n?"deletion":"";return`<tr>\n <td\n class="blob-num ${i}${"addition"===i?" empty":""}"\n ${"addition"!==i?` data-line-number="${t}"`:""}\n ></td>\n <td\n class="blob-num ${i}${"deletion"===i?" empty":""}"\n ${"deletion"!==i?` data-line-number="${t}"`:""}\n ></td>\n <td class="blob-code ${1===n?"code-addition":-1===n?"code-deletion":""}">\n <span class="blob-code-inner" data-code-prefix="${1===n?"+":-1===n?"-":" "}">${s=o??"",s.replace(/[\u00A0-\u9999<>&]/g,(e=>"&#"+e.charCodeAt(0)+";"))}</span>\n </td>\n </tr>`;var s}diffLineHTML(e){if(this.diffLineTemplateHandler)return this.diffLineTemplateHandler(e);const{lineNumber:t}=e;return-1===t?this.diffLineSkipTemplate():this.diffLineTemplate(e)}diffFileTemplate(e,t){return this.diffFileTemplateHandler?this.diffFileTemplateHandler(e,t):`<div class="diff-file">\n <div class="diff-file-title">${e}</div>\n <div class="diff-file-content">${t}</div>\n </div>`}async generateAssetFoldersDiff(){this.logger.info(u.blue(`Comparing asset folders ${await this.oldAssetsPath} and ${await this.newAssetsPath}`));const e=await S.compare(await this.oldAssetsPath,await this.newAssetsPath,{compareContent:!0,skipSymlinks:!0,compareSize:!0,compareDate:!1,compareNameHandler:(e,t)=>(_.test(e)&&(e=e.replace(_,"$1$3")),_.test(t)&&(t=t.replace(_,"$1$3")),0===e.localeCompare(t)?0:e.localeCompare(t)>0?1:-1)});return e.diffSet?.filter((e=>"equal"!==e.state||e.name1!==e.name2))||[]}async generateAssetFilesDiff(e,t){const o=new F,n=o.diff_linesToChars_(e,t),i=o.diff_main(n.chars1,n.chars2,!1);o.diff_charsToLines_(i,n.lineArray);let s=0;return i.map((e=>{const[t,o]=e,n=o.endsWith("\n")?o.split("\n").length-1:o.split("\n").length,i=o.split("\n").map(((e,o)=>({lineContent:e,lineNumber:s+o+1,lineType:t}))).slice(0,n);return-1!==t&&(s+=n),i})).flat()}async generateFilesDiff(o){if("equal"===o.state){const t=this.pathToPosix(e.join(".",o.relativePath,o.name1??"")),n=this.pathToPosix(e.join(".",o.relativePath,o.name2??""));return this.diffFileTemplate(`<span class="renamed"\n >Renamed <span class="from">${t}</span> -> <span class="to">${n}</span></span\n >`,this.diffTableTemplate(this.diffLineMessageTemplate("No changes")))}const n=o.path1&&o.name1?e.join(o.path1,o.name1):null,i=o.path2&&o.name2?e.join(o.path2,o.name2):null,s=this.pathToPosix(e.join(".",o.relativePath,(o.name1||o.name2)??""));if("left"===o.state&&n)return this.diffFileTemplate(`<span class="removed">Removed ${s}</span>`,this.diffTableTemplate(this.diffLineMessageTemplate("File removed")));if("right"===o.state&&i)return this.diffFileTemplate(`<span class="added">Added ${s}</span>`,this.diffTableTemplate(this.diffLineMessageTemplate("File added")));if("distinct"===o.state&&n&&i){const r=this.pathToPosix(e.join(".",o.relativePath,o.name1??"")),a=this.pathToPosix(e.join(".",o.relativePath,o.name2??"")),l=o.name1!==o.name2?`<span class="renamed"\n >Renamed <span class="from">${r}</span> -> <span class="to">${a}</span></span\n >`:s;return this.diffFileTemplate(l,await A(n)||await A(i)?this.diffTableTemplate(this.diffLineMessageTemplate("Binary file")):this.getDiffTableHTML(await this.generateAssetFilesDiff(t.readFileSync(n,"utf-8"),t.readFileSync(i,"utf-8"))))}return""}async generateChangelog(){this.logger.info(u.green("Generating changelog"));const o=await this.generateAssetFoldersDiff(),n=(await Promise.all(o.map((e=>this.generateFilesDiff(e))))).join("");this.logger.info(u.green("Writing changelog file"));const i=this.changelogTemplate.split("%FILES%");i.splice(1,0,n);const s=i.join("");t.writeFileSync(e.join(this.destinationPath,this.changelogFilename),s),this.logger.info(u.green(`Changelog file written to ${e.join(this.destinationPath,this.changelogFilename)}`))}}class z{sourceDir;outputDir;fontName;constructor(e){this.sourceDir=e.sourceDir,this.outputDir=e.outputDir,this.fontName=e.fontName}async generate(){await E({src:this.sourceDir,dist:this.outputDir,fontName:this.fontName,css:!0,typescript:!0,startUnicode:59905,svgicons2svgfont:{fontHeight:1024}})}}const M=n("pp-dev");let H=global.__pp_dev_profile_session,R=0;const O=o=>{if(H)return new Promise(((n,i)=>{H.post("Profiler.stop",((s,{profile:r})=>{if(s)i(s);else{const i=e.resolve(`./pp-dev-profile-${R++}.cpuprofile`);t.writeFileSync(i,JSON.stringify(r)),o(u.yellow(`CPU profile written to ${u.white(u.dim(i))}`)),H=void 0,n()}}))}))},G=e=>{for(const[t,o]of Object.entries(e))Array.isArray(o)&&(e[t]=o[o.length-1])};function U(e){const t={...e};return delete t["--"],delete t.c,delete t.config,delete t.base,delete t.l,delete t.logLevel,delete t.clearScreen,delete t.d,delete t.debug,delete t.f,delete t.filter,delete t.m,delete t.mode,t}M.option("-c, --config <file>","[string] use specified config file").option("--base <path>","[string] public base path (default: /)").option("-l, --logLevel <level>","[string] info | warn | error | silent").option("--clearScreen","[boolean] allow/disable clear screen when logging").option("-d, --debug [feat]","[string | boolean] show debug logs").option("-f, --filter <filter>","[string] filter debug logs").option("-m, --mode <mode>","[string] set env mode"),M.command("[root]","start dev server").alias("serve").alias("dev").option("--host [host]","[string] specify hostname").option("--port <port>","[number] specify port").option("--https","[boolean] use TLS + HTTP/2").option("--open [path]","[boolean | string] open browser on startup").option("--cors","[boolean] enable CORS").option("--strictPort","[boolean] exit if specified port is already in use").option("--force","[boolean] force the optimizer to ignore the cache and re-bundle").action((async(e,t)=>{G(t);const{createServer:n}=await import("vite");try{const a=await i({mode:t.mode||"development",command:"serve"},t.config,e,t.logLevel);let l=await p();const c=s(t.mode||"development",e??process.cwd(),"");if(c&&Object.keys(c).forEach((e=>{e.startsWith("MI_")&&(process.env[e]=c[e])})),a){const{plugins:e,...t}=a.config;l=r(l,t)}const d=await n(r(l,{root:e,base:t.base,mode:t.mode,configFile:t.config,logLevel:t.logLevel,clearScreen:t.clearScreen,optimizeDeps:{force:t.force},server:U(t),customLogger:g(t.logLevel)},!0));if(!d.config.base||"/"===d.config.base)throw new Error('base cannot be equal to "/" or empty string');if(!d.httpServer)throw new Error("HTTP server not available");await d.listen();const h=g(t.logLevel),m=global.__pp_dev_start_time??!1,b=m?u.dim(`ready in ${u.reset(u.bold(Math.ceil(o.now()-m)))} ms`):"";h.info(`\n ${u.green(`${u.bold("PP-DEV")} v${f}`)} ${b}\n`),d.printUrls(),function(e,t){if(!e.httpServer||!process.stdin.isTTY||process.env.CI)return;e._shortcutsOptions=t;const o=g();t.print&&o.info(u.dim(u.green(" ➜"))+u.dim(" press ")+u.bold("h")+u.dim(" to show help"));const n=(t.customShortcuts??[]).filter(C).concat(N);let i=!1;const s=async t=>{if(""===t||""===t)return void await e.close().finally((()=>process.exit(1)));if(i)return;"h"===t&&o.info(["",u.bold(" Shortcuts"),...n.map((e=>u.dim(" press ")+u.bold(e.key)+u.dim(` to ${e.description}`)))].join("\n"));const s=n.find((e=>e.key===t));s&&(i=!0,await s.action(e),i=!1)};process.stdin.setRawMode(!0),process.stdin.on("data",s).setEncoding("utf8").resume(),e.httpServer.on("close",(()=>{process.stdin.off("data",s).pause()}))}(d,{print:!0,customShortcuts:[...H?[{key:"p",description:"start/stop the profiler",async action(e){if(H)await O(h.info);else{const e=await import("node:inspector").then((e=>e.default));await new Promise((t=>{H=new e.Session,H.connect(),H.post("Profiler.enable",(()=>{H?.post("Profiler.start",(()=>{h.info("Profiler started"),t()}))}))}))}}}]:[],{key:"l",description:"proxy re-login",action(e){e.ws.send({type:"custom",event:"redirect",data:{url:`/auth/index/logout?proxyRedirect=${encodeURIComponent("/")}`}})}}]})}catch(e){const o=g(t.logLevel);o.error(u.red(`error when starting dev server:\n${e.stack}`),{error:e}),O(o.info),process.exit(1)}})),M.command("next [root]","start Next.js development server with pp-dev integration").alias("next-serve").alias("next-dev").option("--host [host]","[string] specify hostname").option("--port <port>","[number] specify port",{default:3e3}).option("--https","[boolean] use TLS + HTTP/2").option("--open [path]","[boolean | string] open browser on startup").option("--cors","[boolean] enable CORS").option("--strictPort","[boolean] exit if specified port is already in use").option("--force","[boolean] force the optimizer to ignore the cache and re-bundle").action((async(e,t)=>{G(t);try{if(!h())throw new Error("Next.js is required but not available. Please install Next.js as a dependency:\nnpm install next@^13\n\nThis package requires Next.js >=13 <16 as a peer dependency.");const{next:o}=await m(),{join:n,basename:i}=await import("path"),{createServer:r}=await import("http"),{default:a}=(await import("next/dist/server/config.js")).default,l=g(),c=U(t),d=s(t.mode||"development",e??process.cwd(),"");d&&Object.keys(d).forEach((e=>{e.startsWith("MI_")&&(process.env[e]=d[e])}));const p=e?n(process.cwd(),e):process.cwd();l.info(p);const f=await a("development",p);let S=f?.experimental?.ppDev||f?.ppDev||{};if(0===Object.keys(S).length)try{const{getConfig:e}=await import("./index-DMOFygHY.js").then((e=>e.c)),t=await e();Object.keys(t).length>0?(S=t,l.info(u.blue("🔧 Loaded pp-dev config from standalone config file"))):l.info(u.yellow("⚠️ No pp-dev config found in Next.js config or standalone file, using defaults"))}catch(e){l.info(u.yellow("⚠️ Failed to load standalone pp-dev config, using defaults")),console.debug("Error loading standalone config:",e)}else l.info(u.blue("🔧 Loaded pp-dev config from Next.js config"));const{backendBaseURL:F=process.env.MI_BACKEND_URL||"http://localhost:8080",portalPageId:A=parseInt(process.env.MI_PORTAL_PAGE_ID||"1"),templateLess:D=!0,v7Features:j=!0,disableSSLValidation:k=!1,enableProxyCache:E=!0,proxyCacheTTL:C=6e5,personalAccessToken:N=process.env.MI_ACCESS_TOKEN,distZip:_=!1,syncBackupsDir:I="./backups",miHudLess:z=!1}=S;let M=S.templateName;if(!M)try{const{getPkg:e}=await import("./index-DMOFygHY.js").then((e=>e.c));M=e().name}catch(e){M=i(p)}let H=D?"/p":"/pl";H+=`/${M}`;const R=o({dev:!0,hostname:c.host||"localhost",port:c.port,dir:p,conf:{...f,basePath:H,assetPrefix:H}});if(await R.prepare(),H.endsWith("/")||(H+="/"),"/"===H)throw new Error('basePath cannot be equal to "/" or equal to empty string');H.substring(0,H.lastIndexOf("/"));l.info(u.green("✅ Next.js app prepared successfully")),l.info(u.blue(`🔧 pp-dev plugin configured for template: ${M}`)),l.info(u.blue(`🔧 Base path configured: ${H}`)),F&&(l.info(u.blue(`🌐 Backend URL: ${F}`)),l.info(u.blue(`🆔 Portal Page ID: ${A}`)));const O=R.getRequestHandler(),G="number"==typeof c.port?c.port:3e3,W="string"==typeof c.host?c.host:"localhost",q=new Set,B=r((async(e,t)=>{try{const o=e.url||"/",n=o.split("?")[0];let i=$(o,!0);if(Z.length>0){if(n.startsWith("/_next/")||"/favicon.ico"===n||n.startsWith("/__nextjs_")||n.startsWith("/api/")){if(K.length>0){let l=0;const c=()=>{if(l>=K.length)return void s();const o=K[l];l++,o(e,t,c)};return void c()}return void s()}let r=0;const a=()=>{if(r>=Z.length)return void s();const o=Z[r];r++,o(e,t,a)};return void a()}async function s(){if(n.startsWith(H)){const t=n.substring(H.length);e.url=t||"/",i=$(t,!0)}else if(n===H.replace(/\/$/,""))e.url="/",i=$("/",!0);else if(n.startsWith("/_next/")||"/favicon.ico"===n||n.startsWith("/__nextjs_"));else if("/"===n)return t.writeHead(302,{Location:H}),void t.end();await O(e,t,i)}s()}catch(d){console.error("[DEBUG] Error:",d),t.statusCode=500,t.end("Internal Server Error")}}));let V=null,Z=[],K=[];if(F){const e=new URL(F).host,t={headers:{host:e,referer:F,origin:F.replace(/^(https?:\/\/)([^/]+)(\/.*)?$/i,"$1$2")},portalPageId:A,appId:A,templateLess:D,disableSSLValidation:k,v7Features:j,personalAccessToken:N??process.env.MI_ACCESS_TOKEN};V=new b(F,t);const o=w(H,M),n=(e,t,n)=>{o(e,t,n)};if(K.push(n),Z.push(n),E){let e=+C;(!e||Number.isNaN(e)||e<0)&&(e=6e5);const t={middlewares:{use:e=>e},config:{logger:console}},o=v({devServer:t,ttl:e}),n=(e,t,n)=>{o(e,t,n)};Z.push(n),l.info(u.blue(`🔧 Proxy cache middleware added with TTL: ${e}ms`))}const i=H.endsWith("/")?H.substring(0,H.length-1):H,s={middlewares:{use:e=>e},config:{logger:console}},r=y({devServer:s,baseURL:F,proxyIgnore:["/@vite","/@metricinsights","/@",i,"/_next","/favicon.ico","/__nextjs_","/api"],disableSSLValidation:k,miAPI:V}),a=(e,t,o)=>{r(e,t,o)};Z.push(a);const c=new RegExp(`^((${H})|/)$`),d=x(c,V,{}),p=(e,t,o)=>{d(e,t,o)};Z.push(p);const f=P,h=(e,t,o)=>{if(e.url?.startsWith("/@api/")){f(e,t,(()=>{}))}else o()};K.push(h),Z.push(h);const m=T((e=>e.split("?")[0].endsWith("index.html")),((t,o)=>Buffer.from(L(e,o.headers.host??"",V.buildPage(t,z))))),g=(e,t,o)=>{m(e,t,o)};Z.push(g),l.info(u.blue(`🔧 ${Z.length} pp-dev middlewares initialized`)),l.info(u.blue(`🔧 ${K.length} essential middlewares for internal routes`)),l.info(u.blue(`🔧 MiAPI initialized for backend: ${F}`)),l.info(u.blue(`🔧 Portal Page ID: ${A}`))}B.listen(G,W,(()=>{l.info(u.green(`✅ pp-dev Next.js server running at http://${W}:${G}`)),l.info(u.blue(`📱 Next.js app accessible at http://${W}:${G}${H}`)),l.info(u.blue("🔧 Base path handling active")),B.on("connection",(e=>{q.add(e),e.on("close",(()=>q.delete(e)))}));const e=async e=>{l.info(u.yellow(`\n🛑 Received ${e}, shutting down gracefully...`));const t=setTimeout((()=>{l.info(u.yellow("⏰ Shutdown timeout reached, forcing exit")),process.exit(0)}),5e3);try{for(const e of Array.from(q))e.destroy();q.clear(),await new Promise((e=>{B.close((()=>{l.info(u.yellow("🛑 HTTP server closed")),e()}))})),R&&"function"==typeof R.close&&(await R.close(),l.info(u.yellow("🛑 Next.js app closed"))),clearTimeout(t),l.info(u.green("✅ Graceful shutdown completed")),process.exit(0)}catch(e){clearTimeout(t),l.error(u.red(`❌ Error during graceful shutdown: ${e}`)),process.exit(1)}};let t=process;if("function"!=typeof process.on){const e=globalThis.process||global.process;e&&"function"==typeof e.on&&(t=e,l.info(u.green("✅ Using global process object for event handlers")))}if("function"==typeof t.on)try{t.on("SIGINT",(()=>e("SIGINT"))),t.on("SIGTERM",(()=>e("SIGTERM"))),t.on("uncaughtException",(t=>{l.error(u.red(`❌ Uncaught Exception: ${t}`)),e("uncaughtException")})),t.on("unhandledRejection",((t,o)=>{l.error(u.red(`❌ Unhandled Rejection at: ${o}, reason: ${t}`)),e("unhandledRejection")})),l.info(u.green("✅ Process event handlers registered successfully"))}catch(e){l.warn(u.yellow(`⚠️ Failed to register process event handlers: ${e}`))}else l.warn(u.yellow("⚠️ process.on is not available, graceful shutdown handlers will not be registered")),l.info(u.blue("💡 This might be due to bundling or environment constraints"))}))}catch(e){const t=g("error");e instanceof Error&&e.message.includes("Next.js is required")?(t.error(u.red("❌ Next.js Peer Dependency Error:")),t.error(u.red(e.message)),t.error(u.yellow("\n💡 To fix this issue:")),t.error(u.blue(" 1. Install Next.js in your project:")),t.error(u.white(" npm install next@^15")),t.error(u.blue(" 2. Or use yarn:")),t.error(u.white(" yarn add next@^15")),t.error(u.blue(" 3. Or use pnpm:")),t.error(u.white(" pnpm add next@^15")),t.error(u.yellow("\n📖 For more information, see:")),t.error(u.blue(" https://nextjs.org/docs/getting-started"))):t.error(u.red(`❌ Failed to start Next.js server: ${e}`)),process.exit(1)}})),M.command("build [root]","build for production").option("--target <target>","[string] transpile target (default: 'modules')").option("--outDir <dir>","[string] output directory (default: dist)").option("--assetsDir <dir>","[string] directory under outDir to place assets in (default: assets)").option("--assetsInlineLimit <number>","[number] static asset base64 inline threshold in bytes (default: 4096)").option("--ssr [entry]","[string] build specified entry for server-side rendering").option("--sourcemap [output]",'[boolean | "inline" | "hidden"] output source maps for build (default: false)').option("--minify [minifier]",'[boolean | "terser" | "esbuild"] enable/disable minification, or specify minifier to use (default: esbuild)').option("--manifest [name]","[boolean | string] emit build manifest json").option("--ssrManifest [name]","[boolean | string] emit ssr manifest json").option("--force","[boolean] force the optimizer to ignore the cache and re-bundle (experimental)").option("--emptyOutDir","[boolean] force empty outDir when it's outside of root").option("-w, --watch","[boolean] rebuilds when modules have changed on disk").option("--changelog [assetsFile]","[boolean | string] generate changelog between assetsFile and current build (default: false)").action((async(o,n)=>{G(n);const s=U(n);try{const l=await i({mode:n.mode||"production",command:"build"},n.config,o,n.logLevel);let c=await p();if(l){const{plugins:e,...t}=l.config;c=r(c,t)}const d=r(c,{root:o,base:n.base,mode:n.mode,configFile:n.config,logLevel:n.logLevel,clearScreen:n.clearScreen,optimizeDeps:{force:n.force},build:s},!0);if(await a(d),s.changelog){const i=o||process.cwd(),r=d.build?.outDir||"dist";let a="";if("string"==typeof s.changelog)a=e.resolve(i,s.changelog);else{const o=e.resolve(i,d.ppDevConfig?.syncBackupsDir||"backups");if(!t.existsSync(o))return void g(n.logLevel).warn(u.yellow("backups directory not found, skipping changelog generation"));const s=t.readdirSync(o,{withFileTypes:!0});if(!s.length)return void g(n.logLevel).warn(u.yellow("no backups found, skipping changelog generation"));const r=s.filter((e=>e.isFile()&&e.name.endsWith(".zip"))).reduce(((n,i)=>t.statSync(e.resolve(o,n.name)).mtimeMs>t.statSync(e.resolve(o,i.name)).mtimeMs?n:i),s[0]).name;a=e.resolve(o,r)}const l=e.resolve(i,r);let c="dist-zip";d.ppDevConfig&&(!1===d.ppDevConfig.distZip?c=d.build?.outDir||"dist":"object"==typeof d.ppDevConfig.distZip&&"string"==typeof d.ppDevConfig.distZip.outDir&&(c=d.ppDevConfig.distZip.outDir));const p=new I({oldAssetsPath:a,newAssetsPath:l,destinationPath:e.resolve(i,c)});await p.generateChangelog()}}catch(e){g(n.logLevel).error(u.red(`error during build:\n${e.stack}`),{error:e}),process.exit(1)}finally{O((e=>g(n.logLevel).info(e)))}})),M.command("changelog [oldAssetPath] [newAssetPath]","generate changelog between two assets files/folders").option("--oldAssetsPath <oldAssetsPath>","[string] path to the old assets zip file or folder").option("--newAssetsPath <newAssetsPath>","[string] path to the new assets zip file or folder").option("--destination <destination>","[string] destination folder for the changelog (default: .)").option("--filename <filename>","[string] filename for the changelog (default: CHANGELOG.html)").action((async(t,o,n)=>{G(n);const{oldAssetsPath:i=t,newAssetsPath:s=o,destination:r=".",filename:a="CHANGELOG.html",logLevel:l}=n,c=process.cwd();i&&s||(g(l).error(u.red("error during changelog generation: oldAssetPath and newAssetPath are required")),process.exit(1));const d=e.resolve(c,i),p=e.resolve(c,s),f=e.resolve(c,r),h=new I({oldAssetsPath:d,newAssetsPath:p,destinationPath:f,changelogFilename:a});await h.generateChangelog()})),M.command("generate-icon-font [source] [destination]","generate icon font from SVG files").option("--source <source>","[string] path to the source directory with SVG files").option("--destination <destination>","[string] path to the destination directory to save the generated font files").option("--font-name, -n <fontName>","[string] name of the font to generate (default: 'icon-font')").action((async(t,o,n)=>{G(n);const{source:i=t,destination:s=o,fontName:r="icon-font"}=n,a=process.cwd(),l=e.resolve(a,i),c=e.resolve(a,s),d=new z({sourceDir:l,outputDir:c,fontName:r}),p=g(n.logLevel);p.info(`Generating icon font from SVG files in ${u.dim(l)}`),await d.generate(),p.info(`Icon font generated and saved to ${u.dim(c)}`)})),M.command("optimize [root]","pre-bundle dependencies").option("--force","[boolean] force the optimizer to ignore the cache and re-bundle").action((async(e,t)=>{G(t);try{const o=await i({mode:t.mode||"production",command:"build"},t.config,e,t.logLevel);let n=await p();if(o){const{plugins:e,...t}=o.config;n=r(n,t)}const s=await l(r(n,{root:e,base:t.base,configFile:t.config,logLevel:t.logLevel,mode:t.mode}),"serve");await c(s,t.force,!0)}catch(e){g(t.logLevel).error(u.red(`error when optimizing deps:\n${e.stack}`),{error:e}),process.exit(1)}})),M.command("preview [root]","locally preview production build").option("--host [host]","[string] specify hostname").option("--port <port>","[number] specify port").option("--strictPort","[boolean] exit if specified port is already in use").option("--https","[boolean] use TLS + HTTP/2").option("--open [path]","[boolean | string] open browser on startup").option("--outDir <dir>","[string] output directory (default: dist)").action((async(e,t)=>{G(t);try{const o=await i({mode:t.mode||"production",command:"build"},t.config,e,t.logLevel);let n=await p();if(o){const{plugins:e,...t}=o.config;n=r(n,t)}(await d(r(n,{root:e,base:t.base,configFile:t.config,logLevel:t.logLevel,mode:t.mode,build:{outDir:t.outDir},preview:{port:t.port,strictPort:t.strictPort,host:t.host,https:t.https,open:t.open}}))).printUrls()}catch(e){g(t.logLevel).error(u.red(`error when starting preview server:\n${e.stack}`),{error:e}),process.exit(1)}finally{O((e=>g(t.logLevel).info(e)))}})),M.help(),M.version(f),M.parse();export{O as stopProfiler};
|
|
1
|
+
import*as e from"path";import*as t from"fs";import{performance as o}from"node:perf_hooks";import{cac as n}from"cac";import{loadConfigFromFile as i,loadEnv as s,mergeConfig as r,build as a,resolveConfig as l,optimizeDeps as c,preview as d}from"vite";import{g as p,V as f,i as h,s as m}from"./index-BaGUuU8M.js";import{c as g,a as u,M as b,i as w,b as v,d as y,e as x,f as P,g as T,u as L}from"./plugin-B8BKv3mo.js";import{parse as $}from"url";import*as S from"dir-compare";import F from"diff-match-patch";import{isBinaryFile as A}from"isbinaryfile";import*as D from"os";import*as j from"crypto";import k from"extract-zip";import E from"svgtofont";import"ejs";import"http-proxy-middleware";import"picocolors";import"axios";import"jsdom";import"https";import"memory-cache";import"process";import"child_process";import"console";import"zlib";import"express";function C(e){return null!=e&&!1!==e}const N=[{key:"r",description:"restart the server",async action(e){await e.restart()}},{key:"u",description:"show server url",action(e){e.config.logger.info(""),e.printUrls()}},{key:"o",description:"open in browser",action(e){e.openBrowser()}},{key:"c",description:"clear console",action(e){e.config.logger.clearScreen("error")}},{key:"q",description:"quit",async action(e){await e.close().finally((()=>process.exit()))}},{key:"C",description:"clear proxy cache",action(e){e.cache&&(e.cache.clear(),e.config.logger.info("Proxy cache cleared"))}}];const _=/(.+)(-[a-f0-9]{6,20})(\.[a-z0-9]+)$/i;class I{oldAssetsPath;newAssetsPath;destinationPath;changelogFilename;changelogTemplate='<!DOCTYPE html>\n <html lang="en">\n <head>\n <meta charset="UTF-8" />\n <title>Changelog Diff</title>\n <style>\n tr,\n td {\n padding: 0;\n }\n .diff-file {\n margin-top: 20px;\n border: 1px solid #e1e4e8;\n border-radius: 6px;\n }\n .diff-file-title {\n padding: 10px 20px;\n background-color: #f6f8fa;\n border-bottom: 1px solid #e1e4e8;\n border-radius: 6px 6px 0 0;\n font-weight: bold;\n }\n .diff-file-title .renamed {\n font-weight: normal;\n }\n .diff-file-title .renamed .from {\n color: #cb2431;\n }\n .diff-file-title .renamed .to {\n color: #22863a;\n }\n .diff-file-title .added {\n color: #22863a;\n }\n .diff-file-title .deleted {\n color: #cb2431;\n }\n .diff-file-content {\n }\n .diff-table {\n tab-size: 8;\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n }\n .blob-num {\n position: relative;\n color: #1f2328;\n width: 1%;\n min-width: 50px;\n padding: 0 10px;\n font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;\n font-size: 12px;\n line-height: 20px;\n text-align: right;\n white-space: nowrap;\n vertical-align: top;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n }\n .blob-num.addition {\n background-color: #ccffd8;\n border-color: #1f883e;\n }\n .blob-num.deletion {\n background-color: #ffd7d5;\n border-color: #cf222e;\n }\n .blob-num::before {\n content: attr(data-line-number);\n }\n .blob-code {\n position: relative;\n padding: 0 10px 0 22px;\n vertical-align: top;\n color: #1f2329;\n }\n .blob-code.code-addition {\n background-color: #e6ffec;\n }\n .blob-code.code-deletion {\n background-color: #ffebe9;\n }\n .blob-code.skip,\n .blob-code.message {\n text-align: center;\n }\n .blob-code.skip .blob-code-inner,\n .blob-code.message .blob-code-inner {\n font-weight: bold;\n color: #6a737d;\n padding: 10px 0;\n }\n .blob-code-inner {\n display: table-cell;\n overflow: visible;\n font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;\n font-size: 12px;\n word-wrap: anywhere;\n white-space: pre-wrap;\n }\n .blob-code-inner::before {\n content: attr(data-code-prefix);\n position: absolute;\n top: 1px;\n left: 8px;\n padding-right: 8px;\n }\n </style>\n </head>\n <body>\n <h1>Changelog Diff</h1>\n\n %FILES%\n </body>\n </html>';diffFileTemplateHandler;diffLineTemplateHandler;contextLines=3;logger;constructor(t){const{oldAssetsPath:o,newAssetsPath:n,destinationPath:i,changelogTemplate:s,diffFileTemplateHandler:r,diffLineTemplateHandler:a,changelogFilename:l,contextLines:c}=t;if(this.logger=g(),!o||!n||!i)throw new Error("Previous assets path, current assets path and destination path are required");if(o===n)throw new Error("Previous and current assets paths must be different");if(!this.isExists(o))throw new Error(`Previous assets path ${o} does not exist`);if(!this.isExists(n))throw new Error(`Current assets path ${n} does not exist`);if(this.isZipFile(o)){const t=e.resolve(D.tmpdir(),j.createHash("md5").update(o).digest("hex"));this.oldAssetsPath=this.unzipFile(o,t).then((()=>this.normalizeAssetFolderPath(t))).then((e=>{if(this.isEmptyFolder(e))throw new Error(`Previous assets path ${e} is empty`);return e}))}else{if(!this.isFolder(o))throw new Error(`Invalid previous assets path ${o}. It must be a folder or a zip file`);{const e=this.normalizeAssetFolderPath(o);if(this.isEmptyFolder(e))throw new Error(`Previous assets path ${e} is empty`);this.oldAssetsPath=Promise.resolve(e)}}if(this.isZipFile(n)){const t=e.resolve(D.tmpdir(),j.createHash("md5").update(n).digest("hex"));this.newAssetsPath=this.unzipFile(n,t).then((()=>this.normalizeAssetFolderPath(t))).then((e=>{if(this.isEmptyFolder(e))throw new Error(`Current assets path ${e} is empty`);return e}))}else{if(!this.isFolder(n))throw new Error(`Invalid current assets path ${n}. It must be a folder or a zip file`);{const e=this.normalizeAssetFolderPath(n);if(this.isEmptyFolder(e))throw new Error(`Current assets path ${n} is empty`);this.newAssetsPath=Promise.resolve(e)}}this.destinationPath=i,this.mkdirpSync(this.destinationPath),this.changelogFilename=l||"CHANGELOG.html",s&&(this.templateIsValid(s)?this.changelogTemplate=s:this.logger.warn(u.yellow("Invalid changelog template, using default"))),"function"==typeof r&&(this.diffFileTemplateHandler=r),"function"==typeof a&&(this.diffLineTemplateHandler=a),c&&(this.contextLines=c)}templateIsValid(e){return e.includes("%FILES%")}isExists(e){return t.existsSync(e)}isZipFile(e){return e.endsWith(".zip")}isFolder(e){return t.lstatSync(e).isDirectory()}isEmptyFolder(e){return 0===t.readdirSync(e,{withFileTypes:!0}).length}mkdirpSync(e){t.existsSync(e)||t.mkdirSync(e,{recursive:!0})}async unzipFile(e,o){return t.rmSync(o,{force:!0,recursive:!0}),k(e,{dir:o})}normalizeAssetFolderPath(o){const n=t.readdirSync(o);return 1===n.length&&t.lstatSync(e.join(o,n[0])).isDirectory()?this.normalizeAssetFolderPath(e.join(o,n[0])):o}pathToPosix(e){return e.replace(/\\/g,"/")}diffTableTemplate(e){return`<table class="diff-table">\n <tbody>\n ${e}\n </tbody>\n </table>`}getDiffTableHTML(e){const t=e.filter(((e,t,o)=>0!==e.lineType||(t>=0&&t<this.contextLines||t>o.length-(this.contextLines+1)&&t<=o.length-1||o.slice(t-this.contextLines,t+this.contextLines+1).some((e=>0!==e.lineType))))).map(((e,t,o)=>{if(t>0){const n=o[t-1];if(e.lineNumber-n.lineNumber>1)return[{lineNumber:-1,lineContent:"",lineType:0},e]}return[e]})).flat().map((e=>this.diffLineHTML(e))).join("");return this.diffTableTemplate(t)}diffLineMessageTemplate(e){return`<tr>\n <td class="blob-num"></td>\n <td class="blob-num"></td>\n <td class="blob-code message">\n <span class="blob-code-inner">${e}</span>\n </td>\n </tr>`}diffLineSkipTemplate(){return'<tr>\n <td class="blob-num"></td>\n <td class="blob-num"></td>\n <td class="blob-code skip">\n <span class="blob-code-inner">Skip</span>\n </td>\n </tr>'}diffLineTemplate(e){const{lineNumber:t,lineContent:o,lineType:n}=e,i=1===n?"addition":-1===n?"deletion":"";return`<tr>\n <td\n class="blob-num ${i}${"addition"===i?" empty":""}"\n ${"addition"!==i?` data-line-number="${t}"`:""}\n ></td>\n <td\n class="blob-num ${i}${"deletion"===i?" empty":""}"\n ${"deletion"!==i?` data-line-number="${t}"`:""}\n ></td>\n <td class="blob-code ${1===n?"code-addition":-1===n?"code-deletion":""}">\n <span class="blob-code-inner" data-code-prefix="${1===n?"+":-1===n?"-":" "}">${s=o??"",s.replace(/[\u00A0-\u9999<>&]/g,(e=>"&#"+e.charCodeAt(0)+";"))}</span>\n </td>\n </tr>`;var s}diffLineHTML(e){if(this.diffLineTemplateHandler)return this.diffLineTemplateHandler(e);const{lineNumber:t}=e;return-1===t?this.diffLineSkipTemplate():this.diffLineTemplate(e)}diffFileTemplate(e,t){return this.diffFileTemplateHandler?this.diffFileTemplateHandler(e,t):`<div class="diff-file">\n <div class="diff-file-title">${e}</div>\n <div class="diff-file-content">${t}</div>\n </div>`}async generateAssetFoldersDiff(){this.logger.info(u.blue(`Comparing asset folders ${await this.oldAssetsPath} and ${await this.newAssetsPath}`));const e=await S.compare(await this.oldAssetsPath,await this.newAssetsPath,{compareContent:!0,skipSymlinks:!0,compareSize:!0,compareDate:!1,compareNameHandler:(e,t)=>(_.test(e)&&(e=e.replace(_,"$1$3")),_.test(t)&&(t=t.replace(_,"$1$3")),0===e.localeCompare(t)?0:e.localeCompare(t)>0?1:-1)});return e.diffSet?.filter((e=>"equal"!==e.state||e.name1!==e.name2))||[]}async generateAssetFilesDiff(e,t){const o=new F,n=o.diff_linesToChars_(e,t),i=o.diff_main(n.chars1,n.chars2,!1);o.diff_charsToLines_(i,n.lineArray);let s=0;return i.map((e=>{const[t,o]=e,n=o.endsWith("\n")?o.split("\n").length-1:o.split("\n").length,i=o.split("\n").map(((e,o)=>({lineContent:e,lineNumber:s+o+1,lineType:t}))).slice(0,n);return-1!==t&&(s+=n),i})).flat()}async generateFilesDiff(o){if("equal"===o.state){const t=this.pathToPosix(e.join(".",o.relativePath,o.name1??"")),n=this.pathToPosix(e.join(".",o.relativePath,o.name2??""));return this.diffFileTemplate(`<span class="renamed"\n >Renamed <span class="from">${t}</span> -> <span class="to">${n}</span></span\n >`,this.diffTableTemplate(this.diffLineMessageTemplate("No changes")))}const n=o.path1&&o.name1?e.join(o.path1,o.name1):null,i=o.path2&&o.name2?e.join(o.path2,o.name2):null,s=this.pathToPosix(e.join(".",o.relativePath,(o.name1||o.name2)??""));if("left"===o.state&&n)return this.diffFileTemplate(`<span class="removed">Removed ${s}</span>`,this.diffTableTemplate(this.diffLineMessageTemplate("File removed")));if("right"===o.state&&i)return this.diffFileTemplate(`<span class="added">Added ${s}</span>`,this.diffTableTemplate(this.diffLineMessageTemplate("File added")));if("distinct"===o.state&&n&&i){const r=this.pathToPosix(e.join(".",o.relativePath,o.name1??"")),a=this.pathToPosix(e.join(".",o.relativePath,o.name2??"")),l=o.name1!==o.name2?`<span class="renamed"\n >Renamed <span class="from">${r}</span> -> <span class="to">${a}</span></span\n >`:s;return this.diffFileTemplate(l,await A(n)||await A(i)?this.diffTableTemplate(this.diffLineMessageTemplate("Binary file")):this.getDiffTableHTML(await this.generateAssetFilesDiff(t.readFileSync(n,"utf-8"),t.readFileSync(i,"utf-8"))))}return""}async generateChangelog(){this.logger.info(u.green("Generating changelog"));const o=await this.generateAssetFoldersDiff(),n=(await Promise.all(o.map((e=>this.generateFilesDiff(e))))).join("");this.logger.info(u.green("Writing changelog file"));const i=this.changelogTemplate.split("%FILES%");i.splice(1,0,n);const s=i.join("");t.writeFileSync(e.join(this.destinationPath,this.changelogFilename),s),this.logger.info(u.green(`Changelog file written to ${e.join(this.destinationPath,this.changelogFilename)}`))}}class z{sourceDir;outputDir;fontName;constructor(e){this.sourceDir=e.sourceDir,this.outputDir=e.outputDir,this.fontName=e.fontName}async generate(){await E({src:this.sourceDir,dist:this.outputDir,fontName:this.fontName,css:!0,typescript:!0,startUnicode:59905,svgicons2svgfont:{fontHeight:1024}})}}const M=n("pp-dev");let H=global.__pp_dev_profile_session,R=0;const O=o=>{if(H)return new Promise(((n,i)=>{H.post("Profiler.stop",((s,{profile:r})=>{if(s)i(s);else{const i=e.resolve(`./pp-dev-profile-${R++}.cpuprofile`);t.writeFileSync(i,JSON.stringify(r)),o(u.yellow(`CPU profile written to ${u.white(u.dim(i))}`)),H=void 0,n()}}))}))},G=e=>{for(const[t,o]of Object.entries(e))Array.isArray(o)&&(e[t]=o[o.length-1])};function U(e){const t={...e};return delete t["--"],delete t.c,delete t.config,delete t.base,delete t.l,delete t.logLevel,delete t.clearScreen,delete t.d,delete t.debug,delete t.f,delete t.filter,delete t.m,delete t.mode,t}M.option("-c, --config <file>","[string] use specified config file").option("--base <path>","[string] public base path (default: /)").option("-l, --logLevel <level>","[string] info | warn | error | silent").option("--clearScreen","[boolean] allow/disable clear screen when logging").option("-d, --debug [feat]","[string | boolean] show debug logs").option("-f, --filter <filter>","[string] filter debug logs").option("-m, --mode <mode>","[string] set env mode"),M.command("[root]","start dev server").alias("serve").alias("dev").option("--host [host]","[string] specify hostname").option("--port <port>","[number] specify port").option("--https","[boolean] use TLS + HTTP/2").option("--open [path]","[boolean | string] open browser on startup").option("--cors","[boolean] enable CORS").option("--strictPort","[boolean] exit if specified port is already in use").option("--force","[boolean] force the optimizer to ignore the cache and re-bundle").action((async(e,t)=>{G(t);const{createServer:n}=await import("vite");try{const a=await i({mode:t.mode||"development",command:"serve"},t.config,e,t.logLevel);let l=await p();const c=s(t.mode||"development",e??process.cwd(),"");if(c&&Object.keys(c).forEach((e=>{e.startsWith("MI_")&&(process.env[e]=c[e])})),a){const{plugins:e,...t}=a.config;l=r(l,t)}const d=await n(r(l,{root:e,base:t.base,mode:t.mode,configFile:t.config,logLevel:t.logLevel,clearScreen:t.clearScreen,optimizeDeps:{force:t.force},server:U(t),customLogger:g(t.logLevel)},!0));if(!d.config.base||"/"===d.config.base)throw new Error('base cannot be equal to "/" or empty string');if(!d.httpServer)throw new Error("HTTP server not available");await d.listen();const h=g(t.logLevel),m=global.__pp_dev_start_time??!1,b=m?u.dim(`ready in ${u.reset(u.bold(Math.ceil(o.now()-m)))} ms`):"";h.info(`\n ${u.green(`${u.bold("PP-DEV")} v${f}`)} ${b}\n`),d.printUrls(),function(e,t){if(!e.httpServer||!process.stdin.isTTY||process.env.CI)return;e._shortcutsOptions=t;const o=g();t.print&&o.info(u.dim(u.green(" ➜"))+u.dim(" press ")+u.bold("h")+u.dim(" to show help"));const n=(t.customShortcuts??[]).filter(C).concat(N);let i=!1;const s=async t=>{if(""===t||""===t)return void await e.close().finally((()=>process.exit(1)));if(i)return;"h"===t&&o.info(["",u.bold(" Shortcuts"),...n.map((e=>u.dim(" press ")+u.bold(e.key)+u.dim(` to ${e.description}`)))].join("\n"));const s=n.find((e=>e.key===t));s&&(i=!0,await s.action(e),i=!1)};process.stdin.setRawMode(!0),process.stdin.on("data",s).setEncoding("utf8").resume(),e.httpServer.on("close",(()=>{process.stdin.off("data",s).pause()}))}(d,{print:!0,customShortcuts:[...H?[{key:"p",description:"start/stop the profiler",async action(e){if(H)await O(h.info);else{const e=await import("node:inspector").then((e=>e.default));await new Promise((t=>{H=new e.Session,H.connect(),H.post("Profiler.enable",(()=>{H?.post("Profiler.start",(()=>{h.info("Profiler started"),t()}))}))}))}}}]:[],{key:"l",description:"proxy re-login",action(e){e.ws.send({type:"custom",event:"redirect",data:{url:`/auth/index/logout?proxyRedirect=${encodeURIComponent("/")}`}})}}]})}catch(e){const o=g(t.logLevel);o.error(u.red(`error when starting dev server:\n${e.stack}`),{error:e}),O(o.info),process.exit(1)}})),M.command("next [root]","start Next.js development server with pp-dev integration").alias("next-serve").alias("next-dev").option("--host [host]","[string] specify hostname").option("--port <port>","[number] specify port",{default:3e3}).option("--https","[boolean] use TLS + HTTP/2").option("--open [path]","[boolean | string] open browser on startup").option("--cors","[boolean] enable CORS").option("--strictPort","[boolean] exit if specified port is already in use").option("--force","[boolean] force the optimizer to ignore the cache and re-bundle").action((async(e,t)=>{G(t);try{if(!h())throw new Error("Next.js is required but not available. Please install Next.js as a dependency:\nnpm install next@^13\n\nThis package requires Next.js >=13 <16 as a peer dependency.");const{next:o}=await m(),{join:n,basename:i}=await import("path"),{createServer:r}=await import("http"),{default:a}=(await import("next/dist/server/config.js")).default,l=g(),c=U(t),d=s(t.mode||"development",e??process.cwd(),"");d&&Object.keys(d).forEach((e=>{e.startsWith("MI_")&&(process.env[e]=d[e])}));const p=e?n(process.cwd(),e):process.cwd();l.info(p);const f=await a("development",p);let S=f?.experimental?.ppDev||f?.ppDev||{};if(0===Object.keys(S).length)try{const{getConfig:e}=await import("./index-BaGUuU8M.js").then((e=>e.c)),t=await e();Object.keys(t).length>0?(S=t,l.info(u.blue("🔧 Loaded pp-dev config from standalone config file"))):l.info(u.yellow("⚠️ No pp-dev config found in Next.js config or standalone file, using defaults"))}catch(e){l.info(u.yellow("⚠️ Failed to load standalone pp-dev config, using defaults")),console.debug("Error loading standalone config:",e)}else l.info(u.blue("🔧 Loaded pp-dev config from Next.js config"));const{backendBaseURL:F=process.env.MI_BACKEND_URL||"http://localhost:8080",portalPageId:A=parseInt(process.env.MI_PORTAL_PAGE_ID||"1"),templateLess:D=!0,v7Features:j=!0,disableSSLValidation:k=!1,enableProxyCache:E=!0,proxyCacheTTL:C=6e5,personalAccessToken:N=process.env.MI_ACCESS_TOKEN,distZip:_=!1,syncBackupsDir:I="./backups",miHudLess:z=!1}=S;let M=S.templateName;if(!M)try{const{getPkg:e}=await import("./index-BaGUuU8M.js").then((e=>e.c));M=e().name}catch(e){M=i(p)}let H=D?"/p":"/pl";H+=`/${M}`;const R=o({dev:!0,hostname:c.host||"localhost",port:c.port,dir:p,conf:{...f,basePath:H,assetPrefix:H}});if(await R.prepare(),H.endsWith("/")||(H+="/"),"/"===H)throw new Error('basePath cannot be equal to "/" or equal to empty string');H.substring(0,H.lastIndexOf("/"));l.info(u.green("✅ Next.js app prepared successfully")),l.info(u.blue(`🔧 pp-dev plugin configured for template: ${M}`)),l.info(u.blue(`🔧 Base path configured: ${H}`)),F&&(l.info(u.blue(`🌐 Backend URL: ${F}`)),l.info(u.blue(`🆔 Portal Page ID: ${A}`)));const O=R.getRequestHandler(),G="number"==typeof c.port?c.port:3e3,W="string"==typeof c.host?c.host:"localhost",q=new Set,B=r((async(e,t)=>{try{const o=e.url||"/",n=o.split("?")[0];let i=$(o,!0);if(Z.length>0){if(n.startsWith("/_next/")||"/favicon.ico"===n||n.startsWith("/__nextjs_")||n.startsWith("/api/")){if(K.length>0){let l=0;const c=()=>{if(l>=K.length)return void s();const o=K[l];l++,o(e,t,c)};return void c()}return void s()}let r=0;const a=()=>{if(r>=Z.length)return void s();const o=Z[r];r++,o(e,t,a)};return void a()}async function s(){if(n.startsWith(H)){const t=n.substring(H.length);e.url=t||"/",i=$(t,!0)}else if(n===H.replace(/\/$/,""))e.url="/",i=$("/",!0);else if(n.startsWith("/_next/")||"/favicon.ico"===n||n.startsWith("/__nextjs_"));else if("/"===n)return t.writeHead(302,{Location:H}),void t.end();await O(e,t,i)}s()}catch(d){console.error("[DEBUG] Error:",d),t.statusCode=500,t.end("Internal Server Error")}}));let V=null,Z=[],K=[];if(F){const e=new URL(F).host,t={headers:{host:e,referer:F,origin:F.replace(/^(https?:\/\/)([^/]+)(\/.*)?$/i,"$1$2")},portalPageId:A,appId:A,templateLess:D,disableSSLValidation:k,v7Features:j,personalAccessToken:N??process.env.MI_ACCESS_TOKEN};V=new b(F,t);const o=w(H,M),n=(e,t,n)=>{o(e,t,n)};if(K.push(n),Z.push(n),E){let e=+C;(!e||Number.isNaN(e)||e<0)&&(e=6e5);const t={middlewares:{use:e=>e},config:{logger:console}},o=v({devServer:t,ttl:e}),n=(e,t,n)=>{o(e,t,n)};Z.push(n),l.info(u.blue(`🔧 Proxy cache middleware added with TTL: ${e}ms`))}const i=H.endsWith("/")?H.substring(0,H.length-1):H,s={middlewares:{use:e=>e},config:{logger:console}},r=y({devServer:s,baseURL:F,proxyIgnore:["/@vite","/@metricinsights","/@",i,"/_next","/favicon.ico","/__nextjs_","/api"],disableSSLValidation:k,miAPI:V}),a=(e,t,o)=>{r(e,t,o)};Z.push(a);const c=new RegExp(`^((${H})|/)$`),d=x(c,V,{base:H,v7Features:j}),p=(e,t,o)=>{d(e,t,o)};Z.push(p);const f=P,h=(e,t,o)=>{if(e.url?.startsWith("/@api/")){f(e,t,(()=>{}))}else o()};K.push(h),Z.push(h);const m=T((e=>e.split("?")[0].endsWith("index.html")),((t,o)=>Buffer.from(L(e,o.headers.host??"",V.buildPage(t,z))))),g=(e,t,o)=>{m(e,t,o)};Z.push(g),l.info(u.blue(`🔧 ${Z.length} pp-dev middlewares initialized`)),l.info(u.blue(`🔧 ${K.length} essential middlewares for internal routes`)),l.info(u.blue(`🔧 MiAPI initialized for backend: ${F}`)),l.info(u.blue(`🔧 Portal Page ID: ${A}`))}B.listen(G,W,(()=>{l.info(u.green(`✅ pp-dev Next.js server running at http://${W}:${G}`)),l.info(u.blue(`📱 Next.js app accessible at http://${W}:${G}${H}`)),l.info(u.blue("🔧 Base path handling active")),B.on("connection",(e=>{q.add(e),e.on("close",(()=>q.delete(e)))}));const e=async e=>{l.info(u.yellow(`\n🛑 Received ${e}, shutting down gracefully...`));const t=setTimeout((()=>{l.info(u.yellow("⏰ Shutdown timeout reached, forcing exit")),process.exit(0)}),5e3);try{for(const e of Array.from(q))e.destroy();q.clear(),await new Promise((e=>{B.close((()=>{l.info(u.yellow("🛑 HTTP server closed")),e()}))})),R&&"function"==typeof R.close&&(await R.close(),l.info(u.yellow("🛑 Next.js app closed"))),clearTimeout(t),l.info(u.green("✅ Graceful shutdown completed")),process.exit(0)}catch(e){clearTimeout(t),l.error(u.red(`❌ Error during graceful shutdown: ${e}`)),process.exit(1)}};let t=process;if("function"!=typeof process.on){const e=globalThis.process||global.process;e&&"function"==typeof e.on&&(t=e,l.info(u.green("✅ Using global process object for event handlers")))}if("function"==typeof t.on)try{t.on("SIGINT",(()=>e("SIGINT"))),t.on("SIGTERM",(()=>e("SIGTERM"))),t.on("uncaughtException",(t=>{l.error(u.red(`❌ Uncaught Exception: ${t}`)),e("uncaughtException")})),t.on("unhandledRejection",((t,o)=>{l.error(u.red(`❌ Unhandled Rejection at: ${o}, reason: ${t}`)),e("unhandledRejection")})),l.info(u.green("✅ Process event handlers registered successfully"))}catch(e){l.warn(u.yellow(`⚠️ Failed to register process event handlers: ${e}`))}else l.warn(u.yellow("⚠️ process.on is not available, graceful shutdown handlers will not be registered")),l.info(u.blue("💡 This might be due to bundling or environment constraints"))}))}catch(e){const t=g("error");e instanceof Error&&e.message.includes("Next.js is required")?(t.error(u.red("❌ Next.js Peer Dependency Error:")),t.error(u.red(e.message)),t.error(u.yellow("\n💡 To fix this issue:")),t.error(u.blue(" 1. Install Next.js in your project:")),t.error(u.white(" npm install next@^15")),t.error(u.blue(" 2. Or use yarn:")),t.error(u.white(" yarn add next@^15")),t.error(u.blue(" 3. Or use pnpm:")),t.error(u.white(" pnpm add next@^15")),t.error(u.yellow("\n📖 For more information, see:")),t.error(u.blue(" https://nextjs.org/docs/getting-started"))):t.error(u.red(`❌ Failed to start Next.js server: ${e}`)),process.exit(1)}})),M.command("build [root]","build for production").option("--target <target>","[string] transpile target (default: 'modules')").option("--outDir <dir>","[string] output directory (default: dist)").option("--assetsDir <dir>","[string] directory under outDir to place assets in (default: assets)").option("--assetsInlineLimit <number>","[number] static asset base64 inline threshold in bytes (default: 4096)").option("--ssr [entry]","[string] build specified entry for server-side rendering").option("--sourcemap [output]",'[boolean | "inline" | "hidden"] output source maps for build (default: false)').option("--minify [minifier]",'[boolean | "terser" | "esbuild"] enable/disable minification, or specify minifier to use (default: esbuild)').option("--manifest [name]","[boolean | string] emit build manifest json").option("--ssrManifest [name]","[boolean | string] emit ssr manifest json").option("--force","[boolean] force the optimizer to ignore the cache and re-bundle (experimental)").option("--emptyOutDir","[boolean] force empty outDir when it's outside of root").option("-w, --watch","[boolean] rebuilds when modules have changed on disk").option("--changelog [assetsFile]","[boolean | string] generate changelog between assetsFile and current build (default: false)").action((async(o,n)=>{G(n);const s=U(n);try{const l=await i({mode:n.mode||"production",command:"build"},n.config,o,n.logLevel);let c=await p();if(l){const{plugins:e,...t}=l.config;c=r(c,t)}const d=r(c,{root:o,base:n.base,mode:n.mode,configFile:n.config,logLevel:n.logLevel,clearScreen:n.clearScreen,optimizeDeps:{force:n.force},build:s},!0);if(await a(d),s.changelog){const i=o||process.cwd(),r=d.build?.outDir||"dist";let a="";if("string"==typeof s.changelog)a=e.resolve(i,s.changelog);else{const o=e.resolve(i,d.ppDevConfig?.syncBackupsDir||"backups");if(!t.existsSync(o))return void g(n.logLevel).warn(u.yellow("backups directory not found, skipping changelog generation"));const s=t.readdirSync(o,{withFileTypes:!0});if(!s.length)return void g(n.logLevel).warn(u.yellow("no backups found, skipping changelog generation"));const r=s.filter((e=>e.isFile()&&e.name.endsWith(".zip"))).reduce(((n,i)=>t.statSync(e.resolve(o,n.name)).mtimeMs>t.statSync(e.resolve(o,i.name)).mtimeMs?n:i),s[0]).name;a=e.resolve(o,r)}const l=e.resolve(i,r);let c="dist-zip";d.ppDevConfig&&(!1===d.ppDevConfig.distZip?c=d.build?.outDir||"dist":"object"==typeof d.ppDevConfig.distZip&&"string"==typeof d.ppDevConfig.distZip.outDir&&(c=d.ppDevConfig.distZip.outDir));const p=new I({oldAssetsPath:a,newAssetsPath:l,destinationPath:e.resolve(i,c)});await p.generateChangelog()}}catch(e){g(n.logLevel).error(u.red(`error during build:\n${e.stack}`),{error:e}),process.exit(1)}finally{O((e=>g(n.logLevel).info(e)))}})),M.command("changelog [oldAssetPath] [newAssetPath]","generate changelog between two assets files/folders").option("--oldAssetsPath <oldAssetsPath>","[string] path to the old assets zip file or folder").option("--newAssetsPath <newAssetsPath>","[string] path to the new assets zip file or folder").option("--destination <destination>","[string] destination folder for the changelog (default: .)").option("--filename <filename>","[string] filename for the changelog (default: CHANGELOG.html)").action((async(t,o,n)=>{G(n);const{oldAssetsPath:i=t,newAssetsPath:s=o,destination:r=".",filename:a="CHANGELOG.html",logLevel:l}=n,c=process.cwd();i&&s||(g(l).error(u.red("error during changelog generation: oldAssetPath and newAssetPath are required")),process.exit(1));const d=e.resolve(c,i),p=e.resolve(c,s),f=e.resolve(c,r),h=new I({oldAssetsPath:d,newAssetsPath:p,destinationPath:f,changelogFilename:a});await h.generateChangelog()})),M.command("generate-icon-font [source] [destination]","generate icon font from SVG files").option("--source <source>","[string] path to the source directory with SVG files").option("--destination <destination>","[string] path to the destination directory to save the generated font files").option("--font-name, -n <fontName>","[string] name of the font to generate (default: 'icon-font')").action((async(t,o,n)=>{G(n);const{source:i=t,destination:s=o,fontName:r="icon-font"}=n,a=process.cwd(),l=e.resolve(a,i),c=e.resolve(a,s),d=new z({sourceDir:l,outputDir:c,fontName:r}),p=g(n.logLevel);p.info(`Generating icon font from SVG files in ${u.dim(l)}`),await d.generate(),p.info(`Icon font generated and saved to ${u.dim(c)}`)})),M.command("optimize [root]","pre-bundle dependencies").option("--force","[boolean] force the optimizer to ignore the cache and re-bundle").action((async(e,t)=>{G(t);try{const o=await i({mode:t.mode||"production",command:"build"},t.config,e,t.logLevel);let n=await p();if(o){const{plugins:e,...t}=o.config;n=r(n,t)}const s=await l(r(n,{root:e,base:t.base,configFile:t.config,logLevel:t.logLevel,mode:t.mode}),"serve");await c(s,t.force,!0)}catch(e){g(t.logLevel).error(u.red(`error when optimizing deps:\n${e.stack}`),{error:e}),process.exit(1)}})),M.command("preview [root]","locally preview production build").option("--host [host]","[string] specify hostname").option("--port <port>","[number] specify port").option("--strictPort","[boolean] exit if specified port is already in use").option("--https","[boolean] use TLS + HTTP/2").option("--open [path]","[boolean | string] open browser on startup").option("--outDir <dir>","[string] output directory (default: dist)").action((async(e,t)=>{G(t);try{const o=await i({mode:t.mode||"production",command:"build"},t.config,e,t.logLevel);let n=await p();if(o){const{plugins:e,...t}=o.config;n=r(n,t)}(await d(r(n,{root:e,base:t.base,configFile:t.config,logLevel:t.logLevel,mode:t.mode,build:{outDir:t.outDir},preview:{port:t.port,strictPort:t.strictPort,host:t.host,https:t.https,open:t.open}}))).printUrls()}catch(e){g(t.logLevel).error(u.red(`error when starting preview server:\n${e.stack}`),{error:e}),process.exit(1)}finally{O((e=>g(t.logLevel).info(e)))}})),M.help(),M.version(f),M.parse();export{O as stopProfiler};
|
|
2
2
|
//# sourceMappingURL=cli.js.map
|
package/dist/esm/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sources":["../../../src/shortcuts.ts","../../../src/lib/changelog-generator.ts","../../../src/lib/icon-font-generator.ts","../../../src/cli.ts"],"sourcesContent":[null,null,null,null],"names":["isDefined","value","BASE_SHORTCUTS","key","description","action","server","restart","config","logger","info","printUrls","openBrowser","clearScreen","close","finally","process","exit","cache","clear","fileNameWithHashRegEx","ChangelogGenerator","oldAssetsPath","newAssetsPath","destinationPath","changelogFilename","changelogTemplate","diffFileTemplateHandler","diffLineTemplateHandler","contextLines","constructor","opts","this","createLogger","Error","isExists","isZipFile","unzipDestinationPath","path","resolve","os","tmpdir","crypto","createHash","update","digest","unzipFile","then","normalizeAssetFolderPath","isEmptyFolder","isFolder","Promise","mkdirpSync","templateIsValid","warn","colors","yellow","template","includes","assetPath","fs","existsSync","endsWith","lstatSync","isDirectory","readdirSync","withFileTypes","length","dir","mkdirSync","recursive","rmSync","force","extractZip","folderContent","join","pathToPosix","replace","diffTableTemplate","diffLinesHTML","getDiffTableHTML","diffLines","filter","index","array","lineType","slice","some","line","map","prevLine","lineNumber","lineContent","flat","diffLineHTML","diffLineMessageTemplate","message","diffLineSkipTemplate","diffLineTemplate","diffLine","numClass","str","i","charCodeAt","diffFileTemplate","filename","htmlDiff","generateAssetFoldersDiff","blue","dirDiff","dirCompare","compare","compareContent","skipSymlinks","compareSize","compareDate","compareNameHandler","name1","name2","test","localeCompare","diffSet","d","state","generateAssetFilesDiff","oldFileString","newFileString","dmp","DiffMatchPatch","linesChars","diff_linesToChars_","linesDiff","diff_main","chars1","chars2","diff_charsToLines_","lineArray","linesCount","split","lines","generateFilesDiff","difference","filepath1","relativePath","filepath2","assetFile1Path","path1","assetFile2Path","path2","filepath","filenameTitle","isBinaryFile","readFileSync","generateChangelog","green","all","templateArray","splice","changelogHTML","writeFileSync","IconFontGenerator","sourceDir","outputDir","fontName","options","generate","svgToFont","src","dist","css","typescript","startUnicode","svgicons2svgfont","fontHeight","cli","cac","profileSession","global","__pp_dev_profile_session","profileCount","stopProfiler","log","res","rej","post","err","profile","outPath","JSON","stringify","white","dim","undefined","filterDuplicateOptions","Object","entries","Array","isArray","cleanOptions","ret","c","base","l","logLevel","debug","f","m","mode","option","command","alias","async","root","createServer","import","configFromFile","loadConfigFromFile","getViteConfig","envVars","loadEnv","cwd","keys","forEach","startsWith","env","plugins","fileConfig","mergeConfig","configFile","optimizeDeps","customLogger","httpServer","listen","ppDevStartTime","__pp_dev_start_time","startupDurationString","reset","bold","Math","ceil","performance","now","VERSION","stdin","isTTY","CI","_shortcutsOptions","print","shortcuts","customShortcuts","concat","actionRunning","onInput","input","shortcut","find","setRawMode","on","setEncoding","resume","off","pause","bindShortcuts","inspector","r","default","Session","connect","ws","send","type","event","data","url","encodeURIComponent","e","error","red","stack","isNextAvailable","next","safeNextImport","basename","loadConfig","projectRoot","ppDevConfig","experimental","ppDev","getConfig","n","standaloneConfig","console","backendBaseURL","MI_BACKEND_URL","portalPageId","parseInt","MI_PORTAL_PAGE_ID","templateLess","v7Features","disableSSLValidation","enableProxyCache","proxyCacheTTL","personalAccessToken","MI_ACCESS_TOKEN","distZip","syncBackupsDir","miHudLess","templateName","getPkg","name","app","dev","hostname","host","port","conf","basePath","assetPrefix","prepare","substring","lastIndexOf","handle","getRequestHandler","openSockets","Set","req","originalUrl","originalPathname","parsedUrl","parse","fullMiddlewareChain","essentialMiddlewareChain","middlewareIndex","runEssentialMiddleware","processNextJSRequest","middleware","runMiddleware","nextPath","writeHead","Location","end","statusCode","mi","baseUrlHost","URL","miConfig","headers","referer","origin","appId","MiAPI","ppRedirectMiddleware","initPPRedirect","ppRedirectWrapper","push","ttl","Number","isNaN","mockDevServer","middlewares","use","fn","proxyCacheMiddleware","initProxyCache","devServer","proxyCacheWrapper","baseWithoutTrailingSlash","mockProxyDevServer","proxyPassMiddlewareInstance","proxyPassMiddleware","baseURL","proxyIgnore","miAPI","proxyPassWrapper","isIndexRegExp","RegExp","loadPPDataMiddleware","initLoadPPData","loadPPDataWrapper","internalServerMiddleware","internalServer","internalServerWrapper","rewriteResponseMiddleware","initRewriteResponse","response","Buffer","from","urlReplacer","buildPage","rewriteResponseWrapper","socket","add","delete","gracefulShutdown","signal","shutdownTimeout","setTimeout","destroy","clearTimeout","processObj","globalProcess","globalThis","reason","promise","buildOptions","buildConfig","build","changelog","executionRoot","outDir","backupsDirPath","backups","latestBackup","isFile","reduce","latest","current","statSync","mtimeMs","currentAssetFilePath","changelogDestination","changelogGenerator","oldAssetPath","newAssetPath","oldPath","newPath","destination","fullOldPath","fullNewPath","fullDestination","source","destDir","fullSourceDir","fullDestDir","iconFontGenerator","optimizeConfig","resolveConfig","preview","strictPort","https","open","help","version"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sources":["../../../src/shortcuts.ts","../../../src/lib/changelog-generator.ts","../../../src/lib/icon-font-generator.ts","../../../src/cli.ts"],"sourcesContent":[null,null,null,null],"names":["isDefined","value","BASE_SHORTCUTS","key","description","action","server","restart","config","logger","info","printUrls","openBrowser","clearScreen","close","finally","process","exit","cache","clear","fileNameWithHashRegEx","ChangelogGenerator","oldAssetsPath","newAssetsPath","destinationPath","changelogFilename","changelogTemplate","diffFileTemplateHandler","diffLineTemplateHandler","contextLines","constructor","opts","this","createLogger","Error","isExists","isZipFile","unzipDestinationPath","path","resolve","os","tmpdir","crypto","createHash","update","digest","unzipFile","then","normalizeAssetFolderPath","isEmptyFolder","isFolder","Promise","mkdirpSync","templateIsValid","warn","colors","yellow","template","includes","assetPath","fs","existsSync","endsWith","lstatSync","isDirectory","readdirSync","withFileTypes","length","dir","mkdirSync","recursive","rmSync","force","extractZip","folderContent","join","pathToPosix","replace","diffTableTemplate","diffLinesHTML","getDiffTableHTML","diffLines","filter","index","array","lineType","slice","some","line","map","prevLine","lineNumber","lineContent","flat","diffLineHTML","diffLineMessageTemplate","message","diffLineSkipTemplate","diffLineTemplate","diffLine","numClass","str","i","charCodeAt","diffFileTemplate","filename","htmlDiff","generateAssetFoldersDiff","blue","dirDiff","dirCompare","compare","compareContent","skipSymlinks","compareSize","compareDate","compareNameHandler","name1","name2","test","localeCompare","diffSet","d","state","generateAssetFilesDiff","oldFileString","newFileString","dmp","DiffMatchPatch","linesChars","diff_linesToChars_","linesDiff","diff_main","chars1","chars2","diff_charsToLines_","lineArray","linesCount","split","lines","generateFilesDiff","difference","filepath1","relativePath","filepath2","assetFile1Path","path1","assetFile2Path","path2","filepath","filenameTitle","isBinaryFile","readFileSync","generateChangelog","green","all","templateArray","splice","changelogHTML","writeFileSync","IconFontGenerator","sourceDir","outputDir","fontName","options","generate","svgToFont","src","dist","css","typescript","startUnicode","svgicons2svgfont","fontHeight","cli","cac","profileSession","global","__pp_dev_profile_session","profileCount","stopProfiler","log","res","rej","post","err","profile","outPath","JSON","stringify","white","dim","undefined","filterDuplicateOptions","Object","entries","Array","isArray","cleanOptions","ret","c","base","l","logLevel","debug","f","m","mode","option","command","alias","async","root","createServer","import","configFromFile","loadConfigFromFile","getViteConfig","envVars","loadEnv","cwd","keys","forEach","startsWith","env","plugins","fileConfig","mergeConfig","configFile","optimizeDeps","customLogger","httpServer","listen","ppDevStartTime","__pp_dev_start_time","startupDurationString","reset","bold","Math","ceil","performance","now","VERSION","stdin","isTTY","CI","_shortcutsOptions","print","shortcuts","customShortcuts","concat","actionRunning","onInput","input","shortcut","find","setRawMode","on","setEncoding","resume","off","pause","bindShortcuts","inspector","r","default","Session","connect","ws","send","type","event","data","url","encodeURIComponent","e","error","red","stack","isNextAvailable","next","safeNextImport","basename","loadConfig","projectRoot","ppDevConfig","experimental","ppDev","getConfig","n","standaloneConfig","console","backendBaseURL","MI_BACKEND_URL","portalPageId","parseInt","MI_PORTAL_PAGE_ID","templateLess","v7Features","disableSSLValidation","enableProxyCache","proxyCacheTTL","personalAccessToken","MI_ACCESS_TOKEN","distZip","syncBackupsDir","miHudLess","templateName","getPkg","name","app","dev","hostname","host","port","conf","basePath","assetPrefix","prepare","substring","lastIndexOf","handle","getRequestHandler","openSockets","Set","req","originalUrl","originalPathname","parsedUrl","parse","fullMiddlewareChain","essentialMiddlewareChain","middlewareIndex","runEssentialMiddleware","processNextJSRequest","middleware","runMiddleware","nextPath","writeHead","Location","end","statusCode","mi","baseUrlHost","URL","miConfig","headers","referer","origin","appId","MiAPI","ppRedirectMiddleware","initPPRedirect","ppRedirectWrapper","push","ttl","Number","isNaN","mockDevServer","middlewares","use","fn","proxyCacheMiddleware","initProxyCache","devServer","proxyCacheWrapper","baseWithoutTrailingSlash","mockProxyDevServer","proxyPassMiddlewareInstance","proxyPassMiddleware","baseURL","proxyIgnore","miAPI","proxyPassWrapper","isIndexRegExp","RegExp","loadPPDataMiddleware","initLoadPPData","loadPPDataWrapper","internalServerMiddleware","internalServer","internalServerWrapper","rewriteResponseMiddleware","initRewriteResponse","response","Buffer","from","urlReplacer","buildPage","rewriteResponseWrapper","socket","add","delete","gracefulShutdown","signal","shutdownTimeout","setTimeout","destroy","clearTimeout","processObj","globalProcess","globalThis","reason","promise","buildOptions","buildConfig","build","changelog","executionRoot","outDir","backupsDirPath","backups","latestBackup","isFile","reduce","latest","current","statSync","mtimeMs","currentAssetFilePath","changelogDestination","changelogGenerator","oldAssetPath","newAssetPath","oldPath","newPath","destination","fullOldPath","fullNewPath","fullDestination","source","destDir","fullSourceDir","fullDestDir","iconFontGenerator","optimizeConfig","resolveConfig","preview","strictPort","https","open","help","version"],"mappings":"q1BAIM,SAAUA,EAAaC,GAC3B,OAAOA,UAAmD,IAAVA,CAClD,CAyFA,MAAMC,EAAgC,CACpC,CACEC,IAAK,IACLC,YAAa,qBACb,YAAMC,CAAOC,SACLA,EAAOC,SACd,GAEH,CACEJ,IAAK,IACLC,YAAa,kBACb,MAAAC,CAAOC,GACLA,EAAOE,OAAOC,OAAOC,KAAK,IAC1BJ,EAAOK,WACR,GAEH,CACER,IAAK,IACLC,YAAa,kBACb,MAAAC,CAAOC,GACLA,EAAOM,aACR,GAEH,CACET,IAAK,IACLC,YAAa,gBACb,MAAAC,CAAOC,GACLA,EAAOE,OAAOC,OAAOI,YAAY,QAClC,GAEH,CACEV,IAAK,IACLC,YAAa,OACb,YAAMC,CAAOC,SACLA,EAAOQ,QAAQC,SAAQ,IAAMC,QAAQC,QAC5C,GAEH,CACEd,IAAK,IACLC,YAAa,oBACb,MAAAC,CAAOC,GACDA,EAAOY,QACTZ,EAAOY,MAAMC,QAEbb,EAAOE,OAAOC,OAAOC,KAAK,uBAE7B,ICgEL,MAAMU,EAAwB,6CAgBjBC,EACMC,cACAC,cACAC,gBACAC,kBACTC,kBAvNkC,inGAwNzBC,wBACAC,wBAETC,aAAe,EAEfpB,OAMR,WAAAqB,CAAYC,GACV,MAAMT,cACJA,EAAaC,cACbA,EAAaC,gBACbA,EAAeE,kBACfA,EAAiBC,wBACjBA,EAAuBC,wBACvBA,EAAuBH,kBACvBA,EAAiBI,aACjBA,GACEE,EAIJ,GAFAC,KAAKvB,OAASwB,KAETX,IAAkBC,IAAkBC,EACvC,MAAM,IAAIU,MAAM,+EAGlB,GAAIZ,IAAkBC,EACpB,MAAM,IAAIW,MAAM,uDAGlB,IAAKF,KAAKG,SAASb,GACjB,MAAM,IAAIY,MAAM,wBAAwBZ,oBAG1C,IAAKU,KAAKG,SAASZ,GACjB,MAAM,IAAIW,MAAM,uBAAuBX,oBAGzC,GAAIS,KAAKI,UAAUd,GAAgB,CACjC,MAAMe,EAAuBC,EAAKC,QAChCC,EAAGC,SACHC,EAAOC,WAAW,OAAOC,OAAOtB,GAAeuB,OAAO,QAGxDb,KAAKV,cAAgBU,KAAKc,UAAUxB,EAAee,GAChDU,MAAK,IACGf,KAAKgB,yBAAyBX,KAEtCU,MAAMT,IACL,GAAIN,KAAKiB,cAAcX,GACrB,MAAM,IAAIJ,MAAM,wBAAwBI,cAG1C,OAAOA,CAAI,QAEV,KAAIN,KAAKkB,SAAS5B,GASvB,MAAM,IAAIY,MAAM,gCAAgCZ,wCATT,CACvC,MAAMgB,EAAON,KAAKgB,yBAAyB1B,GAE3C,GAAIU,KAAKiB,cAAcX,GACrB,MAAM,IAAIJ,MAAM,wBAAwBI,cAG1CN,KAAKV,cAAgB6B,QAAQZ,QAAQD,IAKvC,GAAIN,KAAKI,UAAUb,GAAgB,CACjC,MAAMc,EAAuBC,EAAKC,QAChCC,EAAGC,SACHC,EAAOC,WAAW,OAAOC,OAAOrB,GAAesB,OAAO,QAGxDb,KAAKT,cAAgBS,KAAKc,UAAUvB,EAAec,GAChDU,MAAK,IACGf,KAAKgB,yBAAyBX,KAEtCU,MAAMT,IACL,GAAIN,KAAKiB,cAAcX,GACrB,MAAM,IAAIJ,MAAM,uBAAuBI,cAGzC,OAAOA,CAAI,QAEV,KAAIN,KAAKkB,SAAS3B,GASvB,MAAM,IAAIW,MAAM,+BAA+BX,wCATR,CACvC,MAAMe,EAAON,KAAKgB,yBAAyBzB,GAE3C,GAAIS,KAAKiB,cAAcX,GACrB,MAAM,IAAIJ,MAAM,uBAAuBX,cAGzCS,KAAKT,cAAgB4B,QAAQZ,QAAQD,IAKvCN,KAAKR,gBAAkBA,EAEvBQ,KAAKoB,WAAWpB,KAAKR,iBAGnBQ,KAAKP,kBADHA,GAGuB,iBAGvBC,IACEM,KAAKqB,gBAAgB3B,GACvBM,KAAKN,kBAAoBA,EAEzBM,KAAKvB,OAAO6C,KAAKC,EAAOC,OAAO,+CAII,mBAA5B7B,IACTK,KAAKL,wBAA0BA,GAGM,mBAA5BC,IACTI,KAAKJ,wBAA0BA,GAG7BC,IACFG,KAAKH,aAAeA,GAIhB,eAAAwB,CAAgBI,GACtB,OAAOA,EAASC,SAAS,WAGnB,QAAAvB,CAASwB,GACf,OAAOC,EAAGC,WAAWF,GAGf,SAAAvB,CAAUuB,GAChB,OAAOA,EAAUG,SAAS,QAGpB,QAAAZ,CAASS,GACf,OAAOC,EAAGG,UAAUJ,GAAWK,cAGzB,aAAAf,CAAcU,GACpB,OAAqE,IAA9DC,EAAGK,YAAYN,EAAW,CAAEO,eAAe,IAAQC,OAGpD,UAAAf,CAAWgB,GACZR,EAAGC,WAAWO,IACjBR,EAAGS,UAAUD,EAAK,CAAEE,WAAW,IAI3B,eAAMxB,CAAUa,EAAmBnC,GAGzC,OAFAoC,EAAGW,OAAO/C,EAAiB,CAAEgD,OAAO,EAAMF,WAAW,IAE9CG,EAAWd,EAAW,CAAES,IAAK5C,IAG9B,wBAAAwB,CAAyBW,GAC/B,MAAMe,EAAgBd,EAAGK,YAAYN,GAErC,OAA6B,IAAzBe,EAAcP,QAAgBP,EAAGG,UAAUzB,EAAKqC,KAAKhB,EAAWe,EAAc,KAAKV,cAC9EhC,KAAKgB,yBAAyBV,EAAKqC,KAAKhB,EAAWe,EAAc,KAGnEf,EAGD,WAAAiB,CAAYtC,GAClB,OAAOA,EAAKuC,QAAQ,MAAO,KAGrB,iBAAAC,CAAkBC,GACxB,MAAkB,sDAEZA,kCAKA,gBAAAC,CAAiBC,GACvB,MAAMF,EAAgBE,EACnBC,QAAO,CAACjF,EAAOkF,EAAOC,IA7OD,IA8OhBnF,EAAMoF,WAELF,GAAS,GAAKA,EAAQnD,KAAKH,cAC3BsD,EAAQC,EAAMjB,QAAUnC,KAAKH,aAAe,IAAMsD,GAASC,EAAMjB,OAAS,GAC3EiB,EACGE,MAAMH,EAAQnD,KAAKH,aAAcsD,EAAQnD,KAAKH,aAAe,GAC7D0D,MAAMC,GApPO,IAoPEA,EAAKH,cAM5BI,KAAI,CAACD,EAAML,EAAOC,KACjB,GAAID,EAAQ,EAAG,CACb,MAAMO,EAAWN,EAAMD,EAAQ,GAE/B,GAAIK,EAAKG,WAAaD,EAASC,WAAa,EAC1C,MAAO,CAAC,CAAEA,cAAgBC,YAAa,GAAIP,SA/P3B,GA+PqDG,GAIzE,MAAO,CAACA,EAA4B,IAErCK,OACAJ,KAAKD,GAASxD,KAAK8D,aAAaN,KAChCb,KAAK,IAER,OAAO3C,KAAK8C,kBAAkBC,GAGxB,uBAAAgB,CAAwBC,GAC9B,MAAkB,yJAIkBA,mCAK9B,oBAAAC,GACN,MAAkB,yLASZ,gBAAAC,CAAiBC,GACvB,MAAMR,WAAEA,EAAUC,YAAEA,EAAWP,SAAEA,GAAac,EAExCC,EArSgB,IAqSLf,EAA0B,YApSnB,IAoSgCA,EAA4B,WAAa,GAIjG,MAAkB,4CAEIe,IAAwB,aAAbA,EAA0B,SAAW,gBACnD,aAAbA,EAA0B,sBAAsBT,KAAgB,wDAGhDS,IAAwB,aAAbA,EAA0B,SAAW,gBACnD,aAAbA,EAA0B,sBAAsBT,KAAgB,gDAhThD,IAsSJN,EAA0B,iBArSpB,IAqSsCA,EAA4B,gBAAkB,iEAtStF,IAuSPA,EAA0B,KAtSjB,IAsSuBA,EAA4B,IAAM,QA5QlDgB,EAwRqDT,GAAe,GAvR9FS,EAAIxB,QAAQ,uBAAwByB,GAAM,KAAOA,EAAEC,WAAW,GAAK,uCADtE,IAA6BF,EA6RzB,YAAAP,CAAaK,GACnB,GAAInE,KAAKJ,wBACP,OAAOI,KAAKJ,wBAAwBuE,GAGtC,MAAMR,WAAEA,GAAeQ,EAEvB,OAAmB,IAAfR,EACK3D,KAAKiE,uBAGPjE,KAAKkE,iBAAiBC,GAGvB,gBAAAK,CAAiBC,EAAkBC,GACzC,OAAI1E,KAAKL,wBACAK,KAAKL,wBAAwB8E,EAAUC,GAG9B,+DACeD,iDACEC,sBAI7B,8BAAMC,GACZ3E,KAAKvB,OAAOC,KACV6C,EAAOqD,KAAK,iCAAiC5E,KAAKV,2BAA2BU,KAAKT,kBAGpF,MAAMsF,QAAgBC,EAAWC,cAAc/E,KAAKV,oBAAqBU,KAAKT,cAAe,CAC3FyF,gBAAgB,EAChBC,cAAc,EACdC,aAAa,EACbC,aAAa,EACbC,mBAAoB,CAACC,EAAOC,KACtBlG,EAAsBmG,KAAKF,KAC7BA,EAAQA,EAAMxC,QAAQzD,EAAuB,SAG3CA,EAAsBmG,KAAKD,KAC7BA,EAAQA,EAAMzC,QAAQzD,EAAuB,SAGZ,IAA/BiG,EAAMG,cAAcF,GACf,EAGFD,EAAMG,cAAcF,GAAS,EAAI,GAAM,KAIlD,OAAOT,EAAQY,SAASvC,QAAQwC,GAAkB,UAAZA,EAAEC,OAAqBD,EAAEL,QAAUK,EAAEJ,SAAU,GAG/E,4BAAMM,CAAuBC,EAAuBC,GAC1D,MAAMC,EAAM,IAAIC,EAEVC,EAAaF,EAAIG,mBAAmBL,EAAeC,GACnDK,EAAYJ,EAAIK,UAAUH,EAAWI,OAAQJ,EAAWK,QAAQ,GAEtEP,EAAIQ,mBAAmBJ,EAAWF,EAAWO,WAE7C,IAAI7C,EAAa,EAEjB,OAAOwC,EACJ1C,KAAKU,IACJ,MAAOd,EAAUO,GAAeO,EAE1BsC,EAAa7C,EAAY9B,SAAS,MACpC8B,EAAY8C,MAAM,MAAMvE,OAAS,EACjCyB,EAAY8C,MAAM,MAAMvE,OAEtBwE,EAAQ/C,EACX8C,MAAM,MACNjD,KAAI,CAACD,EAAML,KACH,CAAES,YAAaJ,EAAMG,WAAYA,EAAaR,EAAQ,EAAGE,eAEjEC,MAAM,EAAGmD,GAMZ,OA3YoB,IAuYhBpD,IACFM,GAAc8C,GAGTE,CAAK,IAEb9C,OAQG,uBAAM+C,CAAkBC,GAC9B,GAAyB,UAArBA,EAAWlB,MAAmB,CAChC,MAAMmB,EAAY9G,KAAK4C,YAAYtC,EAAKqC,KAAK,IAAKkE,EAAWE,aAAcF,EAAWxB,OAAS,KACzF2B,EAAYhH,KAAK4C,YAAYtC,EAAKqC,KAAK,IAAKkE,EAAWE,aAAcF,EAAWvB,OAAS,KAE/F,OAAOtF,KAAKwE,iBACC,gEACqBsC,gCAAwCE,4BAExEhH,KAAK8C,kBAAkB9C,KAAK+D,wBAAwB,gBAIxD,MAAMkD,EAAiBJ,EAAWK,OAASL,EAAWxB,MAAQ/E,EAAKqC,KAAKkE,EAAWK,MAAOL,EAAWxB,OAAS,KACxG8B,EAAiBN,EAAWO,OAASP,EAAWvB,MAAQhF,EAAKqC,KAAKkE,EAAWO,MAAOP,EAAWvB,OAAS,KAExG+B,EAAWrH,KAAK4C,YACpBtC,EAAKqC,KAAK,IAAKkE,EAAWE,cAAeF,EAAWxB,OAASwB,EAAWvB,QAAU,KAGpF,GAAyB,SAArBuB,EAAWlB,OAAoBsB,EACjC,OAAOjH,KAAKwE,iBACC,iCAAiC6C,WAC5CrH,KAAK8C,kBAAkB9C,KAAK+D,wBAAwB,kBAIxD,GAAyB,UAArB8C,EAAWlB,OAAqBwB,EAClC,OAAOnH,KAAKwE,iBACC,6BAA6B6C,WACxCrH,KAAK8C,kBAAkB9C,KAAK+D,wBAAwB,gBAIxD,GAAyB,aAArB8C,EAAWlB,OAAwBsB,GAAkBE,EAAgB,CACvE,MAAML,EAAY9G,KAAK4C,YAAYtC,EAAKqC,KAAK,IAAKkE,EAAWE,aAAcF,EAAWxB,OAAS,KACzF2B,EAAYhH,KAAK4C,YAAYtC,EAAKqC,KAAK,IAAKkE,EAAWE,aAAcF,EAAWvB,OAAS,KAEzFgC,EACJT,EAAWxB,QAAUwB,EAAWvB,MACjB,oEACqBwB,gCAAwCE,gCAExEK,EAEN,OAAOrH,KAAKwE,iBACV8C,QACOC,EAAaN,UAA2BM,EAAaJ,GACxDnH,KAAK8C,kBAAkB9C,KAAK+D,wBAAwB,gBACpD/D,KAAKgD,uBACGhD,KAAK4F,uBACThE,EAAG4F,aAAaP,EAAgB,SAChCrF,EAAG4F,aAAaL,EAAgB,YAM5C,MAAO,GAOT,uBAAMM,GACJzH,KAAKvB,OAAOC,KAAK6C,EAAOmG,MAAM,yBAE9B,MAAMjC,QAAgBzF,KAAK2E,2BAErBD,SAAkBvD,QAAQwG,IAAIlC,EAAQhC,KAAKoD,GAAe7G,KAAK4G,kBAAkBC,OAAelE,KAAK,IAE3G3C,KAAKvB,OAAOC,KAAK6C,EAAOmG,MAAM,2BAE9B,MAAME,EAAgB5H,KAAKN,kBAAkBgH,MAAM,WAEnDkB,EAAcC,OAAO,EAAG,EAAGnD,GAE3B,MAAMoD,EAAgBF,EAAcjF,KAAK,IAEzCf,EAAGmG,cAAczH,EAAKqC,KAAK3C,KAAKR,gBAAiBQ,KAAKP,mBAAoBqI,GAE1E9H,KAAKvB,OAAOC,KACV6C,EAAOmG,MAAM,6BAA6BpH,EAAKqC,KAAK3C,KAAKR,gBAAiBQ,KAAKP,8BC/oBxEuI,EACMC,UACAC,UACAC,SAEjB,WAAArI,CAAYsI,GACVpI,KAAKiI,UAAYG,EAAQH,UACzBjI,KAAKkI,UAAYE,EAAQF,UACzBlI,KAAKmI,SAAWC,EAAQD,SAGnB,cAAME,SACLC,EAAU,CACdC,IAAKvI,KAAKiI,UACVO,KAAMxI,KAAKkI,UACXC,SAAUnI,KAAKmI,SACfM,KAAK,EACLC,YAAY,EACZC,aAAc,MACdC,iBAAkB,CAChBC,WAAY,SCWpB,MAAMC,EAAMC,EAAI,UAqChB,IAAIC,EAAkBC,OAAeC,yBACjCC,EAAe,EAEN,MAAAC,EACXC,IAEA,GAAKL,EAIL,OAAO,IAAI7H,SAAQ,CAACmI,EAAKC,KACvBP,EAAgBQ,KAAK,iBAAiB,CAACC,GAAYC,cAEjD,GAAKD,EAaHF,EAAIE,OAbI,CACR,MAAME,EAAUrJ,EAAKC,QACnB,oBAAoB4I,kBAEtBvH,EAAGmG,cAAc4B,EAASC,KAAKC,UAAUH,IACzCL,EACE9H,EAAOC,OACL,0BAA0BD,EAAOuI,MAAMvI,EAAOwI,IAAIJ,QAGtDX,OAAiBgB,EACjBV,OAIF,GACF,EAGEW,EAA4C7B,IAChD,IAAK,MAAOjK,EAAKF,KAAUiM,OAAOC,QAAQ/B,GACpCgC,MAAMC,QAAQpM,KAChBmK,EAAQjK,GAAkBF,EAAMA,EAAMkE,OAAS,KAOrD,SAASmI,EACPlC,GAEA,MAAMmC,EAAM,IAAKnC,GAejB,cAdOmC,EAAI,aACJA,EAAIC,SACJD,EAAI/L,cACJ+L,EAAIE,YACJF,EAAIG,SACJH,EAAII,gBACJJ,EAAI1L,mBACJ0L,EAAI7E,SACJ6E,EAAIK,aACJL,EAAIM,SACJN,EAAIrH,cACJqH,EAAIO,SACJP,EAAIQ,KAEJR,CACT,CAEAzB,EACGkC,OAAO,sBAAuB,sCAC9BA,OAAO,gBAAiB,0CACxBA,OAAO,yBAA0B,yCACjCA,OAAO,gBAAiB,qDACxBA,OAAO,qBAAsB,sCAC7BA,OAAO,wBAAyB,8BAChCA,OAAO,oBAAqB,yBAG/BlC,EACGmC,QAAQ,SAAU,oBAClBC,MAAM,SACNA,MAAM,OACNF,OAAO,gBAAiB,6BACxBA,OAAO,gBAAiB,yBACxBA,OAAO,UAAW,8BAClBA,OAAO,gBAAiB,8CACxBA,OAAO,SAAU,yBACjBA,OAAO,eAAgB,sDACvBA,OACC,UACA,mEAED3M,QAAO8M,MAAOC,EAAchD,KAC3B6B,EAAuB7B,GAGvB,MAAMiD,aAAEA,SAAuBC,OAAO,QAEtC,IACE,MAAMC,QAAuBC,EAC3B,CAAET,KAAM3C,EAAQ2C,MAAQ,cAAeE,QAAS,SAChD7C,EAAQ5J,OACR4M,EACAhD,EAAQuC,UAGV,IAAInM,QAAeiN,IAEnB,MAAMC,EAAUC,EACdvD,EAAQ2C,MAAQ,cAChBK,GAAQpM,QAAQ4M,MAChB,IAWF,GARIF,GACFxB,OAAO2B,KAAKH,GAASI,SAAS3N,IACxBA,EAAI4N,WAAW,SACjB/M,QAAQgN,IAAI7N,GAAOuN,EAAQvN,OAK7BoN,EAAgB,CAClB,MAAMU,QAAEA,KAAYC,GAAeX,EAAe/M,OAElDA,EAAS2N,EAAY3N,EAAQ0N,GAG/B,MAAM5N,QAAe+M,EACnBc,EACE3N,EACA,CACE4M,OACAX,KAAMrC,EAAQqC,KACdM,KAAM3C,EAAQ2C,KACdqB,WAAYhE,EAAQ5J,OACpBmM,SAAUvC,EAAQuC,SAClB9L,YAAauJ,EAAQvJ,YACrBwN,aAAc,CAAE7J,MAAO4F,EAAQ5F,OAC/BlE,OAAQgM,EAAalC,GACrBkE,aAAcrM,EAAamI,EAAQuC,YAErC,IAIJ,IAAKrM,EAAOE,OAAOiM,MAA+B,MAAvBnM,EAAOE,OAAOiM,KACvC,MAAM,IAAIvK,MAAM,+CAGlB,IAAK5B,EAAOiO,WACV,MAAM,IAAIrM,MAAM,mCAGZ5B,EAAOkO,SAEb,MAAM/N,EAASwB,EAAamI,EAAQuC,UAE9B8B,EAAkBxD,OAAeyD,sBAAuB,EACxDC,EAAwBF,EAC1BlL,EAAOwI,IACL,YAAYxI,EAAOqL,MACjBrL,EAAOsL,KAAKC,KAAKC,KAAKC,EAAYC,MAAQR,WAG9C,GAEJhO,EAAOC,KACL,OAAO6C,EAAOmG,MACZ,GAAGnG,EAAOsL,KAAK,cAAcK,SACzBP,OAGRrO,EAAOK,YH9NG,SACdL,EACAyB,GAEA,IAAKzB,EAAOiO,aAAevN,QAAQmO,MAAMC,OAASpO,QAAQgN,IAAIqB,GAC5D,OAED/O,EAAegP,kBAAoBvN,EAEpC,MAAMtB,EAASwB,IAEXF,EAAKwN,OACP9O,EAAOC,KACL6C,EAAOwI,IAAIxI,EAAOmG,MAAM,QACtBnG,EAAOwI,IAAI,YACXxI,EAAOsL,KAAK,KACZtL,EAAOwI,IAAI,kBAIjB,MAAMyD,GAAazN,EAAK0N,iBAAmB,IACxCvK,OAAOlF,GACP0P,OAAOxP,GAEV,IAAIyP,GAAgB,EAEpB,MAAMC,EAAUzC,MAAO0C,IAErB,GAAc,MAAVA,GAA8B,MAAVA,EAGtB,kBAFMvP,EAAOQ,QAAQC,SAAQ,IAAMC,QAAQC,KAAK,KAKlD,GAAI0O,EACF,OAGY,MAAVE,GACFpP,EAAOC,KACL,CACE,GACA6C,EAAOsL,KAAK,kBACTW,EAAU/J,KACVqK,GACCvM,EAAOwI,IAAI,YACXxI,EAAOsL,KAAKiB,EAAS3P,KACrBoD,EAAOwI,IAAI,OAAO+D,EAAS1P,kBAE/BuE,KAAK,OAIX,MAAMmL,EAAWN,EAAUO,MAAMD,GAAaA,EAAS3P,MAAQ0P,IAE1DC,IAILH,GAAgB,QACVG,EAASzP,OAAOC,GACtBqP,GAAgB,EAAK,EAGvB3O,QAAQmO,MAAMa,YAAW,GAEzBhP,QAAQmO,MAAMc,GAAG,OAAQL,GAASM,YAAY,QAAQC,SAEtD7P,EAAOiO,WAAW0B,GAAG,SAAS,KAC5BjP,QAAQmO,MAAMiB,IAAI,OAAQR,GAASS,OAAO,GAE9C,CGwJMC,CAAchQ,EAAQ,CACpBiP,OAAO,EACPE,gBAAiB,IACXzE,EACA,CACE,CACE7K,IAAK,IACLC,YAAa,0BACb,YAAMC,CAAOC,GACX,GAAI0K,QACII,EAAa3K,EAAOC,UACrB,CACL,MAAM6P,QAAkBjD,OAAO,kBAAkBvK,MAC9CyN,GAAOA,EAAUC,gBAGd,IAAItN,SAAemI,IACvBN,EAAiB,IAAIuF,EAAUG,QAC/B1F,EAAe2F,UACf3F,EAAeQ,KAAK,mBAAmB,KACrCR,GAAgBQ,KAAK,kBAAkB,KACrC/K,EAAOC,KAAK,oBAEZ4K,GAAK,GACL,GACF,IAGP,IAGL,GACJ,CACEnL,IAAK,IACLC,YAAa,iBACb,MAAAC,CAAOC,GACLA,EAAOsQ,GAAGC,KAAK,CACbC,KAAM,SACNC,MAAO,WACPC,KAAM,CACJC,IAAK,oCAAoCC,mBACvC,SAIP,MAIP,MAAOC,GACP,MAAM1Q,EAASwB,EAAamI,EAAQuC,UAEpClM,EAAO2Q,MAAM7N,EAAO8N,IAAI,oCAAoCF,EAAEG,SAAU,CACtEF,MAAOD,IAET/F,EAAa3K,EAAOC,MAEpBM,QAAQC,KAAK,OAKnB6J,EACGmC,QACC,cACA,4DAEDC,MAAM,cACNA,MAAM,YACNF,OAAO,gBAAiB,6BACxBA,OAAO,gBAAiB,wBAAyB,CAAEyD,QAAS,MAC5DzD,OAAO,UAAW,8BAClBA,OAAO,gBAAiB,8CACxBA,OAAO,SAAU,yBACjBA,OAAO,eAAgB,sDACvBA,OACC,UACA,mEAED3M,QAAO8M,MAAOC,EAAchD,KAC3B6B,EAAuB7B,GAEvB,IAEE,IAAKmH,IACH,MAAM,IAAIrP,MACR,wKAMJ,MAAMsP,KAAEA,SAAeC,KACjB9M,KAAEA,EAAI+M,SAAEA,SAAmBpE,OAAO,SAClCD,aAAEA,SAAuBC,OAAO,SAC9BmD,QAASkB,UACTrE,OAAO,+BACbmD,QAEIhQ,EAASwB,IAETF,EAAOuK,EAAalC,GAGpBsD,EAAUC,EACdvD,EAAQ2C,MAAQ,cAChBK,GAAQpM,QAAQ4M,MAChB,IAEEF,GACFxB,OAAO2B,KAAKH,GAASI,SAAS3N,IACxBA,EAAI4N,WAAW,SACjB/M,QAAQgN,IAAI7N,GAAOuN,EAAQvN,OAMjC,MAAMyR,EAAcxE,EAAOzI,EAAK3D,QAAQ4M,MAAOR,GAAQpM,QAAQ4M,MAE/DnN,EAAOC,KAAKkR,GAGZ,MAAMpR,QAAemR,EAAW,cAAeC,GAE/C,IAAIC,EAAcrR,GAAQsR,cAAcC,OAASvR,GAAQuR,OAAS,CAAE,EAGpE,GAAwC,IAApC7F,OAAO2B,KAAKgE,GAAa1N,OAC3B,IACE,MAAM6N,UAAEA,SAAoB1E,OAAO,uBAAcvK,MAAAkP,GAAAA,EAAAzF,IAC3C0F,QAAyBF,IAE3B9F,OAAO2B,KAAKqE,GAAkB/N,OAAS,GACzC0N,EAAcK,EACdzR,EAAOC,KACL6C,EAAOqD,KAAK,yDAGdnG,EAAOC,KACL6C,EAAOC,OACL,oFAIN,MAAO4N,GACP3Q,EAAOC,KACL6C,EAAOC,OACL,gEAGJ2O,QAAQvF,MAAM,mCAAoCwE,QAGpD3Q,EAAOC,KAAK6C,EAAOqD,KAAK,gDAI1B,MAAMwL,eACJA,EAAiBpR,QAAQgN,IAAIqE,gBAAkB,wBAAuBC,aACtEA,EAAeC,SAASvR,QAAQgN,IAAIwE,mBAAqB,KAAIC,aAC7DA,GAAe,EAAIC,WACnBA,GAAa,EAAIC,qBACjBA,GAAuB,EAAKC,iBAC5BA,GAAmB,EAAIC,cACvBA,EAAgB,IAAMC,oBACtBA,EAAsB9R,QAAQgN,IAAI+E,gBAAeC,QACjDA,GAAU,EAAKC,eACfA,EAAiB,YAAWC,UAC5BA,GAAY,GACVrB,EAGJ,IAAIsB,EAAetB,EAAYsB,aAE/B,IAAKA,EACH,IACE,MAAMC,OAAEA,SAAiB9F,OAAO,uBAAcvK,MAAAkP,GAAAA,EAAAzF,IAE9C2G,EADYC,IACOC,KACnB,MAAOjC,GAEP+B,EAAezB,EAASE,GAQ5B,IAAInF,EAAOgG,EAHY,KACI,MAG3BhG,GAAQ,IAAI0G,IAEZ,MAAMG,EAAM9B,EAAK,CACf+B,KAAK,EACLC,SAAWzR,EAAK0R,MAAmB,YACnCC,KAAM3R,EAAK2R,KACXtP,IAAKwN,EACL+B,KAAM,IACDnT,EACHoT,SAAUnH,EACVoH,YAAapH,KAgBjB,SAZM6G,EAAIQ,UAQLrH,EAAK3I,SAAS,OACjB2I,GAAQ,KAGG,MAATA,EACF,MAAM,IAAIvK,MACR,4DAI6BuK,EAAKsH,UAAU,EAAGtH,EAAKuH,YAAY,MAGpEvT,EAAOC,KAAK6C,EAAOmG,MAAM,wCACzBjJ,EAAOC,KACL6C,EAAOqD,KAAK,6CAA6CuM,MAE3D1S,EAAOC,KAAK6C,EAAOqD,KAAK,4BAA4B6F,MAEhD2F,IACF3R,EAAOC,KAAK6C,EAAOqD,KAAK,mBAAmBwL,MAC3C3R,EAAOC,KAAK6C,EAAOqD,KAAK,sBAAsB0L,OAIhD,MAAM2B,EAASX,EAAIY,oBAGbR,EAA4B,iBAAd3R,EAAK2R,KAAoB3R,EAAK2R,KAAO,IACnDD,EAA4B,iBAAd1R,EAAK0R,KAAoB1R,EAAK0R,KAAO,YAGnDU,EAAc,IAAIC,IAGlB9T,EAAS+M,GAAaF,MAAOkH,EAAU/I,KAC3C,IACE,MAAMgJ,EAAcD,EAAIpD,KAAO,IACzBsD,EAAmBD,EAAY5L,MAAM,KAAK,GAEhD,IAAI8L,EAAYC,EAAMH,GAAa,GAGnC,GAAII,EAAoBvQ,OAAS,EAAG,CAQlC,GALEoQ,EAAiBxG,WAAW,YACP,iBAArBwG,GACAA,EAAiBxG,WAAW,eAC5BwG,EAAiBxG,WAAW,SAEL,CAGvB,GAAI4G,EAAyBxQ,OAAS,EAAG,CACvC,IAAIyQ,EAAkB,EAEtB,MAAMC,EAAyB,KAC7B,GAAID,GAAmBD,EAAyBxQ,OAG9C,YADA2Q,IAIF,MAAMC,EAAaJ,EAAyBC,GAC5CA,IAEAG,EAAWV,EAAK/I,EAAKuJ,EAAuB,EAI9C,YADAA,IAKA,YADAC,IAMJ,IAAIF,EAAkB,EAEtB,MAAMI,EAAgB,KACpB,GAAIJ,GAAmBF,EAAoBvQ,OAGzC,YADA2Q,IAIF,MAAMC,EAAaL,EAAoBE,GACvCA,IAEAG,EAAWV,EAAK/I,EAAK0J,EAAc,EAIrC,YADAA,IAOF7H,eAAe2H,IAEb,GAAIP,EAAiBxG,WAAWtB,GAAO,CAErC,MAAMwI,EAAWV,EAAiBR,UAAUtH,EAAKtI,QAEjDkQ,EAAIpD,IAAMgE,GAAY,IACtBT,EAAYC,EAAMQ,GAAU,QACvB,GAAIV,IAAqB9H,EAAK5H,QAAQ,MAAO,IAElDwP,EAAIpD,IAAM,IACVuD,EAAYC,EAAM,KAAK,QAClB,GACLF,EAAiBxG,WAAW,YACP,iBAArBwG,GACAA,EAAiBxG,WAAW,oBAGvB,GAAyB,MAArBwG,EAKT,OAHAjJ,EAAI4J,UAAU,IAAK,CAAEC,SAAU1I,SAC/BnB,EAAI8J,YAOAnB,EAAOI,EAAK/I,EAAKkJ,GA9BzBM,IAgCA,MAAO1D,GACPe,QAAQf,MAAM,iBAAkBA,GAChC9F,EAAI+J,WAAa,IACjB/J,EAAI8J,IAAI,6BAKZ,IAAIE,EAAmB,KACnBZ,EAEA,GACAC,EAEA,GAEJ,GAAIvC,EAAgB,CAClB,MAAMmD,EAAc,IAAIC,IAAIpD,GAAgBqB,KAGtCgC,EAAW,CACfC,QAAS,CACPjC,KAAM8B,EACNI,QAASvD,EACTwD,OAAQxD,EAAevN,QACrB,iCACA,SAGJyN,eACAuD,MAAOvD,EACPG,eACAE,uBACAD,aACAI,oBACEA,GAAuB9R,QAAQgN,IAAI+E,iBAGvCuC,EAAK,IAAIQ,EAAM1D,EAAgBqD,GAM/B,MAAMM,EAAuBC,EAAevJ,EAAM0G,GAC5C8C,EAAoB,CAAC5B,EAAU/I,EAAUkG,KAC7CuE,EAAqB1B,EAAK/I,EAAKkG,EAAK,EAMtC,GAJAmD,EAAyBuB,KAAKD,GAC9BvB,EAAoBwB,KAAKD,GAGrBrD,EAAkB,CACpB,IAAIuD,GAAOtD,IACNsD,GAAOC,OAAOC,MAAMF,IAAQA,EAAM,KACrCA,EAAM,KAIR,MAAMG,EAAgB,CACpBC,YAAa,CACXC,IAAMC,GAAYA,GAEpBjW,OAAQ,CAAEC,OAAQ0R,UAQduE,EAAuBC,EALT,CAClBC,UAAWN,EACXH,QAIIU,EAAoB,CAACxC,EAAU/I,EAAUkG,KAC7CkF,EAAqBrC,EAAK/I,EAAKkG,EAAK,EAEtCkD,EAAoBwB,KAAKW,GAEzBpW,EAAOC,KACL6C,EAAOqD,KAAK,6CAA6CuP,QAK7D,MAAMW,EAA2BrK,EAAK3I,SAAS,KAC3C2I,EAAKsH,UAAU,EAAGtH,EAAKtI,OAAS,GAChCsI,EAGEsK,EAAqB,CACzBR,YAAa,CACXC,IAAMC,GAAYA,GAEpBjW,OAAQ,CAAEC,OAAQ0R,UAGd6E,EAA8BC,EAAoB,CACtDL,UAAWG,EACXG,QAAS9E,EACT+E,YAAa,CACX,SACA,mBACA,KACAL,EAEA,SACA,eACA,aACA,QAEFnE,uBACAyE,MAAO9B,IAGH+B,EAAmB,CAAChD,EAAU/I,EAAUkG,KAC5CwF,EAA4B3C,EAAK/I,EAAKkG,EAAK,EAE7CkD,EAAoBwB,KAAKmB,GAGzB,MAAMC,EAAgB,IAAIC,OAAO,MAAM9K,UACjC+K,EAAuBC,EAAeH,EAAehC,EAAI,CAAE7I,OAAMiG,eACjEgF,EAAoB,CAACrD,EAAU/I,EAAUkG,KAC7CgG,EAAqBnD,EAAK/I,EAAKkG,EAAK,EAEtCkD,EAAoBwB,KAAKwB,GAGzB,MAAMC,EAA2BC,EAC3BC,EAAwB,CAC5BxD,EACA/I,EACAkG,KAGA,GAAI6C,EAAIpD,KAAKlD,WAAW,UAAxB,CAGE4J,EAAyBtD,EAAK/I,GAFb,cAMnBkG,GAAM,EAERmD,EAAyBuB,KAAK2B,GAC9BnD,EAAoBwB,KAAK2B,GAGzB,MAAMC,EAA4BC,GAC/B9G,GACQA,EAAIvI,MAAM,KAAK,GAAG5E,SAAS,gBAEpC,CAACkU,EAAU3D,IACF4D,OAAOC,KACZC,EACE5C,EACAlB,EAAIqB,QAAQjC,MAAQ,GACpB6B,EAAI8C,UAAUJ,EAAU9E,OAM1BmF,EAAyB,CAC7BhE,EACA/I,EACAkG,KAEAsG,EAA0BzD,EAAK/I,EAAKkG,EAAK,EAE3CkD,EAAoBwB,KAAKmC,GAEzB5X,EAAOC,KACL6C,EAAOqD,KACL,MAAM8N,EAAoBvQ,0CAG9B1D,EAAOC,KACL6C,EAAOqD,KACL,MAAM+N,EAAyBxQ,qDAGnC1D,EAAOC,KACL6C,EAAOqD,KAAK,qCAAqCwL,MAEnD3R,EAAOC,KAAK6C,EAAOqD,KAAK,sBAAsB0L,MAGhDhS,EAAOkO,OAAOkF,EAAMD,GAAM,KACxBhT,EAAOC,KACL6C,EAAOmG,MACL,6CAA6C+J,KAAQC,MAGzDjT,EAAOC,KACL6C,EAAOqD,KACL,uCAAuC6M,KAAQC,IAAOjH,MAG1DhM,EAAOC,KAAK6C,EAAOqD,KAAK,iCAGxBtG,EAAO2P,GAAG,cAAeqI,IACvBnE,EAAYoE,IAAID,GAChBA,EAAOrI,GAAG,SAAS,IAAMkE,EAAYqE,OAAOF,IAAQ,IAItD,MAAMG,EAAmBtL,MAAOuL,IAC9BjY,EAAOC,KACL6C,EAAOC,OACL,iBAAiBkV,mCAKrB,MAAMC,EAAkBC,YAAW,KACjCnY,EAAOC,KACL6C,EAAOC,OAAO,6CAEhBxC,QAAQC,KAAK,EAAE,GACd,KAEH,IAEE,IAAK,MAAMqX,KAAUlM,MAAM8L,KAAK/D,GAC9BmE,EAAOO,UAET1E,EAAYhT,cAGN,IAAIgC,SAAeZ,IACvBjC,EAAOQ,OAAM,KACXL,EAAOC,KAAK6C,EAAOC,OAAO,0BAC1BjB,GAAS,GACT,IAIA+Q,GAA4B,mBAAdA,EAAIxS,cACdwS,EAAIxS,QACVL,EAAOC,KAAK6C,EAAOC,OAAO,2BAG5BsV,aAAaH,GACblY,EAAOC,KAAK6C,EAAOmG,MAAM,kCACzB1I,QAAQC,KAAK,GACb,MAAOmQ,GACP0H,aAAaH,GACblY,EAAO2Q,MACL7N,EAAO8N,IAAI,qCAAqCD,MAElDpQ,QAAQC,KAAK,KAKjB,IAAI8X,EAAa/X,QAGjB,GAA0B,mBAAfA,QAAQiP,GAAmB,CACpC,MAAM+I,EACHC,WAAmBjY,SAAYiK,OAAejK,QAE7CgY,GAA6C,mBAArBA,EAAc/I,KACxC8I,EAAaC,EACbvY,EAAOC,KACL6C,EAAOmG,MAAM,sDAKnB,GAA6B,mBAAlBqP,EAAW9I,GACpB,IACE8I,EAAW9I,GAAG,UAAU,IAAMwI,EAAiB,YAC/CM,EAAW9I,GAAG,WAAW,IAAMwI,EAAiB,aAGhDM,EAAW9I,GAAG,qBAAsBmB,IAClC3Q,EAAO2Q,MAAM7N,EAAO8N,IAAI,yBAAyBD,MACjDqH,EAAiB,oBAAoB,IAGvCM,EAAW9I,GAAG,sBAAsB,CAACiJ,EAAQC,KAC3C1Y,EAAO2Q,MACL7N,EAAO8N,IACL,6BAA6B8H,cAAoBD,MAGrDT,EAAiB,qBAAqB,IAGxChY,EAAOC,KACL6C,EAAOmG,MAAM,qDAEf,MAAO0H,GACP3Q,EAAO6C,KACLC,EAAOC,OACL,kDAAkD4N,WAKxD3Q,EAAO6C,KACLC,EAAOC,OACL,uFAGJ/C,EAAOC,KACL6C,EAAOqD,KACL,mEAKR,MAAOwK,GACP,MAAM3Q,EAASwB,EAAa,SAI1BmP,aAAiBlP,OACjBkP,EAAMpL,QAAQtC,SAAS,wBAEvBjD,EAAO2Q,MAAM7N,EAAO8N,IAAI,qCACxB5Q,EAAO2Q,MAAM7N,EAAO8N,IAAID,EAAMpL,UAC9BvF,EAAO2Q,MAAM7N,EAAOC,OAAO,4BAC3B/C,EAAO2Q,MAAM7N,EAAOqD,KAAK,2CACzBnG,EAAO2Q,MAAM7N,EAAOuI,MAAM,+BAC1BrL,EAAO2Q,MAAM7N,EAAOqD,KAAK,uBACzBnG,EAAO2Q,MAAM7N,EAAOuI,MAAM,4BAC1BrL,EAAO2Q,MAAM7N,EAAOqD,KAAK,uBACzBnG,EAAO2Q,MAAM7N,EAAOuI,MAAM,4BAC1BrL,EAAO2Q,MAAM7N,EAAOC,OAAO,oCAC3B/C,EAAO2Q,MAAM7N,EAAOqD,KAAK,gDAEzBnG,EAAO2Q,MAAM7N,EAAO8N,IAAI,qCAAqCD,MAG/DpQ,QAAQC,KAAK,OAKnB6J,EACGmC,QAAQ,eAAgB,wBACxBD,OAAO,oBAAqB,kDAC5BA,OAAO,iBAAkB,6CACzBA,OACC,oBACA,wEAEDA,OACC,+BACA,0EAEDA,OACC,gBACA,4DAEDA,OACC,uBACA,iFAEDA,OACC,sBACA,+GAGDA,OAAO,oBAAqB,+CAC5BA,OAAO,uBAAwB,6CAC/BA,OACC,UACA,kFAEDA,OACC,gBACA,0DAEDA,OAAO,cAAe,wDACtBA,OACC,2BACA,+FAED3M,QACC8M,MAAOC,EAAchD,KACnB6B,EAAuB7B,GACvB,MAAMgP,EAAkC9M,EAAalC,GAErD,IACE,MAAMmD,QAAuBC,EAC3B,CAAET,KAAM3C,EAAQ2C,MAAQ,aAAcE,QAAS,SAC/C7C,EAAQ5J,OACR4M,EACAhD,EAAQuC,UAGV,IAAInM,QAAeiN,IAEnB,GAAIF,EAAgB,CAClB,MAAMU,QAAEA,KAAYC,GAAeX,EAAe/M,OAElDA,EAAS2N,EAAY3N,EAAQ0N,GAG/B,MAAMmL,EAAclL,EAClB3N,EACA,CACE4M,OACAX,KAAMrC,EAAQqC,KACdM,KAAM3C,EAAQ2C,KACdqB,WAAYhE,EAAQ5J,OACpBmM,SAAUvC,EAAQuC,SAClB9L,YAAauJ,EAAQvJ,YACrBwN,aAAc,CAAE7J,MAAO4F,EAAQ5F,OAC/B8U,MAAOF,IAET,GAKF,SAFME,EAAMD,GAERD,EAAaG,UAAW,CAC1B,MAAMC,EAAgBpM,GAAQpM,QAAQ4M,MAEhC6L,EAASJ,EAAYC,OAAOG,QAAU,OAE5C,IAAInY,EAAgB,GAEpB,GAAsC,iBAA3B8X,EAAaG,UACtBjY,EAAgBgB,EAAKC,QAAQiX,EAAeJ,EAAaG,eACpD,CACL,MAAMG,EAAiBpX,EAAKC,QAC1BiX,EACAH,EAAYxH,aAAaoB,gBAAkB,WAG7C,IAAKrP,EAAGC,WAAW6V,GAOjB,YANAzX,EAAamI,EAAQuC,UAAUrJ,KAC7BC,EAAOC,OACL,+DAON,MAAMmW,EAAU/V,EAAGK,YAAYyV,EAAgB,CAC7CxV,eAAe,IAGjB,IAAKyV,EAAQxV,OAKX,YAJAlC,EAAamI,EAAQuC,UAAUrJ,KAC7BC,EAAOC,OAAO,oDAMlB,MAAMoW,EAAeD,EAClBzU,QAAQjF,GACAA,EAAM4Z,UAAY5Z,EAAMoT,KAAKvP,SAAS,UAE9CgW,QAAO,CAACC,EAAQC,IACIpW,EAAGqW,SACpB3X,EAAKC,QAAQmX,EAAgBK,EAAO1G,OACpC6G,QACkBtW,EAAGqW,SACrB3X,EAAKC,QAAQmX,EAAgBM,EAAQ3G,OACrC6G,QAEgCH,EAASC,GAC1CL,EAAQ,IAAItG,KAEjB/R,EAAgBgB,EAAKC,QAAQmX,EAAgBE,GAG/C,MAAMO,EAAuB7X,EAAKC,QAAQiX,EAAeC,GAEzD,IAAIW,EAAuB,WAEvBf,EAAYxH,eAC0B,IAApCwH,EAAYxH,YAAYmB,QAC1BoH,EACGf,EAAYC,OAAOG,QAAqB,OAEA,iBAApCJ,EAAYxH,YAAYmB,SACmB,iBAA3CqG,EAAYxH,YAAYmB,QAAQyG,SAEvCW,EAAuBf,EAAYxH,YAAYmB,QAAQyG,SAI3D,MAAMY,EAAqB,IAAIhZ,EAAmB,CAChDC,gBACAC,cAAe4Y,EACf3Y,gBAAiBc,EAAKC,QAAQiX,EAAeY,WAGzCC,EAAmB5Q,qBAE3B,MAAO0H,GACPlP,EAAamI,EAAQuC,UAAUyE,MAC7B7N,EAAO8N,IAAI,wBAAwBF,EAAEG,SACrC,CAAEF,MAAOD,IAGXnQ,QAAQC,KAAK,GACL,QACRmK,GAAcpF,GAAY/D,EAAamI,EAAQuC,UAAUjM,KAAKsF,SAMtE8E,EACGmC,QACC,0CACA,uDAEDD,OACC,kCACA,sDAEDA,OACC,kCACA,sDAEDA,OACC,8BACA,8DAEDA,OACC,wBACA,iEAED3M,QACC8M,MACEmN,EACAC,EACAnQ,KAEA6B,EAAuB7B,GAEvB,MACE9I,cAAekZ,EAAUF,EACzB/Y,cAAekZ,EAAUF,EAAYG,YACrCA,EAAc,IAAGjU,SACjBA,EAAW,iBAAgBkG,SAC3BA,GACEvC,EAEEgD,EAAOpM,QAAQ4M,MAEhB4M,GAAYC,IACfxY,EAAa0K,GAAUyE,MACrB7N,EAAO8N,IACL,kFAIJrQ,QAAQC,KAAK,IAGf,MAAM0Z,EAAcrY,EAAKC,QAAQ6K,EAAMoN,GACjCI,EAActY,EAAKC,QAAQ6K,EAAMqN,GACjCI,EAAkBvY,EAAKC,QAAQ6K,EAAMsN,GAErCL,EAAqB,IAAIhZ,EAAmB,CAChDC,cAAeqZ,EACfpZ,cAAeqZ,EACfpZ,gBAAiBqZ,EACjBpZ,kBAAmBgF,UAGf4T,EAAmB5Q,mBAAmB,IAIlDqB,EACGmC,QACC,4CACA,qCAEDD,OACC,oBACA,wDAEDA,OACC,8BACA,+EAEDA,OACC,6BACA,gEAED3M,QACC8M,MACE2N,EACAJ,EACAtQ,KAEA6B,EAAuB7B,GAEvB,MACE0Q,OAAQ7Q,EAAY6Q,EACpBJ,YAAaK,EAAUL,EAAWvQ,SAClCA,EAAW,aACTC,EAEEgD,EAAOpM,QAAQ4M,MAEfoN,EAAgB1Y,EAAKC,QAAQ6K,EAAMnD,GACnCgR,EAAc3Y,EAAKC,QAAQ6K,EAAM2N,GAEjCG,EAAoB,IAAIlR,EAAkB,CAC9CC,UAAW+Q,EACX9Q,UAAW+Q,EACX9Q,aAGI1J,EAASwB,EAAamI,EAAQuC,UAEpClM,EAAOC,KACL,0CAA0C6C,EAAOwI,IAAIiP,YAGjDE,EAAkB7Q,WAExB5J,EAAOC,KACL,oCAAoC6C,EAAOwI,IAAIkP,KAChD,IAKPnQ,EACGmC,QAAQ,kBAAmB,2BAC3BD,OACC,UACA,mEAED3M,QACC8M,MAAOC,EAAchD,KACnB6B,EAAuB7B,GACvB,IACE,MAAMmD,QAAuBC,EAC3B,CAAET,KAAM3C,EAAQ2C,MAAQ,aAAcE,QAAS,SAC/C7C,EAAQ5J,OACR4M,EACAhD,EAAQuC,UAGV,IAAInM,QAAeiN,IAEnB,GAAIF,EAAgB,CAClB,MAAMU,QAAEA,KAAYC,GAAeX,EAAe/M,OAElDA,EAAS2N,EAAY3N,EAAQ0N,GAG/B,MAAMiN,QAAuBC,EAC3BjN,EAAY3N,EAAQ,CAClB4M,OACAX,KAAMrC,EAAQqC,KACd2B,WAAYhE,EAAQ5J,OACpBmM,SAAUvC,EAAQuC,SAClBI,KAAM3C,EAAQ2C,OAEhB,eAGIsB,EAAa8M,EAAgB/Q,EAAQ5F,OAAO,GAClD,MAAO2M,GACPlP,EAAamI,EAAQuC,UAAUyE,MAC7B7N,EAAO8N,IAAI,gCAAgCF,EAAEG,SAC7C,CAAEF,MAAOD,IAGXnQ,QAAQC,KAAK,OAKrB6J,EACGmC,QAAQ,iBAAkB,oCAC1BD,OAAO,gBAAiB,6BACxBA,OAAO,gBAAiB,yBACxBA,OAAO,eAAgB,sDACvBA,OAAO,UAAW,8BAClBA,OAAO,gBAAiB,8CACxBA,OAAO,iBAAkB,6CACzB3M,QACC8M,MACEC,EACAhD,KASA6B,EAAuB7B,GAEvB,IACE,MAAMmD,QAAuBC,EAC3B,CAAET,KAAM3C,EAAQ2C,MAAQ,aAAcE,QAAS,SAC/C7C,EAAQ5J,OACR4M,EACAhD,EAAQuC,UAGV,IAAInM,QAAeiN,IAEnB,GAAIF,EAAgB,CAClB,MAAMU,QAAEA,KAAYC,GAAeX,EAAe/M,OAElDA,EAAS2N,EAAY3N,EAAQ0N,UAGVmN,EACnBlN,EAAY3N,EAAQ,CAClB4M,OACAX,KAAMrC,EAAQqC,KACd2B,WAAYhE,EAAQ5J,OACpBmM,SAAUvC,EAAQuC,SAClBI,KAAM3C,EAAQ2C,KACduM,MAAO,CACLG,OAAQrP,EAAQqP,QAElB4B,QAAS,CACP3H,KAAMtJ,EAAQsJ,KACd4H,WAAYlR,EAAQkR,WACpB7H,KAAMrJ,EAAQqJ,KACd8H,MAAOnR,EAAQmR,MACfC,KAAMpR,EAAQoR,UAKb7a,YACP,MAAOwQ,GACPlP,EAAamI,EAAQuC,UAAUyE,MAC7B7N,EAAO8N,IAAI,wCAAwCF,EAAEG,SACrD,CACEF,MAAOD,IAIXnQ,QAAQC,KAAK,GACL,QACRmK,GAAcpF,GAAY/D,EAAamI,EAAQuC,UAAUjM,KAAKsF,SAKtE8E,EAAI2Q,OACJ3Q,EAAI4Q,QAAQxM,GAEZpE,EAAI2J"}
|